Generated by Cython 3.3.0
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: egress.pxi
0001: # Egress (QWP/WebSocket reader) Cython glue.
0002: #
0003: # `QueryResult` exposes the Arrow PyCapsule Interface
0004: # (`__arrow_c_stream__`) directly off the Rust cursor, so polars /
0005: # duckdb / other Arrow-native consumers can read query results
0006: # without pyarrow. `to_pandas` / `iter_pandas` default to a
0007: # pyarrow-free native numpy path; `to_arrow` / `iter_arrow` /
0008: # `to_polars` / `iter_polars` lazy-import pyarrow.
0009:
0010: cimport numpy as cnp
0011:
+0012: import _thread
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_thread, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 12, __pyx_L1_error) __pyx_t_17 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_thread, __pyx_t_17) < (0)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0013: import collections
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_collections, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) __pyx_t_17 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_collections, __pyx_t_17) < (0)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
0014:
0015:
+0016: cdef inline object _reader_err_to_py(questdb_error* err):
static CYTHON_INLINE PyObject *__pyx_f_7questdb_7_client__reader_err_to_py(questdb_error *__pyx_v_err) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._reader_err_to_py", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0017: """Construct a ``QuestDBError`` from a ``questdb_error*`` and free it."""
+0018: return c_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0019:
0020:
+0021: cdef class _ReaderHandle:
struct __pyx_obj_7questdb_7_client__ReaderHandle {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *__pyx_vtab;
struct qwp_reader *_reader;
int _must_close;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle {
PyObject *(*_attach)(struct __pyx_obj_7questdb_7_client__ReaderHandle *, struct qwp_reader *);
void (*_close)(struct __pyx_obj_7questdb_7_client__ReaderHandle *);
};
static struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *__pyx_vtabptr_7questdb_7_client__ReaderHandle;
0022: """Owns a ``qwp_reader*``.
0023:
0024: ``_close()`` runs eagerly when the owning ``_CursorHandle`` is
0025: freed (clean drain, ``QueryResult.close()``, or consumer
0026: teardown); ``__dealloc__`` is the idempotent backstop. On close
0027: the reader either returns to its pool or is dropped,
0028: depending on the ``reader``'s own ownership tag (set when it
0029: was constructed — see ``ReaderOwnership`` in the Rust FFI):
0030:
0031: - Pool-borrowed readers go back to the pool unless
0032: ``_must_close`` was set, in which case the pool drops them.
0033: - Standalone readers (from ``reader_from_conf``) are always
0034: dropped.
0035:
0036: The Python side carries only one extra bit of state —
0037: ``_must_close`` — which it forwards to the FFI via
0038: ``qwp_reader_drop_on_return`` before calling close. We never
0039: hold a raw ``questdb_db*`` pointer here: the reader struct
0040: holds an ``Arc<DbInner>`` internally, so the pool stays alive
0041: even if the user's ``QuestDB.close()`` ran after ``query()``
0042: returned but before the reader closed.
0043:
0044: ``_must_close`` defaults to ``True`` and is cleared only once the
0045: cursor is known to sit at a terminal frame on a live transport:
0046: by the clean-drain paths, and by ``_CursorHandle._free()`` itself
0047: whenever the native cursor reports its connection reusable (a
0048: clean end, a successful cancel, or a server-side error such as a
0049: parse error or a query timeout). An abandoned-mid-stream cursor
0050: never qualifies: the Rust Cursor::Drop closes the transport
0051: whenever ``cursor_active`` is still set at drop time, so recycling
0052: such a reader would hand the next borrower a broken pipe.
0053: """
0054: cdef qwp_reader* _reader
0055: cdef bint _must_close
0056:
+0057: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_13_ReaderHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_13_ReaderHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_13_ReaderHandle___cinit__(((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_13_ReaderHandle___cinit__(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
return __pyx_r;
}
+0058: self._reader = NULL
__pyx_v_self->_reader = NULL;
+0059: self._must_close = True
__pyx_v_self->_must_close = 1;
0060:
+0061: cdef _attach(self, qwp_reader* reader):
static PyObject *__pyx_f_7questdb_7_client_13_ReaderHandle__attach(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_self, struct qwp_reader *__pyx_v_reader) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0062: self._reader = reader
__pyx_v_self->_reader = __pyx_v_reader;
0063:
+0064: cdef void _close(self) noexcept:
static void __pyx_f_7questdb_7_client_13_ReaderHandle__close(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_self) {
PyThreadState *__pyx_v_gs;
/* … */
/* function exit code */
__pyx_L0:;
}
+0065: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
+0066: if self._reader == NULL:
__pyx_t_1 = (__pyx_v_self->_reader == NULL);
if (__pyx_t_1) {
/* … */
}
+0067: return
{
}
goto __pyx_L0;
+0068: if self._must_close:
if (__pyx_v_self->_must_close) {
/* … */
}
+0069: qwp_reader_drop_on_return(self._reader)
qwp_reader_drop_on_return(__pyx_v_self->_reader);
+0070: _ensure_doesnt_have_gil(&gs)
(void)(__pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)));
+0071: qwp_reader_close(self._reader)
qwp_reader_close(__pyx_v_self->_reader);
+0072: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs));
+0073: self._reader = NULL
__pyx_v_self->_reader = NULL;
0074:
+0075: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_13_ReaderHandle_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_13_ReaderHandle_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_13_ReaderHandle_2__dealloc__(((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_13_ReaderHandle_2__dealloc__(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_self) {
/* … */
/* function exit code */
}
+0076: self._close()
((struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self);
0077:
0078:
+0079: @cython.no_gc_clear
struct __pyx_obj_7questdb_7_client__CursorHandle {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *__pyx_vtab;
struct qwp_reader_cursor *_cursor;
struct qwp_reader_batch const *_pending_batch;
struct __pyx_obj_7questdb_7_client__ReaderHandle *_reader_ref;
int _owns_reader;
PyObject *_lock;
int _reset_seq;
int _pinned;
int _free_pending;
int _cancelled;
int _rows_cut_short;
int _exec_done_valid;
uint8_t _exec_done_op_type;
uint64_t _exec_done_rows;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client__CursorHandle {
void (*_attach)(struct __pyx_obj_7questdb_7_client__CursorHandle *, struct qwp_reader_cursor *, struct __pyx_obj_7questdb_7_client__ReaderHandle *, int);
int (*_is_live)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
int (*_reset_sequence)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
int (*_abandonment_needs_warning)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
void (*_mark_drained)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
void (*_pin)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
void (*_unpin)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
int (*_close)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
void (*_free)(struct __pyx_obj_7questdb_7_client__CursorHandle *);
};
static struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *__pyx_vtabptr_7questdb_7_client__CursorHandle;
0080: cdef class _CursorHandle:
0081: """Owns a ``qwp_reader_cursor*`` + back-ref to its reader.
0082:
0083: The re-entrant lock is the publication boundary for every native
0084: cursor field. It serialises cursor operations, close, Arrow consumer
0085: callbacks, and cross-thread GC finalisation, and supplies the
0086: happens-before edge required when those operations move between
0087: threads. Concurrent public operations are still unsupported.
0088:
0089: Being re-entrant, the lock does not protect a decoder from code
0090: running on its *own* thread: a cyclic-GC finaliser (a
0091: ``PooledReader`` reachable only through a cycle, collected while a
0092: per-cell constructor runs) or a signal handler calling ``close()``
0093: re-acquires it freely. The decoders therefore ``_pin()`` the handle
0094: while they hold pointers into the current batch; a ``_free()`` that
0095: arrives while pinned is deferred to ``_unpin()``, and ``cancel()``
0096: refuses, instead of pulling the batch out from under the decoder.
0097: Every locked network call is pinned too, so a close whose lock wait
0098: was interrupted (Ctrl-C while another thread holds the lock) is
0099: finished by that thread once its current call returns.
0100:
0101: ``_pending_batch`` is the row stream's first batch, left undecoded on
0102: the cursor between ``_open_row_stream`` and the iterator's first step.
0103: Every call that invalidates it (free, cancel) clears it under the lock.
0104:
0105: ``_close()`` releases both: the cursor is freed and the reader closed
0106: (returned to its pool or dropped) in the same locked section;
0107: ``_free()`` is its non-raising form. The
0108: drain / close / consumer-teardown paths call it eagerly;
0109: ``__dealloc__`` is the backstop. Before freeing, it asks the native
0110: cursor whether its connection is reusable — at a terminal frame on
0111: a live transport — and clears ``_reader_ref._must_close`` when so.
0112: That covers clean drains, successful cancels and server-side error
0113: terminals alike; a cursor abandoned mid-stream stays unrecyclable.
0114:
0115: ``_owns_reader`` selects who releases the reader. The one-shot
0116: ``QuestDB.query(sql)`` path leaves it ``True``: the cursor is the
0117: reader's sole owner, so ``_free()`` closes the reader eagerly. A
0118: ``PooledReader`` lease sets it ``False``: the lease keeps its
0119: reader across queries, so ``_free()`` releases only the cursor and
0120: drops the back-reference. A lease released while its cursor's free
0121: is deferred hands the reader to that cursor.
0122:
0123: ``_reset_seq`` counts mid-query failover resets. The
0124: ``_failover_reset_trampoline`` installed on the materialise-whole
0125: query path bumps it (a plain C-field write, no GIL, no FFI, no
0126: exception — honouring the reader's reentrancy contract) when the
0127: cursor re-executes the query on a new endpoint. The accumulating
0128: reader (``_numpy_frame_from_cursor`` etc.) compares it against the
0129: sequence it observed at start-of-stream and, when it advanced,
0130: discards every batch buffered so far so the replay-from-batch-0
0131: yields a correct whole result.
0132: """
0133: cdef qwp_reader_cursor* _cursor
0134: cdef const qwp_reader_batch* _pending_batch
0135: cdef _ReaderHandle _reader_ref
0136: cdef bint _owns_reader
0137: cdef object _lock
0138: cdef int _reset_seq
0139: cdef int _pinned
0140: cdef bint _free_pending
0141: cdef bint _cancelled
0142: cdef bint _rows_cut_short
0143: cdef bint _exec_done_valid
0144: cdef uint8_t _exec_done_op_type
0145: cdef uint64_t _exec_done_rows
0146:
+0147: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_13_CursorHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_13_CursorHandle_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_13_CursorHandle___cinit__(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_13_CursorHandle___cinit__(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._CursorHandle.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0148: self._cursor = NULL
__pyx_v_self->_cursor = NULL;
+0149: self._pending_batch = NULL
__pyx_v_self->_pending_batch = NULL;
+0150: self._reader_ref = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader_ref); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader_ref); __pyx_v_self->_reader_ref = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)Py_None);
+0151: self._owns_reader = True
__pyx_v_self->_owns_reader = 1;
+0152: self._lock = threading.RLock()
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_RLock); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->_lock); __Pyx_DECREF(__pyx_v_self->_lock); __pyx_v_self->_lock = __pyx_t_1; __pyx_t_1 = 0;
+0153: self._reset_seq = 0
__pyx_v_self->_reset_seq = 0;
+0154: self._pinned = 0
__pyx_v_self->_pinned = 0;
+0155: self._free_pending = False
__pyx_v_self->_free_pending = 0;
+0156: self._cancelled = False
__pyx_v_self->_cancelled = 0;
+0157: self._rows_cut_short = False
__pyx_v_self->_rows_cut_short = 0;
+0158: self._exec_done_valid = False
__pyx_v_self->_exec_done_valid = 0;
+0159: self._exec_done_op_type = 0
__pyx_v_self->_exec_done_op_type = 0;
+0160: self._exec_done_rows = 0
__pyx_v_self->_exec_done_rows = 0;
0161:
+0162: cdef void _attach(
static void __pyx_f_7questdb_7_client_13_CursorHandle__attach(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self, struct qwp_reader_cursor *__pyx_v_cursor, struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader_ref, int __pyx_v_owns_reader) {
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
}
0163: self,
0164: qwp_reader_cursor* cursor,
0165: _ReaderHandle reader_ref,
0166: bint owns_reader) noexcept:
0167: # The handle is new and has not been published yet, so adopting the
0168: # cursor needs no lock and must not introduce a failure point.
+0169: self._cursor = cursor
__pyx_v_self->_cursor = __pyx_v_cursor;
+0170: self._reader_ref = reader_ref
__Pyx_INCREF((PyObject *)__pyx_v_reader_ref); __Pyx_GIVEREF((PyObject *)__pyx_v_reader_ref); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader_ref); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader_ref); __pyx_v_self->_reader_ref = __pyx_v_reader_ref;
+0171: self._owns_reader = owns_reader
__pyx_v_self->_owns_reader = __pyx_v_owns_reader;
0172:
+0173: cdef bint _is_live(self):
static int __pyx_f_7questdb_7_client_13_CursorHandle__is_live(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._CursorHandle._is_live", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0174: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 174, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 174, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L11_try_return:;
goto __pyx_L4_return;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_9 = __pyx_r;
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L13;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L13:;
}
/* … */
{
PyObject* __pyx_temp[3] = {Py_None, Py_None, Py_None};
__pyx_mstate_global->__pyx_tuple[6] = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(1, 174, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]);
+0175: return self._cursor != NULL
{
__pyx_r = (__pyx_v_self->_cursor != NULL);
}
goto __pyx_L11_try_return;
0176:
+0177: cdef int _reset_sequence(self):
static int __pyx_f_7questdb_7_client_13_CursorHandle__reset_sequence(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._CursorHandle._reset_sequence", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0178: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 178, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 178, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L11_try_return:;
goto __pyx_L4_return;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_9 = __pyx_r;
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 178, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L13;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L13:;
}
+0179: return self._reset_seq
{
__pyx_r = __pyx_v_self->_reset_seq;
}
goto __pyx_L11_try_return;
0180:
+0181: cdef bint _abandonment_needs_warning(self):
static int __pyx_f_7questdb_7_client_13_CursorHandle__abandonment_needs_warning(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._CursorHandle._abandonment_needs_warning", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0182: with self._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 182, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 182, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L11_try_return:;
goto __pyx_L4_return;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L4_return: {
__pyx_t_9 = __pyx_r;
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 182, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
goto __pyx_L0;
}
__pyx_L6:;
}
goto __pyx_L16;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L16:;
}
0183: return (
+0184: self._cursor != NULL
__pyx_t_10 = (__pyx_v_self->_cursor != NULL);
if (__pyx_t_10) {
} else {
__pyx_t_9 = __pyx_t_10;
goto __pyx_L13_bool_binop_done;
}
0185: and (
+0186: self._reader_ref is None
__pyx_t_10 = (((PyObject *)__pyx_v_self->_reader_ref) == Py_None);
if (!__pyx_t_10) {
} else {
__pyx_t_9 = __pyx_t_10;
goto __pyx_L13_bool_binop_done;
}
+0187: or self._reader_ref._must_close))
__pyx_t_9 = __pyx_v_self->_reader_ref->_must_close;
__pyx_L13_bool_binop_done:;
{
__pyx_r = __pyx_t_9;
}
goto __pyx_L11_try_return;
0188:
+0189: cdef void _mark_drained(self) noexcept:
static void __pyx_f_7questdb_7_client_13_CursorHandle__mark_drained(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
uint8_t __pyx_v_op_type;
uint64_t __pyx_v_rows_affected;
/* … */
/* function exit code */
}
0190: # Only valid once the cursor sits at its terminal frame: the Rust
0191: # `Cursor::Drop` tears the transport down whenever `cursor_active`
0192: # is still set, so recycling earlier would hand the next borrower a
0193: # broken pipe. The EXEC_DONE report is latched here because every
0194: # drain path frees the cursor immediately afterwards.
+0195: cdef uint8_t op_type = 0
__pyx_v_op_type = 0;
+0196: cdef uint64_t rows_affected = 0
__pyx_v_rows_affected = 0;
+0197: if self._reader_ref is not None:
__pyx_t_1 = (((PyObject *)__pyx_v_self->_reader_ref) != Py_None);
if (__pyx_t_1) {
/* … */
}
+0198: self._reader_ref._must_close = False
__pyx_v_self->_reader_ref->_must_close = 0;
+0199: if self._cursor != NULL and not self._exec_done_valid:
__pyx_t_2 = (__pyx_v_self->_cursor != NULL);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_2 = (!__pyx_v_self->_exec_done_valid);
__pyx_t_1 = __pyx_t_2;
__pyx_L5_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+0200: if qwp_reader_cursor_terminal_exec_done(
__pyx_t_1 = qwp_reader_cursor_terminal_exec_done(__pyx_v_self->_cursor, (&__pyx_v_op_type), (&__pyx_v_rows_affected));
if (__pyx_t_1) {
/* … */
}
0201: self._cursor, &op_type, &rows_affected):
+0202: self._exec_done_op_type = op_type
__pyx_v_self->_exec_done_op_type = __pyx_v_op_type;
+0203: self._exec_done_rows = (
__pyx_v_self->_exec_done_rows = __pyx_t_3;
+0204: 0 if rows_affected == QWP_READER_ROWS_AFFECTED_UNKNOWN
__pyx_t_1 = (__pyx_v_rows_affected == QWP_READER_ROWS_AFFECTED_UNKNOWN);
if (__pyx_t_1) {
__pyx_t_3 = 0;
} else {
+0205: else rows_affected)
__pyx_t_3 = __pyx_v_rows_affected;
}
+0206: self._exec_done_valid = True
__pyx_v_self->_exec_done_valid = 1;
0207:
+0208: cdef void _pin(self) noexcept:
static void __pyx_f_7questdb_7_client_13_CursorHandle__pin(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
/* … */
/* function exit code */
}
0209: # Called under `_lock` around a native call or a batch decode; until
0210: # the matching `_unpin`, a free is deferred (see the class
0211: # docstring).
+0212: self._pinned += 1
__pyx_v_self->_pinned = (__pyx_v_self->_pinned + 1);
0213:
+0214: cdef void _unpin(self) noexcept:
static void __pyx_f_7questdb_7_client_13_CursorHandle__unpin(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
/* … */
/* function exit code */
}
+0215: self._pinned -= 1
__pyx_v_self->_pinned = (__pyx_v_self->_pinned - 1);
+0216: if self._pinned == 0 and self._free_pending:
__pyx_t_2 = (__pyx_v_self->_pinned == 0);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_1 = __pyx_v_self->_free_pending;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+0217: self._free_pending = False
__pyx_v_self->_free_pending = 0;
+0218: self._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->__pyx_vtab)->_free(__pyx_v_self);
0219:
+0220: cdef int _close(self) except -1:
static int __pyx_f_7questdb_7_client_13_CursorHandle__close(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
PyThreadState *__pyx_v_gs;
struct qwp_reader_cursor *__pyx_v_cursor;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._CursorHandle._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0221: # An interrupted acquire (Ctrl-C while another thread holds the lock
0222: # in a network read) leaves the free to that thread's next `_unpin`.
+0223: cdef PyThreadState* gs = NULL
__pyx_v_gs = NULL;
0224: cdef qwp_reader_cursor* cursor
+0225: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+0226: self._lock.acquire()
__pyx_t_5 = __pyx_v_self->_lock;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_acquire, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 226, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0227: except BaseException:
__pyx_t_7 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_7) { __Pyx_AddTraceback("questdb._client._CursorHandle._close", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_8) < 0) __PYX_ERR(1, 227, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_8);
+0228: self._free_pending = True
__pyx_v_self->_free_pending = 1;
+0229: raise
__Pyx_GIVEREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_5, __pyx_t_8); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_8 = 0; __PYX_ERR(1, 229, __pyx_L5_except_error) } goto __pyx_L5_except_error;
+0230: try:
/*try:*/ {
+0231: if self._pinned > 0:
__pyx_t_9 = (__pyx_v_self->_pinned > 0);
if (__pyx_t_9) {
/* … */
goto __pyx_L14;
}
0232: # Same-thread re-entry mid-decode; `_unpin` finishes it.
+0233: self._free_pending = True
__pyx_v_self->_free_pending = 1;
0234: else:
+0235: cursor = self._cursor
/*else*/ {
__pyx_t_10 = __pyx_v_self->_cursor;
__pyx_v_cursor = __pyx_t_10;
+0236: if cursor != NULL:
__pyx_t_9 = (__pyx_v_cursor != NULL);
if (__pyx_t_9) {
/* … */
}
+0237: if qwp_reader_cursor_connection_reusable(cursor):
__pyx_t_9 = qwp_reader_cursor_connection_reusable(__pyx_v_cursor);
if (__pyx_t_9) {
/* … */
}
+0238: self._mark_drained()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->__pyx_vtab)->_mark_drained(__pyx_v_self);
+0239: self._cursor = NULL
__pyx_v_self->_cursor = NULL;
+0240: self._pending_batch = NULL
__pyx_v_self->_pending_batch = NULL;
+0241: _ensure_doesnt_have_gil(&gs)
(void)(__pyx_f_7questdb_7_client__ensure_doesnt_have_gil((&__pyx_v_gs)));
+0242: qwp_reader_cursor_free(cursor)
qwp_reader_cursor_free(__pyx_v_cursor);
+0243: _ensure_has_gil(&gs)
__pyx_f_7questdb_7_client__ensure_has_gil((&__pyx_v_gs));
+0244: if self._reader_ref is not None:
__pyx_t_9 = (((PyObject *)__pyx_v_self->_reader_ref) != Py_None);
if (__pyx_t_9) {
/* … */
}
}
__pyx_L14:;
}
+0245: if self._owns_reader:
if (__pyx_v_self->_owns_reader) {
/* … */
}
+0246: self._reader_ref._close()
((struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *)__pyx_v_self->_reader_ref->__pyx_vtab)->_close(__pyx_v_self->_reader_ref);
+0247: self._reader_ref = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->_reader_ref); __Pyx_DECREF((PyObject *)__pyx_v_self->_reader_ref); __pyx_v_self->_reader_ref = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)Py_None);
0248: finally:
+0249: self._lock.release()
/*finally:*/ {
/*normal exit:*/{
__pyx_t_5 = __pyx_v_self->_lock;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_release, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L13;
}
__pyx_L13:;
}
+0250: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
0251:
+0252: cdef void _free(self) noexcept:
static void __pyx_f_7questdb_7_client_13_CursorHandle__free(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
PyObject *__pyx_v_exc_type;
PyObject *__pyx_v_exc_value;
PyObject *__pyx_v_exc_tb;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_WriteUnraisable("questdb._client._CursorHandle._free", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+0253: cdef PyObject* exc_type = NULL
__pyx_v_exc_type = NULL;
+0254: cdef PyObject* exc_value = NULL
__pyx_v_exc_value = NULL;
+0255: cdef PyObject* exc_tb = NULL
__pyx_v_exc_tb = NULL;
0256: # Capsule teardown can run with an exception pending; clear it
0257: # while acquiring the lock, then restore the caller's exception.
+0258: PyErr_Fetch(&exc_type, &exc_value, &exc_tb)
PyErr_Fetch((&__pyx_v_exc_type), (&__pyx_v_exc_value), (&__pyx_v_exc_tb));
+0259: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+0260: self._close()
__pyx_t_4 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->__pyx_vtab)->_close(__pyx_v_self); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 260, __pyx_L3_error)
+0261: except KeyboardInterrupt:
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_KeyboardInterrupt)))); if (__pyx_t_4) { __Pyx_AddTraceback("questdb._client._CursorHandle._free", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 261, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7);
+0262: if exc_type == NULL:
__pyx_t_8 = (__pyx_v_exc_type == NULL);
if (__pyx_t_8) {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L4_exception_handled;
}
+0263: _rearm_interrupt()
__pyx_f_7questdb_7_client__rearm_interrupt();
+0264: except BaseException:
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_4) { __Pyx_AddTraceback("questdb._client._CursorHandle._free", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 264, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_5);
+0265: if exc_type == NULL:
__pyx_t_8 = (__pyx_v_exc_type == NULL);
if (unlikely(__pyx_t_8)) {
/* … */
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L4_exception_handled;
}
goto __pyx_L5_except_error;
+0266: raise
__Pyx_GIVEREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __PYX_ERR(1, 266, __pyx_L5_except_error)
+0267: PyErr_Restore(exc_type, exc_value, exc_tb)
PyErr_Restore(__pyx_v_exc_type, __pyx_v_exc_value, __pyx_v_exc_tb);
0268:
+0269: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_13_CursorHandle_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_13_CursorHandle_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_13_CursorHandle_2__dealloc__(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_13_CursorHandle_2__dealloc__(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_self) {
/* … */
/* function exit code */
}
+0270: self._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->__pyx_vtab)->_free(__pyx_v_self);
0271:
0272:
+0273: cdef void _rearm_interrupt() noexcept:
static void __pyx_f_7questdb_7_client__rearm_interrupt(void) {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_WriteUnraisable("questdb._client._rearm_interrupt", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
+0274: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+0275: _thread.interrupt_main()
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_thread); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 275, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_interrupt_main); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 275, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 275, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0276: except BaseException:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0); goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error;
0277: pass
0278:
0279:
+0280: cdef object _fetch_one_batch(
static PyObject *__pyx_f_7questdb_7_client__fetch_one_batch(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle, PyObject *__pyx_v_pa_module, struct __pyx_opt_args_7questdb_7_client__fetch_one_batch *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._fetch_one_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client__fetch_one_batch {
int __pyx_n;
int compact;
};
+0281: _CursorHandle handle, object pa_module, bint compact=False):
int __pyx_v_compact = ((int)0);
struct ArrowArray __pyx_v_array;
struct ArrowSchema __pyx_v_schema;
questdb_error *__pyx_v_err;
enum qwp_reader_arrow_batch_result __pyx_v_result;
struct qwp_reader_cursor *__pyx_v_cursor;
PyObject *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_compact = __pyx_optional_args->compact;
}
}
0282: """Pull one batch via qwp_reader_cursor_next_arrow_batch.
0283:
0284: Returns:
0285: - None on clean end-of-stream.
0286: - A pyarrow.RecordBatch on success.
0287: Raises QuestDBError on FFI error.
0288: """
0289: cdef ArrowArray array
0290: cdef ArrowSchema schema
+0291: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
0292: cdef qwp_reader_arrow_batch_result result
0293: cdef qwp_reader_cursor* cursor
0294:
+0295: with handle._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 295, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 295, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._fetch_one_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_12) < 0) __PYX_ERR(1, 295, __pyx_L9_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_12);
{
PyObject* __pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_12};
__pyx_t_4 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 295, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 295, __pyx_L9_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(1, 295, __pyx_L9_except_error)
__pyx_t_14 = (!__pyx_t_10);
if (unlikely(__pyx_t_14)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_12);
__pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_12 = 0;
__PYX_ERR(1, 295, __pyx_L9_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L8_exception_handled;
}
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L12_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L6;
}
__pyx_L6:;
}
goto __pyx_L24;
__pyx_L3_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L24:;
}
+0296: cursor = handle._cursor
__pyx_t_9 = __pyx_v_handle->_cursor;
__pyx_v_cursor = __pyx_t_9;
+0297: if cursor == NULL:
__pyx_t_10 = (__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_10)) {
/* … */
}
+0298: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 298, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_3);
+0299: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 299, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 299, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_12, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 298, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 298, __pyx_L7_error)
0300: 'cursor is closed')
+0301: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_pin(__pyx_v_handle);
+0302: try:
/*try:*/ {
+0303: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L19;
}
__pyx_L19:;
}
}
}
+0304: if compact:
if (__pyx_v_compact) {
/* … */
goto __pyx_L20;
}
+0305: result = qwp_reader_cursor_next_arrow_batch_compact(
__pyx_v_result = qwp_reader_cursor_next_arrow_batch_compact(__pyx_v_cursor, (&__pyx_v_array), (&__pyx_v_schema), (&__pyx_v_err));
0306: cursor, &array, &schema, &err)
0307: else:
+0308: result = qwp_reader_cursor_next_arrow_batch(
/*else*/ {
/* … */
__pyx_v_result = qwp_reader_cursor_next_arrow_batch(__pyx_v_cursor, (&__pyx_v_array), (&__pyx_v_schema), (&__pyx_v_err));
}
__pyx_L20:;
}
0309: cursor, &array, &schema, &err)
0310: finally:
+0311: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L16;
}
__pyx_L16:;
}
0312:
+0313: if result == qwp_reader_arrow_batch_ok:
__pyx_t_14 = (__pyx_v_result == qwp_reader_arrow_batch_ok);
if (__pyx_t_14) {
/* … */
}
0314: # Hand ownership of the array + schema buffers to pyarrow.
0315: # _import_from_c moves the structs and nulls their release
0316: # callbacks; pyarrow's RecordBatch owns the buffers from here.
+0317: try:
{
/*try:*/ {
/* … */
}
__pyx_L26_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L28_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_8, __pyx_t_7);
goto __pyx_L1_error;
__pyx_L30_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_8, __pyx_t_7);
goto __pyx_L0;
}
+0318: return pa_module.RecordBatch._import_from_c(
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa_module, __pyx_mstate_global->__pyx_n_u_RecordBatch); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 318, __pyx_L26_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3);
+0319: <uintptr_t>&array, <uintptr_t>&schema)
__pyx_t_4 = __Pyx_PyLong_FromSize_t(((uintptr_t)(&__pyx_v_array))); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 319, __pyx_L26_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyLong_FromSize_t(((uintptr_t)(&__pyx_v_schema))); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 319, __pyx_L26_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_11}; __pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_import_from_c, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 318, __pyx_L26_error) __Pyx_GOTREF(__pyx_t_12); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_12; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_12 = 0; goto __pyx_L30_try_return;
+0320: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._fetch_one_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_2, &__pyx_t_11) < 0) __PYX_ERR(1, 320, __pyx_L28_except_error)
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_11);
+0321: if array.release != NULL:
__pyx_t_14 = (__pyx_v_array.release != NULL);
if (__pyx_t_14) {
/* … */
}
+0322: array.release(&array)
__pyx_v_array.release((&__pyx_v_array));
+0323: if schema.release != NULL:
__pyx_t_14 = (__pyx_v_schema.release != NULL);
if (__pyx_t_14) {
/* … */
}
+0324: schema.release(&schema)
__pyx_v_schema.release((&__pyx_v_schema));
+0325: raise
__Pyx_GIVEREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_12, __pyx_t_2, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_2 = 0; __pyx_t_11 = 0; __PYX_ERR(1, 325, __pyx_L28_except_error) }
0326:
+0327: if result == qwp_reader_arrow_batch_end:
__pyx_t_14 = (__pyx_v_result == qwp_reader_arrow_batch_end);
if (__pyx_t_14) {
/* … */
}
+0328: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
0329:
0330: # Error path.
+0331: if err == NULL:
__pyx_t_14 = (__pyx_v_err == NULL);
if (unlikely(__pyx_t_14)) {
/* … */
}
+0332: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 332, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
+0333: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_12); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_12, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_3, __pyx_mstate_global->__pyx_kp_u_qwp_reader_cursor_next_arrow_bat}; __pyx_t_11 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(1, 332, __pyx_L1_error)
0334: 'qwp_reader_cursor_next_arrow_batch returned error '
0335: 'without setting err_out')
+0336: raise _reader_err_to_py(err)
__pyx_t_11 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(1, 336, __pyx_L1_error)
0337:
0338:
+0339: cdef tuple _fetch_all_record_batches(
static PyObject *__pyx_f_7questdb_7_client__fetch_all_record_batches(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle, PyObject *__pyx_v_pa_module, struct __pyx_opt_args_7questdb_7_client__fetch_all_record_batches *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._fetch_all_record_batches", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_schema);
__Pyx_XDECREF(__pyx_v_batches);
__Pyx_XDECREF(__pyx_v_batch);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_26_build_record_batch_reader_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
struct __pyx_opt_args_7questdb_7_client__fetch_all_record_batches {
int __pyx_n;
int compact;
};
+0340: _CursorHandle handle, object pa_module, bint compact=False):
int __pyx_v_compact = ((int)0);
int __pyx_v_seen_seq;
int __pyx_v_current_seq;
PyObject *__pyx_v_schema = 0;
PyObject *__pyx_v_batches = 0;
PyObject *__pyx_v_batch = 0;
PyObject *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_compact = __pyx_optional_args->compact;
}
}
0341: """Drain the cursor into a list of ``pyarrow.RecordBatch`` we own.
0342:
0343: The materialise-whole entry points install the failover-reset
0344: trampoline, which bumps ``handle._reset_seq`` when a mid-query
0345: failover re-executes the query on a new endpoint. Because we own the
0346: accumulator here, on a reset we discard every batch buffered so far
0347: and restart from the replayed batch-0 — yielding a correct,
0348: duplicate-free whole result. Returns ``(schema_or_None, batches)``;
0349: the cursor is freed and the reader marked drained on clean
0350: end-of-stream.
0351: """
+0352: cdef int seen_seq = handle._reset_sequence()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 352, __pyx_L1_error)
__pyx_v_seen_seq = __pyx_t_1;
0353: cdef int current_seq
+0354: cdef object schema = None
__Pyx_INCREF(Py_None);
__pyx_v_schema = Py_None;
+0355: cdef list batches = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_batches = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
0356: cdef object batch
+0357: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+0358: while True:
while (1) {
+0359: batch = _fetch_one_batch(handle, pa_module, compact)
__pyx_t_6.__pyx_n = 1;
__pyx_t_6.compact = __pyx_v_compact;
__pyx_t_2 = __pyx_f_7questdb_7_client__fetch_one_batch(__pyx_v_handle, __pyx_v_pa_module, &__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 359, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_batch, __pyx_t_2);
__pyx_t_2 = 0;
+0360: current_seq = handle._reset_sequence()
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 360, __pyx_L3_error)
__pyx_v_current_seq = __pyx_t_1;
+0361: if current_seq != seen_seq:
__pyx_t_7 = (__pyx_v_current_seq != __pyx_v_seen_seq);
if (__pyx_t_7) {
/* … */
}
0362: # Mid-query failover replayed from batch-0: drop the
0363: # pre-failover accumulation and re-pin the schema.
+0364: seen_seq = current_seq
__pyx_v_seen_seq = __pyx_v_current_seq;
+0365: batches = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 365, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_batches, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0;
+0366: schema = None
__Pyx_INCREF(Py_None); __Pyx_DECREF_SET(__pyx_v_schema, Py_None);
+0367: if batch is None:
__pyx_t_7 = (__pyx_v_batch == Py_None);
if (__pyx_t_7) {
/* … */
}
+0368: break
goto __pyx_L10_break;
+0369: if schema is None:
__pyx_t_7 = (__pyx_v_schema == Py_None);
if (__pyx_t_7) {
/* … */
}
+0370: schema = batch.schema
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_batch, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 370, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_schema, __pyx_t_2); __pyx_t_2 = 0;
+0371: batches.append(batch)
__pyx_t_8 = __Pyx_PyList_Append(__pyx_v_batches, __pyx_v_batch); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 371, __pyx_L3_error) } __pyx_L10_break:;
+0372: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._fetch_all_record_batches", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(1, 372, __pyx_L5_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
+0373: handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
+0374: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_9, __pyx_t_10); __pyx_t_2 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __PYX_ERR(1, 374, __pyx_L5_except_error) }
+0375: try:
/*try:*/ {
+0376: _mark_reader_drained(handle)
__pyx_t_11 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_v_handle); if (unlikely(__pyx_t_11 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 376, __pyx_L17_error)
}
0377: finally:
+0378: handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
goto __pyx_L18;
}
__pyx_L17_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__pyx_t_1 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ErrRestore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
__pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0;
__pyx_lineno = __pyx_t_1; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
goto __pyx_L1_error;
}
__pyx_L18:;
}
+0379: return (schema, batches)
__pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_schema); __Pyx_GIVEREF(__pyx_v_schema); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_schema) != (0)) __PYX_ERR(1, 379, __pyx_L1_error); __Pyx_INCREF(__pyx_v_batches); __Pyx_GIVEREF(__pyx_v_batches); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_batches) != (0)) __PYX_ERR(1, 379, __pyx_L1_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_10); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_10 = 0; goto __pyx_L0;
0380:
0381:
+0382: cdef object _build_record_batch_reader(
static PyObject *__pyx_f_7questdb_7_client__build_record_batch_reader(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle, struct __pyx_opt_args_7questdb_7_client__build_record_batch_reader *__pyx_optional_args) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader *__pyx_cur_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("questdb._client._build_record_batch_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_empty);
__Pyx_XDECREF(__pyx_v_schema);
__Pyx_XDECREF(__pyx_v__gen);
__Pyx_XDECREF(__pyx_gb_7questdb_7_client_26_build_record_batch_reader_2generator3);
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client__build_record_batch_reader {
int __pyx_n;
int compact;
};
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle;
PyObject *__pyx_v_first;
PyObject *__pyx_v_pa;
int __pyx_v_seen_seq;
};
+0383: _CursorHandle cursor_handle, bint compact=False):
int __pyx_v_compact = ((int)0);
PyObject *__pyx_v_empty = NULL;
PyObject *__pyx_v_schema = NULL;
PyObject *__pyx_v__gen = 0;
PyObject *__pyx_gb_7questdb_7_client_26_build_record_batch_reader_2generator3 = 0;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 382, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_compact = __pyx_optional_args->compact;
}
}
__pyx_cur_scope->__pyx_v_cursor_handle = __pyx_v_cursor_handle;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_cursor_handle);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_cursor_handle);
0384: """Construct a pyarrow.RecordBatchReader over the cursor.
0385:
0386: Peeks the first batch to capture the stream schema, then yields
0387: the remaining batches lazily. The cursor is explicitly freed when
0388: the underlying generator completes (exhaustion, exception, or
0389: close), so the owning reader can be closed without leaking a live
0390: cursor.
0391: """
+0392: import pyarrow as pa
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 392, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_pa = __pyx_t_1; __pyx_t_1 = 0;
0393:
+0394: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+0395: first = _fetch_one_batch(cursor_handle, pa, compact)
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_cursor_handle);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_5 = __pyx_cur_scope->__pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_7.__pyx_n = 1;
__pyx_t_7.compact = __pyx_v_compact;
__pyx_t_6 = __pyx_f_7questdb_7_client__fetch_one_batch(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1), __pyx_t_5, &__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 395, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GIVEREF(__pyx_t_6);
__pyx_cur_scope->__pyx_v_first = __pyx_t_6;
__pyx_t_6 = 0;
+0396: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._build_record_batch_reader", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_1) < 0) __PYX_ERR(1, 396, __pyx_L5_except_error)
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_1);
+0397: cursor_handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_cursor_handle);
+0398: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_1); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_5, __pyx_t_1); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_1 = 0; __PYX_ERR(1, 398, __pyx_L5_except_error) }
+0399: if first is None:
__pyx_t_8 = (__pyx_cur_scope->__pyx_v_first == Py_None);
if (__pyx_t_8) {
/* … */
}
0400: # No result set (a non-SELECT statement ends with EXEC_DONE and
0401: # ships no RESULT_BATCH), so there is no schema to surface; an
0402: # empty SELECT still ships a zero-row batch carrying the schema.
+0403: try:
/*try:*/ {
+0404: _mark_reader_drained(cursor_handle)
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_cursor_handle);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_9 = __pyx_f_7questdb_7_client__mark_reader_drained(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1)); if (unlikely(__pyx_t_9 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 404, __pyx_L13_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
0405: finally:
+0406: cursor_handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_cursor_handle);
goto __pyx_L14;
}
__pyx_L13_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_cursor_handle);
}
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
__pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L1_error;
}
__pyx_L14:;
}
+0407: empty = pa.table({})
__pyx_t_5 = __pyx_cur_scope->__pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_16 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_table, __pyx_callargs+__pyx_t_16, (2-__pyx_t_16) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_v_empty = __pyx_t_1;
__pyx_t_1 = 0;
+0408: return empty.to_reader()
__pyx_t_6 = __pyx_v_empty;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_16 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_to_reader, __pyx_callargs+__pyx_t_16, (1-__pyx_t_16) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_1;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_1 = 0;
goto __pyx_L0;
0409:
0410: # Pin the sequence after the first batch: a pre-delivery failover
0411: # replays batch-0 transparently into ``first``, so only resets that
0412: # happen once batches are flowing can duplicate already-yielded data.
+0413: cdef int seen_seq = cursor_handle._reset_sequence()
__pyx_t_11 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_cursor_handle->__pyx_vtab)->_reset_sequence(__pyx_cur_scope->__pyx_v_cursor_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 413, __pyx_L1_error)
__pyx_cur_scope->__pyx_v_seen_seq = __pyx_t_11;
+0414: schema = first.schema
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_first, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_schema = __pyx_t_1; __pyx_t_1 = 0;
0415:
+0416: def _gen(compact):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_26_build_record_batch_reader_1_gen(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_26_build_record_batch_reader_1_gen = {"_gen", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_26_build_record_batch_reader_1_gen, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_26_build_record_batch_reader_1_gen(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_compact = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_gen (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_compact,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 416, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 416, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_gen", 0) < (0)) __PYX_ERR(1, 416, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_gen", 1, 1, 1, i); __PYX_ERR(1, 416, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 416, __pyx_L3_error)
}
__pyx_v_compact = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_gen", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 416, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._build_record_batch_reader._gen", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_26_build_record_batch_reader__gen(__pyx_self, __pyx_v_compact);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_26_build_record_batch_reader__gen(PyObject *__pyx_self, PyObject *__pyx_v_compact) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_1__gen *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_1__gen *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_1__gen(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_1__gen, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_1__gen *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 416, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader *) __Pyx_CyFunction_GetClosure(__pyx_self);
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__pyx_cur_scope->__pyx_v_compact = __pyx_v_compact;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_compact);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_compact);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_26_build_record_batch_reader_2generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_gen, __pyx_mstate_global->__pyx_n_u_build_record_batch_reader_local, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 416, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._build_record_batch_reader._gen", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_26_build_record_batch_reader_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_gen", 0);
__pyx_L3_first_run:;
if (unlikely(__pyx_sent_value != Py_None)) {
if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
__PYX_ERR(1, 416, __pyx_L1_error)
}
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("_gen", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_26_build_record_batch_reader_1_gen, 0, __pyx_mstate_global->__pyx_n_u_build_record_batch_reader_local, ((PyObject*)__pyx_cur_scope), __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 416, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v__gen = __pyx_t_1;
__pyx_t_1 = 0;
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_1__gen {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client___pyx_scope_struct____pyx_f_7questdb_7_client__build_record_batch_reader *__pyx_outer_scope;
PyObject *__pyx_v_compact;
PyObject *__pyx_v_nxt;
};
+0417: try:
/*try:*/ {
+0418: yield first
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_first)) { __Pyx_RaiseClosureNameError("first"); __PYX_ERR(1, 418, __pyx_L5_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_first);
__pyx_r = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_first;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
/* return from generator, yielding value */
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L7_resume_from_yield:;
if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 418, __pyx_L5_error)
+0419: while True:
while (1) {
+0420: nxt = _fetch_one_batch(cursor_handle, pa, compact)
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 420, __pyx_L5_error) }
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle);
__Pyx_INCREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa)) { __Pyx_RaiseClosureNameError("pa"); __PYX_ERR(1, 420, __pyx_L5_error) }
__pyx_t_2 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_compact); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 420, __pyx_L5_error)
__pyx_t_5.__pyx_n = 1;
__pyx_t_5.compact = __pyx_t_3;
__pyx_t_4 = __pyx_f_7questdb_7_client__fetch_one_batch(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1), __pyx_t_2, &__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 420, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_nxt);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_nxt, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
+0421: if cursor_handle._reset_sequence() != seen_seq:
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 421, __pyx_L5_error) }
__pyx_t_6 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle->__pyx_vtab)->_reset_sequence(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 421, __pyx_L5_error)
__pyx_t_3 = (__pyx_t_6 != __pyx_cur_scope->__pyx_outer_scope->__pyx_v_seen_seq);
if (unlikely(__pyx_t_3)) {
/* … */
}
0422: # Mid-query failover after batches were already
0423: # yielded: the replayed batch-0 would duplicate what
0424: # the consumer holds. Streaming can't discard it, so
0425: # surface a clean, catchable error.
+0426: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 426, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
+0427: QuestDBErrorCode.FailoverWouldDuplicate,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 427, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 427, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_9 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_mid_query_failover_would_duplica}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 426, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 426, __pyx_L5_error)
0428: 'mid-query failover would duplicate already-'
0429: 'delivered batches; re-issue the query')
+0430: if nxt is None:
__pyx_t_3 = (__pyx_cur_scope->__pyx_v_nxt == Py_None);
if (__pyx_t_3) {
/* … */
}
0431: # Reached terminal cleanly; reader is reusable.
+0432: _mark_reader_drained(cursor_handle)
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 432, __pyx_L5_error) }
__pyx_t_4 = ((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle);
__Pyx_INCREF(__pyx_t_4);
__pyx_t_10 = __pyx_f_7questdb_7_client__mark_reader_drained(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_4)); if (unlikely(__pyx_t_10 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 432, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0433: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L4_return;
+0434: yield nxt
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_nxt); __pyx_r = __pyx_cur_scope->__pyx_v_nxt; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L12_resume_from_yield:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 434, __pyx_L5_error) } }
0435: finally:
+0436: cursor_handle._free()
/*finally:*/ {
/*normal exit:*/{
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 436, __pyx_L1_error) }
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_assign
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_16);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_18);
__pyx_t_6 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
{
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 436, __pyx_L14_error) }
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle);
}
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
__pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
__pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
goto __pyx_L1_error;
__pyx_L14_error:;
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_18);
__Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
goto __pyx_L1_error;
}
__pyx_L4_return: {
__pyx_t_18 = __pyx_r;
__pyx_r = 0;
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle)) { __Pyx_RaiseClosureNameError("cursor_handle"); __PYX_ERR(1, 436, __pyx_L1_error) }
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_cursor_handle);
__pyx_r = __pyx_t_18;
__pyx_t_18 = 0;
goto __pyx_L0;
}
__pyx_L6:;
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
0437:
+0438: return pa.RecordBatchReader.from_batches(schema, _gen(compact))
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_RecordBatchReader); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_17 = __Pyx_PyBool_FromLong(__pyx_v_compact); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __pyx_pf_7questdb_7_client_26_build_record_batch_reader__gen(__pyx_v__gen, __pyx_t_17); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __pyx_t_16 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_schema, __pyx_t_18}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
0439:
0440:
+0441: cdef void_int _mark_reader_drained(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__mark_reader_drained(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._mark_reader_drained", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0442: _CursorHandle cursor_handle) except -1:
0443: """Recycle the reader: call only once the cursor reached its terminal."""
+0444: if cursor_handle is None:
__pyx_t_1 = (((PyObject *)__pyx_v_cursor_handle) == Py_None);
if (__pyx_t_1) {
/* … */
}
+0445: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+0446: with cursor_handle._lock:
/*with:*/ {
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_cursor_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 446, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_cursor_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 446, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 446, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 446, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L7;
}
__pyx_L7:;
}
goto __pyx_L14;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L1_error;
__pyx_L14:;
}
+0447: cursor_handle._mark_drained()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_cursor_handle->__pyx_vtab)->_mark_drained(__pyx_v_cursor_handle);
+0448: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
0449:
0450:
+0451: cdef void_int _drain_cursor(_CursorHandle handle) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__drain_cursor(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle) {
struct qwp_reader_cursor *__pyx_v_cursor;
questdb_error *__pyx_v_err;
struct qwp_reader_batch const *__pyx_v_batch;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._drain_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0452: cdef qwp_reader_cursor* cursor
+0453: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
0454: cdef const qwp_reader_batch* batch
+0455: while True:
while (1) {
+0456: with handle._lock:
/*with:*/ {
__pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = NULL;
__pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 456, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 456, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L18_try_end;
__pyx_L11_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._drain_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_12) < 0) __PYX_ERR(1, 456, __pyx_L13_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_12);
{
PyObject* __pyx_temp[3] = {__pyx_t_2, __pyx_t_3, __pyx_t_12};
__pyx_t_4 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 456, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 456, __pyx_L13_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_10 < (0)) __PYX_ERR(1, 456, __pyx_L13_except_error)
__pyx_t_14 = (!__pyx_t_10);
if (unlikely(__pyx_t_14)) {
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_12);
__pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_12 = 0;
__PYX_ERR(1, 456, __pyx_L13_except_error)
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L12_exception_handled;
}
__pyx_L13_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L12_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L18_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_1) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 456, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
goto __pyx_L10;
}
__pyx_L10:;
}
goto __pyx_L33;
__pyx_L5_error:;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L1_error;
__pyx_L33:;
}
+0457: cursor = handle._cursor
__pyx_t_9 = __pyx_v_handle->_cursor;
__pyx_v_cursor = __pyx_t_9;
+0458: if cursor == NULL:
__pyx_t_10 = (__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_10)) {
/* … */
}
+0459: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 459, __pyx_L11_error)
__Pyx_GOTREF(__pyx_t_3);
+0460: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 460, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 460, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_5 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_5 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_12, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 459, __pyx_L11_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 459, __pyx_L11_error)
+0461: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_pin(__pyx_v_handle);
+0462: try:
/*try:*/ {
+0463: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L29;
}
__pyx_L29:;
}
}
}
+0464: batch = qwp_reader_cursor_next_batch(cursor, &err)
__pyx_v_batch = qwp_reader_cursor_next_batch(__pyx_v_cursor, (&__pyx_v_err));
}
0465: finally:
+0466: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L24;
}
__pyx_L24:;
}
+0467: if batch == NULL:
__pyx_t_14 = (__pyx_v_batch == NULL);
if (__pyx_t_14) {
/* … */
}
}
__pyx_L4_break:;
+0468: if err != NULL:
__pyx_t_14 = (__pyx_v_err != NULL);
if (unlikely(__pyx_t_14)) {
/* … */
}
+0469: raise _reader_err_to_py(err)
__pyx_t_12 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(1, 469, __pyx_L1_error)
+0470: break
goto __pyx_L4_break;
+0471: try:
/*try:*/ {
+0472: _mark_reader_drained(handle)
__pyx_t_15 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_v_handle); if (unlikely(__pyx_t_15 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 472, __pyx_L37_error)
}
0473: finally:
+0474: handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
goto __pyx_L38;
}
__pyx_L37_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_ExceptionSwap(&__pyx_t_6, &__pyx_t_13, &__pyx_t_19);
if ( unlikely(__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7) < 0)) __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_8, &__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_19);
__pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_13, __pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ErrRestore(__pyx_t_1, __pyx_t_8, __pyx_t_7);
__pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_13 = 0; __pyx_t_19 = 0;
__pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L1_error;
}
__pyx_L38:;
}
0475:
0476:
+0477: cdef _ReaderHandle _borrow_reader_from_pool(questdb_db* db):
static struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_f_7questdb_7_client__borrow_reader_from_pool(struct questdb_db *__pyx_v_db) {
questdb_error *__pyx_v_err;
struct qwp_reader *__pyx_v_reader;
struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_handle = 0;
struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._borrow_reader_from_pool", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0478: """Borrow a reader from the Rust-side ``questdb_db`` pool.
0479:
0480: Wraps ``questdb_db_borrow_reader`` and packs the result into a
0481: :class:`_ReaderHandle` that knows it came from this pool, so
0482: its dealloc returns/drops via the matching FFI.
0483: """
+0484: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
+0485: cdef qwp_reader* reader = NULL
__pyx_v_reader = NULL;
+0486: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L5;
}
__pyx_L5:;
}
}
+0487: reader = questdb_db_borrow_reader(db, &err)
__pyx_v_reader = questdb_db_borrow_reader(__pyx_v_db, (&__pyx_v_err));
}
+0488: if reader == NULL:
__pyx_t_1 = (__pyx_v_reader == NULL);
if (__pyx_t_1) {
/* … */
}
+0489: if err == NULL:
__pyx_t_1 = (__pyx_v_err == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0490: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 490, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+0491: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 491, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_questdb_db_borrow_reader_returne}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 490, __pyx_L1_error)
0492: 'questdb_db_borrow_reader returned NULL without setting err')
+0493: raise _reader_err_to_py(err)
__pyx_t_2 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 493, __pyx_L1_error)
0494: cdef _ReaderHandle handle
+0495: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L13_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
goto __pyx_L1_error;
__pyx_L13_try_end:;
}
+0496: handle = _ReaderHandle()
__pyx_t_4 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__ReaderHandle, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 496, __pyx_L8_error)
__Pyx_GOTREF((PyObject *)__pyx_t_2);
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__ReaderHandle *)__pyx_t_2);
__pyx_t_2 = 0;
+0497: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._borrow_reader_from_pool", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(1, 497, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
+0498: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L20;
}
__pyx_L20:;
}
}
+0499: qwp_reader_close(reader)
qwp_reader_close(__pyx_v_reader);
}
+0500: raise
__Pyx_GIVEREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_6); __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_6); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; __PYX_ERR(1, 500, __pyx_L10_except_error) }
+0501: handle._attach(reader)
__pyx_t_6 = ((struct __pyx_vtabstruct_7questdb_7_client__ReaderHandle *)__pyx_v_handle->__pyx_vtab)->_attach(__pyx_v_handle, __pyx_v_reader); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
0502: # A freshly borrowed reader is pristine: recycle it unless a query
0503: # arms _must_close at the network boundary (_execute_query).
+0504: handle._must_close = False
__pyx_v_handle->_must_close = 0;
+0505: return handle
{
struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_handle);
__pyx_r = __pyx_v_handle;
}
__Pyx_XDECREF((PyObject *)__pyx_temp);
}
goto __pyx_L0;
0506:
0507:
+0508: cdef object _snapshot_server_info(_ReaderHandle handle):
static PyObject *__pyx_f_7questdb_7_client__snapshot_server_info(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_handle) {
struct qwp_reader_server_info const *__pyx_v_si;
char const *__pyx_v_buf;
size_t __pyx_v_buf_len;
int __pyx_v_role_int;
PyObject *__pyx_v_role = NULL;
PyObject *__pyx_v_entry = NULL;
uint8_t __pyx_v_role_byte;
uint64_t __pyx_v_epoch;
uint32_t __pyx_v_capabilities;
int64_t __pyx_v_server_wall_ns;
PyObject *__pyx_v_cluster_id = NULL;
PyObject *__pyx_v_node_id = NULL;
PyObject *__pyx_v_zone_id = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._snapshot_server_info", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_role);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_v_cluster_id);
__Pyx_XDECREF(__pyx_v_node_id);
__Pyx_XDECREF(__pyx_v_zone_id);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0509: """Copy the reader's last-seen ``SERVER_INFO`` into a :class:`ServerInfo`.
0510:
0511: The FFI pointer is borrowed and invalidated by any reader operation
0512: that may reconnect, so every field is copied out before returning.
0513: """
0514: cdef const qwp_reader_server_info* si = \
+0515: qwp_reader_current_server_info(handle._reader)
__pyx_v_si = qwp_reader_current_server_info(__pyx_v_handle->_reader);
+0516: cdef const char* buf = NULL
__pyx_v_buf = NULL;
+0517: cdef size_t buf_len = 0
__pyx_v_buf_len = 0;
+0518: if si == NULL:
__pyx_t_1 = (__pyx_v_si == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+0519: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 519, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+0520: QuestDBErrorCode.SocketError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_SocketError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 520, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_SERVER_INFO_unavailable_the_conn}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 519, __pyx_L1_error)
0521: 'SERVER_INFO unavailable: the connection is mid-reconnect.')
+0522: cdef int role_int = <int>qwp_reader_server_info_role(si)
__pyx_v_role_int = ((int)qwp_reader_server_info_role(__pyx_v_si));
+0523: role = ServerRole.Other
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ServerRole); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Other); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_role = __pyx_t_4; __pyx_t_4 = 0;
+0524: for entry in ServerRole:
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerRole); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) { __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0; __pyx_t_9 = NULL; } else { __pyx_t_8 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 524, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_2))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 524, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_8, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_8; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 524, __pyx_L1_error) #endif if (__pyx_t_8 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_8)); #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_8); #endif ++__pyx_t_8; } if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 524, __pyx_L1_error) } else { __pyx_t_4 = __pyx_t_9(__pyx_t_2); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 524, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L7_for_end; __pyx_L5_break:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L7_for_end; __pyx_L7_for_end:;
+0525: if entry.c_value == role_int:
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_c_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_role_int); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_CompareBoolEq_object_int(__pyx_t_4, __pyx_t_6, Py_EQ); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+0526: role = entry
__Pyx_INCREF(__pyx_v_entry); __Pyx_DECREF_SET(__pyx_v_role, __pyx_v_entry);
+0527: break
goto __pyx_L5_break;
+0528: cdef uint8_t role_byte = qwp_reader_server_info_role_byte(si)
__pyx_v_role_byte = qwp_reader_server_info_role_byte(__pyx_v_si);
+0529: cdef uint64_t epoch = qwp_reader_server_info_epoch(si)
__pyx_v_epoch = qwp_reader_server_info_epoch(__pyx_v_si);
+0530: cdef uint32_t capabilities = qwp_reader_server_info_capabilities(si)
__pyx_v_capabilities = qwp_reader_server_info_capabilities(__pyx_v_si);
+0531: cdef int64_t server_wall_ns = qwp_reader_server_info_server_wall_ns(si)
__pyx_v_server_wall_ns = qwp_reader_server_info_server_wall_ns(__pyx_v_si);
+0532: qwp_reader_server_info_cluster_id(si, &buf, &buf_len)
qwp_reader_server_info_cluster_id(__pyx_v_si, (&__pyx_v_buf), (&__pyx_v_buf_len));
+0533: cluster_id = PyUnicode_FromStringAndSize(buf, <Py_ssize_t>buf_len) \
__pyx_t_6 = PyUnicode_FromStringAndSize(__pyx_v_buf, ((Py_ssize_t)__pyx_v_buf_len)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__6); __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__6; } __pyx_v_cluster_id = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+0534: if buf != NULL else ''
__pyx_t_1 = (__pyx_v_buf != NULL);
if (__pyx_t_1) {
+0535: buf = NULL
__pyx_v_buf = NULL;
+0536: buf_len = 0
__pyx_v_buf_len = 0;
+0537: qwp_reader_server_info_node_id(si, &buf, &buf_len)
qwp_reader_server_info_node_id(__pyx_v_si, (&__pyx_v_buf), (&__pyx_v_buf_len));
+0538: node_id = PyUnicode_FromStringAndSize(buf, <Py_ssize_t>buf_len) \
__pyx_t_6 = PyUnicode_FromStringAndSize(__pyx_v_buf, ((Py_ssize_t)__pyx_v_buf_len)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__6); __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__6; } __pyx_v_node_id = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+0539: if buf != NULL else ''
__pyx_t_1 = (__pyx_v_buf != NULL);
if (__pyx_t_1) {
+0540: buf = NULL
__pyx_v_buf = NULL;
+0541: buf_len = 0
__pyx_v_buf_len = 0;
+0542: zone_id = None
__Pyx_INCREF(Py_None);
__pyx_v_zone_id = ((PyObject*)Py_None);
+0543: if qwp_reader_server_info_zone_id(si, &buf, &buf_len):
__pyx_t_1 = qwp_reader_server_info_zone_id(__pyx_v_si, (&__pyx_v_buf), (&__pyx_v_buf_len));
if (__pyx_t_1) {
/* … */
}
+0544: zone_id = PyUnicode_FromStringAndSize(buf, <Py_ssize_t>buf_len) \
__pyx_t_6 = PyUnicode_FromStringAndSize(__pyx_v_buf, ((Py_ssize_t)__pyx_v_buf_len)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __pyx_t_6; __pyx_t_6 = 0; } else { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__6); __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__6; } __Pyx_DECREF_SET(__pyx_v_zone_id, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0;
+0545: if buf != NULL else ''
__pyx_t_1 = (__pyx_v_buf != NULL);
if (__pyx_t_1) {
+0546: return ServerInfo(
__pyx_t_6 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerInfo); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ { PyObject* __pyx_temp[8] = {__pyx_mstate_global->__pyx_n_u_role, __pyx_mstate_global->__pyx_n_u_role_byte, __pyx_mstate_global->__pyx_n_u_epoch, __pyx_mstate_global->__pyx_n_u_capabilities, __pyx_mstate_global->__pyx_n_u_server_wall_ns, __pyx_mstate_global->__pyx_n_u_cluster_id, __pyx_mstate_global->__pyx_n_u_node_id, __pyx_mstate_global->__pyx_n_u_zone_id}; __pyx_mstate_global->__pyx_tuple[7] = __Pyx_PyTuple_FromArray(__pyx_temp, 8); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]);
0547: role=role,
+0548: role_byte=role_byte,
__pyx_t_3 = __Pyx_PyLong_From_uint8_t(__pyx_v_role_byte); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+0549: epoch=epoch,
__pyx_t_5 = __Pyx_PyLong_From_uint64_t(__pyx_v_epoch); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
+0550: capabilities=capabilities,
__pyx_t_10 = __Pyx_PyLong_From_uint32_t(__pyx_v_capabilities); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10);
+0551: server_wall_ns=server_wall_ns,
__pyx_t_11 = __Pyx_PyLong_From_int64_t(__pyx_v_server_wall_ns); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11);
0552: cluster_id=cluster_id,
0553: node_id=node_id,
+0554: zone_id=zone_id)
__pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[9] = {__pyx_t_6, __pyx_v_role, __pyx_t_3, __pyx_t_5, __pyx_t_10, __pyx_t_11, __pyx_v_cluster_id, __pyx_v_node_id, __pyx_v_zone_id}; #if CYTHON_VECTORCALL __pyx_t_12 = __pyx_mstate_global->__pyx_tuple[7]; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_INCREF(__pyx_t_12); #else { PyObject *__pyx_temp[8] = {__pyx_mstate_global->__pyx_n_u_role, __pyx_mstate_global->__pyx_n_u_role_byte, __pyx_mstate_global->__pyx_n_u_epoch, __pyx_mstate_global->__pyx_n_u_capabilities, __pyx_mstate_global->__pyx_n_u_server_wall_ns, __pyx_mstate_global->__pyx_n_u_cluster_id, __pyx_mstate_global->__pyx_n_u_node_id, __pyx_mstate_global->__pyx_n_u_zone_id}; __pyx_t_12 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 8); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } #endif __pyx_t_2 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_12); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
0555:
0556:
+0557: cdef void _failover_reset_trampoline(
static void __pyx_f_7questdb_7_client__failover_reset_trampoline(CYTHON_UNUSED struct qwp_reader_failover_reset_event const *__pyx_v_event, void *__pyx_v_user_data) {
/* … */
/* function exit code */
__pyx_L0:;
}
0558: const qwp_reader_failover_reset_event* event,
0559: void* user_data) noexcept nogil:
0560: # Fires synchronously inside qwp_reader_cursor_next_batch while the
0561: # reader re-executes on a new endpoint, before the replayed batch-0
0562: # arrives. Honour the C reentrancy contract: no reentrant FFI on the
0563: # reader/query/cursor, no exception escapes, non-blocking. user_data is
0564: # a raw int* at the cursor's _reset_seq counter; bumping it is a plain
0565: # pointer write (no GIL, no Python object touched). Once the handle is
0566: # published, every cursor drive call holds its RLock, so this write is
0567: # covered by the same cross-thread hand-off boundary as the native call.
0568: # The materialise-whole accumulator polls it to discard its pre-failover
0569: # batches.
+0570: if user_data == NULL:
__pyx_t_1 = (__pyx_v_user_data == NULL);
if (__pyx_t_1) {
/* … */
}
+0571: return
{
}
goto __pyx_L0;
+0572: (<int*>user_data)[0] += 1
__pyx_t_2 = ((int *)__pyx_v_user_data); __pyx_t_3 = 0; (__pyx_t_2[__pyx_t_3]) = ((__pyx_t_2[__pyx_t_3]) + 1);
0573:
0574:
+0575: cdef int64_t _EPOCH_ORDINAL = 719163 # datetime.date(1970, 1, 1).toordinal()
__pyx_v_7questdb_7_client__EPOCH_ORDINAL = 0xAF93B;
0576:
0577:
+0578: cdef void_int _bind_decimal(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__bind_decimal(struct qwp_reader_query *__pyx_v_query, PyObject *__pyx_v_value, Py_ssize_t __pyx_v_idx) {
PyObject *__pyx_v_le_bytes = 0;
PyObject *__pyx_v_sign = NULL;
PyObject *__pyx_v_digits = NULL;
PyObject *__pyx_v_exponent = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_ndigits = NULL;
PyObject *__pyx_v_mantissa = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("questdb._client._bind_decimal", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_le_bytes);
__Pyx_XDECREF(__pyx_v_sign);
__Pyx_XDECREF(__pyx_v_digits);
__Pyx_XDECREF(__pyx_v_exponent);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_ndigits);
__Pyx_XDECREF(__pyx_v_mantissa);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0579: qwp_reader_query* query, object value, Py_ssize_t idx) except -1:
0580: """Bind a ``decimal.Decimal`` as the narrowest DECIMAL that holds it:
0581: DECIMAL64 up to 18 digits, DECIMAL128 up to 38, DECIMAL256 up to 76,
0582: with the fractional digits as the scale. Read off ``as_tuple()`` so the
0583: decimal context's precision never rounds the value.
0584: """
0585: cdef bytes le_bytes
+0586: if not decimal.Decimal.is_finite(value):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_decimal); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_value}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_finite, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 586, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 586, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = (!__pyx_t_6); if (unlikely(__pyx_t_7)) { /* … */ }
+0587: raise ValueError(
__pyx_t_4 = NULL;
+0588: f'query bind ${idx}: DECIMAL has no NaN or infinity: {value!r}')
__pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_query_bind; __pyx_t_8[1] = __pyx_t_2; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_DECIMAL_has_no_NaN_or_infinity; __pyx_t_8[3] = __pyx_t_3; __pyx_t_9 = 46; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[3]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[3]); #endif __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 4, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_11}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 587, __pyx_L1_error)
+0589: sign, digits, exponent = decimal.Decimal.as_tuple(value)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_decimal); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = __pyx_t_3; __Pyx_INCREF(__pyx_t_11); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_value}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_as_tuple, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 589, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_3); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_11); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_11); __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 2, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_4); } #else __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); index = 0; __pyx_t_3 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_11 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_11)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); index = 2; __pyx_t_4 = __pyx_t_12(__pyx_t_2); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_2), 3) < (0)) __PYX_ERR(1, 589, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(1, 589, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_sign = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_digits = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_exponent = __pyx_t_4; __pyx_t_4 = 0;
+0590: if digits == (0,):
__pyx_t_7 = __Pyx_PyObject_RichCompareBool(__pyx_v_digits, __pyx_mstate_global->__pyx_tuple[8], Py_EQ); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 590, __pyx_L1_error) if (__pyx_t_7) { /* … */ } /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_int_0}; __pyx_mstate_global->__pyx_tuple[8] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(1, 590, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]);
+0591: exponent = max(min(exponent, 0), -76)
__pyx_t_13 = -76L;
__pyx_t_14 = 0;
__Pyx_INCREF(__pyx_v_exponent);
__pyx_t_1 = __pyx_v_exponent;
__pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_7 = __Pyx_PyObject_CompareBoolLt_int_object(__pyx_t_11, __pyx_t_1, Py_LT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__pyx_t_7) {
__pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_4 = __pyx_t_11;
__pyx_t_11 = 0;
} else {
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_1 = __pyx_t_4;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_7 = __Pyx_PyObject_CompareBoolGt_int_object(__pyx_t_11, __pyx_t_1, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (__pyx_t_7) {
__pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 591, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_4 = __pyx_t_11;
__pyx_t_11 = 0;
} else {
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __pyx_t_4;
__Pyx_INCREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_exponent, __pyx_t_1);
__pyx_t_1 = 0;
+0592: scale = max(-exponent, 0)
__pyx_t_13 = 0; __pyx_t_1 = PyNumber_Negative(__pyx_v_exponent); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_CompareBoolGt_int_object(__pyx_t_11, __pyx_t_1, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_7) { __pyx_t_11 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = __pyx_t_11; __pyx_t_11 = 0; } else { __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = __pyx_t_1; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_scale = __pyx_t_1; __pyx_t_1 = 0;
+0593: ndigits = len(digits) + max(exponent, 0)
__pyx_t_9 = PyObject_Length(__pyx_v_digits); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 593, __pyx_L1_error) __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_13 = 0; __Pyx_INCREF(__pyx_v_exponent); __pyx_t_4 = __pyx_v_exponent; __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_CompareBoolGt_int_object(__pyx_t_3, __pyx_t_4, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_7) { __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __pyx_t_3; __pyx_t_3 = 0; } else { __Pyx_INCREF(__pyx_t_4); __pyx_t_11 = __pyx_t_4; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_Add_int_object(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_ndigits = __pyx_t_4; __pyx_t_4 = 0;
+0594: if scale > 76:
__pyx_t_7 = __Pyx_PyObject_CompareBoolGt_object_int(__pyx_v_scale, __pyx_mstate_global->__pyx_int_76, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 594, __pyx_L1_error) if (unlikely(__pyx_t_7)) { /* … */ }
+0595: raise ValueError(
__pyx_t_11 = NULL;
+0596: f'query bind ${idx}: {value!r} has scale {scale}; the widest '
__pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_scale, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_query_bind; __pyx_t_15[1] = __pyx_t_1; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_15[3] = __pyx_t_3; __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u_has_scale; __pyx_t_15[5] = __pyx_t_2; __pyx_t_15[6] = __pyx_mstate_global->__pyx_kp_u_the_widest_QuestDB_DECIMAL_hold; __pyx_t_9 = 68; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[5]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_15[5]); #endif __pyx_t_16 = __Pyx_PyUnicode_Join(__pyx_t_15, 7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_16}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 595, __pyx_L1_error)
0597: f'QuestDB DECIMAL holds scale 76')
+0598: if ndigits > 76:
__pyx_t_7 = __Pyx_PyObject_CompareBoolGt_object_int(__pyx_v_ndigits, __pyx_mstate_global->__pyx_int_76, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 598, __pyx_L1_error) if (unlikely(__pyx_t_7)) { /* … */ }
+0599: raise ValueError(
__pyx_t_16 = NULL;
+0600: f'query bind ${idx}: {value!r} has {ndigits} digits; the widest '
__pyx_t_11 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_ndigits, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15[0] = __pyx_mstate_global->__pyx_kp_u_query_bind; __pyx_t_15[1] = __pyx_t_11; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_15[3] = __pyx_t_2; __pyx_t_15[4] = __pyx_mstate_global->__pyx_kp_u_has; __pyx_t_15[5] = __pyx_t_3; __pyx_t_15[6] = __pyx_mstate_global->__pyx_kp_u_digits_the_widest_QuestDB_DECIM; __pyx_t_9 = 70; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_15[5]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_15[3]) | __Pyx_PyUnicode_KIND_04(__pyx_t_15[5]); #endif __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_15, 7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_1}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 599, __pyx_L1_error)
0601: f'QuestDB DECIMAL holds 76 digits')
+0602: mantissa = int(''.join(map(str, digits))) * 10 ** max(exponent, 0)
__pyx_t_1 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[3] = {__pyx_t_1, ((PyObject *)(&PyUnicode_Type)), __pyx_v_digits};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_map, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__6, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_13 = 0;
__Pyx_INCREF(__pyx_v_exponent);
__pyx_t_1 = __pyx_v_exponent;
__pyx_t_3 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = __Pyx_PyObject_CompareBoolGt_int_object(__pyx_t_3, __pyx_t_1, Py_GT); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_7) {
__pyx_t_3 = __Pyx_PyLong_From_long(__pyx_t_13); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_16 = __pyx_t_3;
__pyx_t_3 = 0;
} else {
__Pyx_INCREF(__pyx_t_1);
__pyx_t_16 = __pyx_t_1;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyNumber_Power(__pyx_mstate_global->__pyx_int_10, __pyx_t_16, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_16 = __Pyx_PyNumber_Multiply_int_object(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 602, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_mantissa = __pyx_t_16;
__pyx_t_16 = 0;
+0603: if sign:
__pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_sign); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(1, 603, __pyx_L1_error) if (__pyx_t_7) { /* … */ }
+0604: mantissa = -mantissa
__pyx_t_16 = PyNumber_Negative(__pyx_v_mantissa); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF_SET(__pyx_v_mantissa, __pyx_t_16); __pyx_t_16 = 0;
+0605: if ndigits <= 18 and scale <= 18:
__pyx_t_6 = __Pyx_PyObject_CompareBoolLe_object_int(__pyx_v_ndigits, __pyx_mstate_global->__pyx_int_18, Py_LE); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 605, __pyx_L1_error) if (__pyx_t_6) { } else { __pyx_t_7 = __pyx_t_6; goto __pyx_L11_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_CompareBoolLe_object_int(__pyx_v_scale, __pyx_mstate_global->__pyx_int_18, Py_LE); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 605, __pyx_L1_error) __pyx_t_7 = __pyx_t_6; __pyx_L11_bool_binop_done:; if (__pyx_t_7) { /* … */ goto __pyx_L10; }
+0606: qwp_reader_query_bind_decimal64(query, mantissa, scale)
__pyx_t_17 = __Pyx_PyLong_As_int64_t(__pyx_v_mantissa); if (unlikely((__pyx_t_17 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 606, __pyx_L1_error) __pyx_t_18 = __Pyx_PyLong_As_int8_t(__pyx_v_scale); if (unlikely((__pyx_t_18 == ((int8_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 606, __pyx_L1_error) qwp_reader_query_bind_decimal64(__pyx_v_query, __pyx_t_17, __pyx_t_18);
+0607: elif ndigits <= 38 and scale <= 38:
__pyx_t_6 = __Pyx_PyObject_CompareBoolLe_object_int(__pyx_v_ndigits, __pyx_mstate_global->__pyx_int_38, Py_LE); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 607, __pyx_L1_error) if (__pyx_t_6) { } else { __pyx_t_7 = __pyx_t_6; goto __pyx_L13_bool_binop_done; } __pyx_t_6 = __Pyx_PyObject_CompareBoolLe_object_int(__pyx_v_scale, __pyx_mstate_global->__pyx_int_38, Py_LE); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 607, __pyx_L1_error) __pyx_t_7 = __pyx_t_6; __pyx_L13_bool_binop_done:; if (__pyx_t_7) { /* … */ goto __pyx_L10; }
+0608: qwp_reader_query_bind_decimal128(
qwp_reader_query_bind_decimal128(__pyx_v_query, __pyx_t_19, __pyx_t_17, __pyx_t_18);
+0609: query, mantissa & 0xFFFFFFFFFFFFFFFF, mantissa >> 64, scale)
__pyx_t_16 = __Pyx_PyNumber_And_object_int(__pyx_v_mantissa, __pyx_mstate_global->__pyx_int_0xffffffffffffffff); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_19 = __Pyx_PyLong_As_uint64_t(__pyx_t_16); if (unlikely((__pyx_t_19 == ((uint64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_16 = PyNumber_Rshift(__pyx_v_mantissa, __pyx_mstate_global->__pyx_int_64); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_17 = __Pyx_PyLong_As_int64_t(__pyx_t_16); if (unlikely((__pyx_t_17 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_18 = __Pyx_PyLong_As_int8_t(__pyx_v_scale); if (unlikely((__pyx_t_18 == ((int8_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 609, __pyx_L1_error)
0610: else:
+0611: le_bytes = mantissa.to_bytes(32, 'little', signed=True)
/*else*/ {
__pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_mantissa, __pyx_mstate_global->__pyx_n_u_to_bytes); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_signed, Py_True) < (0)) __PYX_ERR(1, 611, __pyx_L1_error)
__pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_16, __pyx_mstate_global->__pyx_tuple[9], __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 611, __pyx_L1_error)
__pyx_v_le_bytes = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
/* … */
{
PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_int_32, __pyx_mstate_global->__pyx_n_u_little};
__pyx_mstate_global->__pyx_tuple[9] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(1, 611, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);
+0612: qwp_reader_query_bind_decimal256(
qwp_reader_query_bind_decimal256(__pyx_v_query, ((uint8_t const *)__pyx_t_20), __pyx_t_18); } __pyx_L10:;
+0613: query, <const uint8_t*>PyBytes_AsString(le_bytes), scale)
__pyx_t_20 = PyBytes_AsString(__pyx_v_le_bytes); if (unlikely(__pyx_t_20 == ((void *)NULL))) __PYX_ERR(1, 613, __pyx_L1_error) __pyx_t_18 = __Pyx_PyLong_As_int8_t(__pyx_v_scale); if (unlikely((__pyx_t_18 == ((int8_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 613, __pyx_L1_error)
+0614: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
0615:
0616:
+0617: cdef void_int _bind_query_params(qwp_reader_query* query, object binds) except -1:
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__bind_query_params(struct qwp_reader_query *__pyx_v_query, PyObject *__pyx_v_binds) {
PyObject *__pyx_v_utf8 = 0;
PyObject *__pyx_v_uuid_bytes = 0;
struct line_sender_utf8 __pyx_v_c_utf8;
struct line_sender_error *__pyx_v_utf8_err;
Py_ssize_t __pyx_v_idx;
PyObject *__pyx_v_value = NULL;
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("questdb._client._bind_query_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_utf8);
__Pyx_XDECREF(__pyx_v_uuid_bytes);
__Pyx_XDECREF(__pyx_v_value);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0618: """Append positional binds matching the SQL's ``$1``..``$N`` placeholders.
0619:
0620: Bind calls follow the C ABI's deferred-error contract (they return
0621: void; the only native-side failure surfaces from execute), so the only
0622: errors raised here are Python-side type rejections.
0623: """
0624: cdef bytes utf8
0625: cdef bytes uuid_bytes
0626: cdef line_sender_utf8 c_utf8
+0627: cdef line_sender_error* utf8_err = NULL
__pyx_v_utf8_err = NULL;
+0628: cdef Py_ssize_t idx = 0
__pyx_v_idx = 0;
+0629: for value in binds:
if (likely(PyList_CheckExact(__pyx_v_binds)) || PyTuple_CheckExact(__pyx_v_binds)) { __pyx_t_1 = __pyx_v_binds; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_binds); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 629, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 629, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_2; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 629, __pyx_L1_error) #endif if (__pyx_t_2 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2)); #else __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2); #endif ++__pyx_t_2; } if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 629, __pyx_L1_error) } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 629, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_4); __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0630: idx += 1
__pyx_v_idx = (__pyx_v_idx + 1);
+0631: if value is None:
__pyx_t_5 = (__pyx_v_value == Py_None);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0632: qwp_reader_query_bind_null_varchar(query)
qwp_reader_query_bind_null_varchar(__pyx_v_query);
+0633: elif value is True or value is False:
__pyx_t_6 = (__pyx_v_value == Py_True);
if (!__pyx_t_6) {
} else {
__pyx_t_5 = __pyx_t_6;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_6 = (__pyx_v_value == Py_False);
__pyx_t_5 = __pyx_t_6;
__pyx_L6_bool_binop_done:;
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0634: qwp_reader_query_bind_bool(query, value)
__pyx_t_7 = __Pyx_PyLong_As_bool(__pyx_v_value); if (unlikely((__pyx_t_7 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(1, 634, __pyx_L1_error) qwp_reader_query_bind_bool(__pyx_v_query, __pyx_t_7);
+0635: elif isinstance(value, int):
__pyx_t_5 = PyLong_Check(__pyx_v_value);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0636: if value < INT64_MIN or value > INT64_MAX:
__pyx_t_4 = __Pyx_PyLong_From_int64_t(INT64_MIN); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_CompareBoolLt_object_int(__pyx_v_value, __pyx_t_4, Py_LT); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 636, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) { } else { __pyx_t_5 = __pyx_t_6; goto __pyx_L9_bool_binop_done; } __pyx_t_4 = __Pyx_PyLong_From_int64_t(INT64_MAX); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 636, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_CompareBoolGt_object_int(__pyx_v_value, __pyx_t_4, Py_GT); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 636, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __pyx_t_6; __pyx_L9_bool_binop_done:; if (unlikely(__pyx_t_5)) { /* … */ }
+0637: raise OverflowError(
__pyx_t_8 = NULL;
+0638: f'query bind ${idx}: int out of the signed 64-bit '
__pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_12 = 72; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11[3]); #endif __pyx_t_13 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_11[3]); #endif __pyx_t_14 = __Pyx_PyUnicode_Join(__pyx_t_11, 4, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_15 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_14}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_OverflowError)), __pyx_callargs+__pyx_t_15, (2-__pyx_t_15) | (__pyx_t_15*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 637, __pyx_L1_error)
+0639: f'range QuestDB LONG supports: {value}')
__pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_query_bind; __pyx_t_11[1] = __pyx_t_9; __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u_int_out_of_the_signed_64_bit_ra; __pyx_t_11[3] = __pyx_t_10;
+0640: qwp_reader_query_bind_i64(query, value)
__pyx_t_16 = __Pyx_PyLong_As_int64_t(__pyx_v_value); if (unlikely((__pyx_t_16 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 640, __pyx_L1_error) qwp_reader_query_bind_i64(__pyx_v_query, __pyx_t_16);
+0641: elif isinstance(value, float):
__pyx_t_5 = PyFloat_Check(__pyx_v_value);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0642: qwp_reader_query_bind_f64(query, value)
__pyx_t_17 = __Pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 642, __pyx_L1_error) qwp_reader_query_bind_f64(__pyx_v_query, __pyx_t_17);
+0643: elif isinstance(value, str):
__pyx_t_5 = PyUnicode_Check(__pyx_v_value);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0644: utf8 = value.encode('utf-8')
__pyx_t_14 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_14);
__pyx_t_15 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_mstate_global->__pyx_kp_u_utf_8};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_15, (2-__pyx_t_15) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 644, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 644, __pyx_L1_error)
__Pyx_XDECREF_SET(__pyx_v_utf8, ((PyObject*)__pyx_t_4));
__pyx_t_4 = 0;
+0645: if not line_sender_utf8_init(
__pyx_t_5 = (!line_sender_utf8_init((&__pyx_v_c_utf8), ((size_t)__pyx_t_12), ((char const *)__pyx_t_18), (&__pyx_v_utf8_err)));
if (unlikely(__pyx_t_5)) {
/* … */
}
0646: &c_utf8,
+0647: <size_t>len(utf8),
if (unlikely(__pyx_v_utf8 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 647, __pyx_L1_error)
}
__pyx_t_12 = __Pyx_PyBytes_GET_SIZE(__pyx_v_utf8); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(1, 647, __pyx_L1_error)
+0648: <const char*>utf8,
if (unlikely(__pyx_v_utf8 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 648, __pyx_L1_error)
}
__pyx_t_18 = __Pyx_PyBytes_AsString(__pyx_v_utf8); if (unlikely((!__pyx_t_18) && PyErr_Occurred())) __PYX_ERR(1, 648, __pyx_L1_error)
0649: &utf8_err):
+0650: raise c_err_to_py(utf8_err)
__pyx_t_4 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_utf8_err); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 650, __pyx_L1_error)
+0651: qwp_reader_query_bind_varchar(query, c_utf8)
qwp_reader_query_bind_varchar(__pyx_v_query, __pyx_v_c_utf8);
+0652: elif isinstance(value, TimestampNanos):
__pyx_t_5 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampNanos);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0653: qwp_reader_query_bind_timestamp_nanos(query, value.value)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = __Pyx_PyLong_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_16 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 653, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; qwp_reader_query_bind_timestamp_nanos(__pyx_v_query, __pyx_t_16);
+0654: elif isinstance(value, TimestampMicros):
__pyx_t_5 = __Pyx_TypeCheck(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_TimestampMicros);
if (__pyx_t_5) {
/* … */
goto __pyx_L5;
}
+0655: qwp_reader_query_bind_timestamp_micros(query, value.value)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_16 = __Pyx_PyLong_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_16 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 655, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; qwp_reader_query_bind_timestamp_micros(__pyx_v_query, __pyx_t_16);
+0656: elif isinstance(value, datetime.datetime):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 656, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = PyObject_IsInstance(__pyx_v_value, __pyx_t_14); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 656, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (__pyx_t_5) { /* … */ goto __pyx_L5; }
+0657: qwp_reader_query_bind_timestamp_micros(
qwp_reader_query_bind_timestamp_micros(__pyx_v_query, __pyx_t_16);
+0658: query, datetime_to_micros(value))
if (!(likely(((__pyx_v_value) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_value, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_datetime))))) __PYX_ERR(1, 658, __pyx_L1_error) __pyx_t_16 = __pyx_f_7questdb_7_client_datetime_to_micros(((PyDateTime_DateTime *)__pyx_v_value)); if (unlikely(__pyx_t_16 == ((int64_t)-1L) && PyErr_Occurred())) __PYX_ERR(1, 658, __pyx_L1_error)
+0659: elif isinstance(value, uuid.UUID):
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_uuid); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_5 = PyObject_IsInstance(__pyx_v_value, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 659, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_5) { /* … */ goto __pyx_L5; }
0660: # The bind takes canonical RFC 4122 big-endian bytes, which is
0661: # exactly `UUID.bytes`; the native client byte-swaps them into
0662: # QWP wire order (lo half LE, then hi half LE).
+0663: uuid_bytes = value.bytes
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_mstate_global->__pyx_n_u_bytes); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_XDECREF_SET(__pyx_v_uuid_bytes, ((PyObject*)__pyx_t_4)); __pyx_t_4 = 0;
0664: # `UUID.bytes` is a property a subclass can override, and the
0665: # bind reads exactly 16 bytes from the pointer, so the length
0666: # is checked before the buffer is handed over.
+0667: if len(uuid_bytes) != 16:
if (unlikely(__pyx_v_uuid_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 667, __pyx_L1_error)
}
__pyx_t_12 = __Pyx_PyBytes_GET_SIZE(__pyx_v_uuid_bytes); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(1, 667, __pyx_L1_error)
__pyx_t_5 = (__pyx_t_12 != 16);
if (unlikely(__pyx_t_5)) {
/* … */
}
+0668: raise ValueError(
__pyx_t_14 = NULL;
+0669: f'query bind ${idx}: uuid.UUID.bytes returned '
__pyx_t_8 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); /* … */ __pyx_t_12 = 59; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[3]); #endif __pyx_t_13 = 0; __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_19, 5, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_15 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_t_9}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_15, (2-__pyx_t_15) | (__pyx_t_15*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_Raise(__pyx_t_4, 0, 0, 0); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 668, __pyx_L1_error)
+0670: f'{len(uuid_bytes)} bytes, expected 16.')
if (unlikely(__pyx_v_uuid_bytes == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 670, __pyx_L1_error)
}
__pyx_t_12 = __Pyx_PyBytes_GET_SIZE(__pyx_v_uuid_bytes); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(1, 670, __pyx_L1_error)
__pyx_t_10 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_t_12, 0, ' ', 'd'); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_query_bind;
__pyx_t_19[1] = __pyx_t_8;
__pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_uuid_UUID_bytes_returned;
__pyx_t_19[3] = __pyx_t_10;
__pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u_bytes_expected_16;
+0671: qwp_reader_query_bind_uuid(
qwp_reader_query_bind_uuid(__pyx_v_query, ((uint8_t const *)__pyx_t_20));
+0672: query, <const uint8_t*>PyBytes_AsString(uuid_bytes))
__pyx_t_20 = PyBytes_AsString(__pyx_v_uuid_bytes); if (unlikely(__pyx_t_20 == ((void *)NULL))) __PYX_ERR(1, 672, __pyx_L1_error)
+0673: elif isinstance(value, datetime.date):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_date); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 673, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = PyObject_IsInstance(__pyx_v_value, __pyx_t_9); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 673, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_5) { /* … */ goto __pyx_L5; }
0674: # datetime.datetime matched above; a plain date is a DATE.
+0675: qwp_reader_query_bind_date_millis(
qwp_reader_query_bind_date_millis(__pyx_v_query, __pyx_t_16);
+0676: query, (value.toordinal() - _EPOCH_ORDINAL) * 86_400_000)
__pyx_t_4 = __pyx_v_value;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_15 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_toordinal, __pyx_callargs+__pyx_t_15, (1-__pyx_t_15) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_4 = __Pyx_PyLong_From_int64_t(__pyx_v_7questdb_7_client__EPOCH_ORDINAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_14 = __Pyx_PyNumber_Subtract_object_int(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyLong_MultiplyObjC(__pyx_t_14, __pyx_mstate_global->__pyx_int_86400000, 0x5265C00, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 676, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__pyx_t_16 = __Pyx_PyLong_As_int64_t(__pyx_t_4); if (unlikely((__pyx_t_16 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 676, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+0677: elif isinstance(value, decimal.Decimal):
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_decimal); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = PyObject_IsInstance(__pyx_v_value, __pyx_t_14); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (likely(__pyx_t_5)) { /* … */ goto __pyx_L5; }
+0678: _bind_decimal(query, value, idx)
__pyx_t_21 = __pyx_f_7questdb_7_client__bind_decimal(__pyx_v_query, __pyx_v_value, __pyx_v_idx); if (unlikely(__pyx_t_21 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 678, __pyx_L1_error)
0679: else:
+0680: raise TypeError(
/*else*/ {
__pyx_t_4 = NULL;
+0681: f'query bind ${idx}: unsupported type '
__pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_idx, 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); /* … */ __pyx_t_12 = 167; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_19[3]); #endif __pyx_t_13 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_19[3]); #endif __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_19, 5, __pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_15 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10}; __pyx_t_14 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_15, (2-__pyx_t_15) | (__pyx_t_15*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); } __Pyx_Raise(__pyx_t_14, 0, 0, 0); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __PYX_ERR(1, 680, __pyx_L1_error) } __pyx_L5:;
+0682: f'{_fqn(type(value))}. Supported: None, bool, int, float, '
__pyx_t_10 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_value)))); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = __Pyx_PyUnicode_Unicode(__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_19[0] = __pyx_mstate_global->__pyx_kp_u_query_bind; __pyx_t_19[1] = __pyx_t_9; __pyx_t_19[2] = __pyx_mstate_global->__pyx_kp_u_unsupported_type; __pyx_t_19[3] = __pyx_t_8; __pyx_t_19[4] = __pyx_mstate_global->__pyx_kp_u_Supported_None_bool_int_float_s;
0683: f'str, datetime.datetime, datetime.date, decimal.Decimal, '
0684: f'TimestampMicros, TimestampNanos, uuid.UUID.')
+0685: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
0686:
0687:
+0688: cdef int64_t _query_timeout_to_millis(object timeout) except -2:
static int64_t __pyx_f_7questdb_7_client__query_timeout_to_millis(PyObject *__pyx_v_timeout) {
PyObject *__pyx_v_millis = 0;
int64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("questdb._client._query_timeout_to_millis", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -2L;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_millis);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0689: """``None`` → ``-1`` (keep the connect-string default); ``0`` clears it;
0690: a positive sub-millisecond ``timedelta`` rounds up to 1 ms."""
+0691: cdef object millis = None
__Pyx_INCREF(Py_None);
__pyx_v_millis = Py_None;
+0692: if timeout is None:
__pyx_t_1 = (__pyx_v_timeout == Py_None);
if (__pyx_t_1) {
/* … */
}
+0693: return -1
{
__pyx_r = -1L;
}
goto __pyx_L0;
+0694: if isinstance(timeout, datetime.timedelta):
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_1 = PyObject_IsInstance(__pyx_v_timeout, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { /* … */ }
+0695: if timeout < datetime.timedelta(0):
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 695, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 695, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_int_0};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 695, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__pyx_t_1 = __Pyx_PyObject_CompareBoolLt_object_object(__pyx_v_timeout, __pyx_t_3, Py_LT); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 695, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(__pyx_t_1)) {
/* … */
}
+0696: raise ValueError('timeout must not be negative')
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_timeout_must_not_be_negative};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 696, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 696, __pyx_L1_error)
+0697: return <int64_t>_timedelta_to_millis(timeout)
if (!(likely(((__pyx_v_timeout) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_8datetime_timedelta))))) __PYX_ERR(1, 697, __pyx_L1_error) __pyx_t_7 = __pyx_f_7questdb_7_client__timedelta_to_millis(((PyDateTime_Delta *)__pyx_v_timeout)); if (unlikely(__pyx_t_7 == ((uint64_t)-1LL) && PyErr_Occurred())) __PYX_ERR(1, 697, __pyx_L1_error) { __pyx_r = ((int64_t)__pyx_t_7); } goto __pyx_L0;
+0698: if not isinstance(timeout, (bool, numpy.bool_)):
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_numpy); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_bool_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_TypeCheck(__pyx_v_timeout, __pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool); if (!__pyx_t_8) { } else { __pyx_t_1 = __pyx_t_8; goto __pyx_L7_bool_binop_done; } __pyx_t_8 = PyObject_IsInstance(__pyx_v_timeout, __pyx_t_5); __pyx_t_1 = __pyx_t_8; __pyx_L7_bool_binop_done:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = (!__pyx_t_1); if (__pyx_t_8) { /* … */ }
+0699: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L14_try_end;
__pyx_L9_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L11_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L1_error;
__pyx_L10_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__pyx_L14_try_end:;
}
+0700: millis = operator.index(timeout)
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_operator); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 700, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 700, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_timeout};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 700, __pyx_L9_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_DECREF_SET(__pyx_v_millis, __pyx_t_5);
__pyx_t_5 = 0;
+0701: except TypeError:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); if (__pyx_t_12) { __Pyx_ErrRestore(0,0,0); goto __pyx_L10_exception_handled; } goto __pyx_L11_except_error;
0702: pass
+0703: if millis is None:
__pyx_t_8 = (__pyx_v_millis == Py_None);
if (unlikely(__pyx_t_8)) {
/* … */
}
+0704: raise TypeError(
__pyx_t_4 = NULL;
+0705: 'timeout must be an int (milliseconds), a '
__pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_timeout_must_be_an_int_milliseco, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 704, __pyx_L1_error)
+0706: f'datetime.timedelta, or None, not {_fqn(type(timeout))}')
__pyx_t_3 = __pyx_f_7questdb_7_client__fqn(((PyTypeObject*)((PyObject *)Py_TYPE(__pyx_v_timeout)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyUnicode_Unicode(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0707: if millis < 0:
__pyx_t_8 = __Pyx_PyObject_CompareBoolLt_object_int(__pyx_v_millis, __pyx_mstate_global->__pyx_int_0, Py_LT); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 707, __pyx_L1_error) if (unlikely(__pyx_t_8)) { /* … */ }
+0708: raise ValueError('timeout must not be negative')
__pyx_t_3 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_timeout_must_not_be_negative};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 708, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__PYX_ERR(1, 708, __pyx_L1_error)
+0709: if millis > INT64_MAX:
__pyx_t_5 = __Pyx_PyLong_From_int64_t(INT64_MAX); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_CompareBoolGt_object_int(__pyx_v_millis, __pyx_t_5, Py_GT); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 709, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(__pyx_t_8)) { /* … */ }
+0710: raise ValueError(
__pyx_t_3 = NULL;
+0711: f'timeout of {millis} ms exceeds the largest supported value '
__pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_millis, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* … */ __pyx_t_14 = 56; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_14 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_13[3]); #endif __pyx_t_12 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_12 |= __Pyx_PyUnicode_KIND_04(__pyx_t_13[1]); #endif __pyx_t_15 = __Pyx_PyUnicode_Join(__pyx_t_13, 5, __pyx_t_14, __pyx_t_12); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_15}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 710, __pyx_L1_error)
+0712: f'({INT64_MAX} ms)')
__pyx_t_2 = __Pyx_PyUnicode_From_int64_t(INT64_MAX, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_timeout_of; __pyx_t_13[1] = __pyx_t_4; __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u_ms_exceeds_the_largest_supporte; __pyx_t_13[3] = __pyx_t_2; __pyx_t_13[4] = __pyx_mstate_global->__pyx_kp_u_ms_2;
+0713: return <int64_t>millis
__pyx_t_16 = __Pyx_PyLong_As_int64_t(__pyx_v_millis); if (unlikely((__pyx_t_16 == ((int64_t)-1)) && PyErr_Occurred())) __PYX_ERR(1, 713, __pyx_L1_error) { __pyx_r = ((int64_t)__pyx_t_16); } goto __pyx_L0;
0714:
0715:
+0716: def _debug_query_timeout_to_millis(timeout):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_5_debug_query_timeout_to_millis(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_5_debug_query_timeout_to_millis = {"_debug_query_timeout_to_millis", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_5_debug_query_timeout_to_millis, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_5_debug_query_timeout_to_millis(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_timeout = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_debug_query_timeout_to_millis (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_timeout,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 716, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 716, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_debug_query_timeout_to_millis", 0) < (0)) __PYX_ERR(1, 716, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_query_timeout_to_millis", 1, 1, 1, i); __PYX_ERR(1, 716, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 716, __pyx_L3_error)
}
__pyx_v_timeout = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_debug_query_timeout_to_millis", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 716, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._debug_query_timeout_to_millis", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_4_debug_query_timeout_to_millis(__pyx_self, __pyx_v_timeout);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_4_debug_query_timeout_to_millis(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeout) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._debug_query_timeout_to_millis", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_5_debug_query_timeout_to_millis, 0, __pyx_mstate_global->__pyx_n_u_debug_query_timeout_to_millis, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 716, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_query_timeout_to_millis, __pyx_t_17) < (0)) __PYX_ERR(1, 716, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+0717: return _query_timeout_to_millis(timeout)
__pyx_t_1 = __pyx_f_7questdb_7_client__query_timeout_to_millis(__pyx_v_timeout); if (unlikely(__pyx_t_1 == ((int64_t)-2L))) __PYX_ERR(1, 717, __pyx_L1_error) __pyx_t_2 = __Pyx_PyLong_From_int64_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
0718:
0719:
+0720: cdef inline bint _execute_failed_before_send(questdb_error* err) noexcept:
static CYTHON_INLINE int __pyx_f_7questdb_7_client__execute_failed_before_send(questdb_error *__pyx_v_err) {
questdb_error_code __pyx_v_code;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0721: """Whether an execute failure happened before the request was written:
0722: `qwp_reader_query_execute` returns these codes only from its pre-write
0723: checks; a failed write is always `SocketError`."""
+0724: cdef questdb_error_code code = questdb_error_get_code(err)
__pyx_v_code = questdb_error_get_code(__pyx_v_err);
0725: return (
+0726: code == line_sender_error_unsupported_server
case line_sender_error_invalid_api_call:
+0727: or code == line_sender_error_invalid_api_call
switch (__pyx_v_code) {
case line_sender_error_unsupported_server:
/* … */
case line_sender_error_invalid_bind:
/* … */
__pyx_t_1 = 1;
break;
default:
__pyx_t_1 = 0;
break;
}
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
+0728: or code == line_sender_error_invalid_bind
case line_sender_error_invalid_utf8:
0729: or code == line_sender_error_invalid_utf8)
0730:
0731:
+0732: cdef _CursorHandle _execute_query(
static struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_f_7questdb_7_client__execute_query(struct __pyx_obj_7questdb_7_client__ReaderHandle *__pyx_v_reader_handle, PyObject *__pyx_v_sql, PyObject *__pyx_v_binds, struct __pyx_opt_args_7questdb_7_client__execute_query *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._execute_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_sql_bytes);
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client__execute_query {
int __pyx_n;
int reset_symbol_dict;
int owns_reader;
int64_t timeout_ms;
};
0733: _ReaderHandle reader_handle, str sql, object binds,
+0734: bint reset_symbol_dict=True, bint owns_reader=True,
int __pyx_v_reset_symbol_dict = ((int)1);
int __pyx_v_owns_reader = ((int)1);
int64_t __pyx_v_timeout_ms = ((int64_t)-1L);
PyObject *__pyx_v_sql_bytes = 0;
struct line_sender_error *__pyx_v_utf8_err;
struct line_sender_utf8 __pyx_v_sql_utf8;
questdb_error *__pyx_v_err;
struct qwp_reader_query *__pyx_v_query;
struct qwp_reader_cursor *__pyx_v_cursor;
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0;
int __pyx_v_was_armed;
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_reset_symbol_dict = __pyx_optional_args->reset_symbol_dict;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_owns_reader = __pyx_optional_args->owns_reader;
if (__pyx_optional_args->__pyx_n > 2) {
__pyx_v_timeout_ms = __pyx_optional_args->timeout_ms;
}
}
}
}
0735: int64_t timeout_ms=-1):
0736: """Execute a SQL query and return a _CursorHandle.
0737:
0738: The query is prepared with an ``on_failover_reset`` trampoline that
0739: bumps the cursor's ``_reset_seq`` on a mid-query failover. The
0740: materialise-whole entry points poll it to discard their partial
0741: accumulation and replay-from-batch-0 transparently; the streaming
0742: entry points poll it to surface a clean ``FailoverWouldDuplicate``
0743: (the already-yielded batches can't be discarded). Installing the
0744: callback also clears the C-side silent-duplicate guard, so a
0745: post-delivery failover re-executes rather than aborting outright.
0746: """
+0747: cdef bytes sql_bytes = sql.encode('utf-8')
if (unlikely(__pyx_v_sql == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "encode");
__PYX_ERR(1, 747, __pyx_L1_error)
}
__pyx_t_1 = PyUnicode_AsUTF8String(__pyx_v_sql); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 747, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_sql_bytes = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+0748: cdef line_sender_error* utf8_err = NULL
__pyx_v_utf8_err = NULL;
0749: cdef line_sender_utf8 sql_utf8
+0750: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
0751: cdef qwp_reader_query* query
0752: cdef qwp_reader_cursor* cursor
0753:
+0754: if not line_sender_utf8_init(
__pyx_t_4 = (!line_sender_utf8_init((&__pyx_v_sql_utf8), ((size_t)__pyx_t_2), ((char const *)((char *)__pyx_t_3)), (&__pyx_v_utf8_err)));
if (unlikely(__pyx_t_4)) {
/* … */
}
0755: &sql_utf8,
+0756: <size_t>len(sql_bytes),
__pyx_t_2 = __Pyx_PyBytes_GET_SIZE(__pyx_v_sql_bytes); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 756, __pyx_L1_error)
+0757: <const char*><char*>sql_bytes,
__pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_sql_bytes); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 757, __pyx_L1_error)
0758: &utf8_err):
+0759: raise c_err_to_py(utf8_err)
__pyx_t_1 = __pyx_f_7questdb_7_client_c_err_to_py(__pyx_v_utf8_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 759, __pyx_L1_error)
0760:
+0761: cdef _CursorHandle handle = _CursorHandle()
__pyx_t_5 = NULL;
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 761, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1);
__pyx_t_1 = 0;
0762:
+0763: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L6;
}
__pyx_L6:;
}
}
+0764: query = qwp_reader_prepare(reader_handle._reader, sql_utf8, &err)
__pyx_v_query = qwp_reader_prepare(__pyx_v_reader_handle->_reader, __pyx_v_sql_utf8, (&__pyx_v_err));
}
0765:
+0766: if query == NULL:
__pyx_t_4 = (__pyx_v_query == NULL);
if (__pyx_t_4) {
/* … */
}
+0767: if err == NULL:
__pyx_t_4 = (__pyx_v_err == NULL);
if (unlikely(__pyx_t_4)) {
/* … */
}
+0768: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 768, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+0769: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_qwp_reader_prepare_returned_NULL}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 768, __pyx_L1_error)
0770: 'qwp_reader_prepare returned NULL without setting err')
+0771: raise _reader_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 771, __pyx_L1_error)
0772:
+0773: if binds is not None:
__pyx_t_4 = (__pyx_v_binds != Py_None);
if (__pyx_t_4) {
/* … */
}
+0774: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L15_try_end;
__pyx_L10_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L12_except_error:;
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
goto __pyx_L1_error;
__pyx_L15_try_end:;
}
+0775: _bind_query_params(query, binds)
__pyx_t_13 = __pyx_f_7questdb_7_client__bind_query_params(__pyx_v_query, __pyx_v_binds); if (unlikely(__pyx_t_13 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 775, __pyx_L10_error)
+0776: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._execute_query", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_7, &__pyx_t_9) < 0) __PYX_ERR(1, 776, __pyx_L12_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_9);
+0777: qwp_reader_query_free(query)
qwp_reader_query_free(__pyx_v_query);
+0778: raise
__Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_7, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; __PYX_ERR(1, 778, __pyx_L12_except_error) }
0779:
+0780: qwp_reader_query_set_reset_symbol_dict(query, reset_symbol_dict)
qwp_reader_query_set_reset_symbol_dict(__pyx_v_query, __pyx_v_reset_symbol_dict);
0781:
+0782: if timeout_ms >= 0:
__pyx_t_4 = (__pyx_v_timeout_ms >= 0);
if (__pyx_t_4) {
/* … */
}
+0783: qwp_reader_query_set_timeout_ms(query, <uint64_t>timeout_ms)
qwp_reader_query_set_timeout_ms(__pyx_v_query, ((uint64_t)__pyx_v_timeout_ms));
0784:
+0785: qwp_reader_query_on_failover_reset(
qwp_reader_query_on_failover_reset(__pyx_v_query, __pyx_f_7questdb_7_client__failover_reset_trampoline, ((void *)(&__pyx_v_handle->_reset_seq)));
0786: query, _failover_reset_trampoline, <void*>&handle._reset_seq)
0787:
0788: # Mark the reader unrecyclable only once we cross the network boundary:
0789: # a client-side failure above (bad SQL/bind) leaves the reader clean, so
0790: # a pooled lease must not drop a healthy connection over it.
+0791: cdef bint was_armed = reader_handle._must_close
__pyx_t_4 = __pyx_v_reader_handle->_must_close; __pyx_v_was_armed = __pyx_t_4;
+0792: reader_handle._must_close = True
__pyx_v_reader_handle->_must_close = 1;
0793:
+0794: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L21;
}
__pyx_L21:;
}
}
+0795: cursor = qwp_reader_query_execute(&query, &err)
__pyx_v_cursor = qwp_reader_query_execute((&__pyx_v_query), (&__pyx_v_err));
}
0796:
+0797: if cursor == NULL:
__pyx_t_4 = (__pyx_v_cursor == NULL);
if (__pyx_t_4) {
/* … */
}
0798: # _query_execute consumes the query (nulls *query_inout); the
0799: # defensive free is a no-op on the consumed handle.
+0800: qwp_reader_query_free(query)
qwp_reader_query_free(__pyx_v_query);
+0801: if err == NULL:
__pyx_t_4 = (__pyx_v_err == NULL);
if (unlikely(__pyx_t_4)) {
/* … */
}
+0802: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 802, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+0803: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_qwp_reader_query_execute_returne}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 802, __pyx_L1_error)
0804: 'qwp_reader_query_execute returned NULL without setting err')
+0805: if _execute_failed_before_send(err):
__pyx_t_4 = __pyx_f_7questdb_7_client__execute_failed_before_send(__pyx_v_err);
if (__pyx_t_4) {
/* … */
}
0806: # Nothing reached the socket: the connection is exactly as
0807: # healthy as before this call, so hand back whatever state the
0808: # previous query left rather than dropping it.
+0809: reader_handle._must_close = was_armed
__pyx_v_reader_handle->_must_close = __pyx_v_was_armed;
+0810: raise _reader_err_to_py(err)
__pyx_t_9 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 810, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_Raise(__pyx_t_9, 0, 0, 0); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 810, __pyx_L1_error)
0811:
+0812: handle._attach(cursor, reader_handle, owns_reader)
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_attach(__pyx_v_handle, __pyx_v_cursor, __pyx_v_reader_handle, __pyx_v_owns_reader);
+0813: return handle
{
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_handle);
__pyx_r = __pyx_v_handle;
}
__Pyx_XDECREF((PyObject *)__pyx_temp);
}
goto __pyx_L0;
0814:
0815:
+0816: cdef enum:
enum {
+0817: _ARROW_METADATA_CLONE_CAP = 1 << 20
__pyx_e_7questdb_7_client__ARROW_METADATA_CLONE_CAP = (1 << 20) };
0818:
0819:
+0820: cdef size_t _arrow_metadata_byte_len(
static size_t __pyx_f_7questdb_7_client__arrow_metadata_byte_len(char const *__pyx_v_md, size_t __pyx_v_max_len, int32_t *__pyx_v_kept_n) {
int32_t __pyx_v_n;
int32_t __pyx_v_klen;
int32_t __pyx_v_vlen;
size_t __pyx_v_pos;
int32_t __pyx_v_i;
size_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0821: const char* md, size_t max_len, int32_t* kept_n) noexcept:
0822: cdef int32_t n
0823: cdef int32_t klen
0824: cdef int32_t vlen
0825: cdef size_t pos
0826: cdef int32_t i
+0827: kept_n[0] = 0
(__pyx_v_kept_n[0]) = 0;
+0828: if max_len < sizeof(int32_t):
__pyx_t_1 = (__pyx_v_max_len < (sizeof(int32_t)));
if (__pyx_t_1) {
/* … */
}
+0829: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+0830: memcpy(&n, md, sizeof(int32_t))
(void)(memcpy((&__pyx_v_n), __pyx_v_md, (sizeof(int32_t))));
+0831: pos = sizeof(int32_t)
__pyx_v_pos = (sizeof(int32_t));
+0832: if n <= 0:
__pyx_t_1 = (__pyx_v_n <= 0);
if (__pyx_t_1) {
/* … */
}
+0833: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
+0834: for i in range(n):
__pyx_t_2 = __pyx_v_n;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+0835: if max_len - pos < sizeof(int32_t):
__pyx_t_1 = ((__pyx_v_max_len - __pyx_v_pos) < (sizeof(int32_t)));
if (__pyx_t_1) {
/* … */
}
+0836: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
+0837: memcpy(&klen, md + pos, sizeof(int32_t))
(void)(memcpy((&__pyx_v_klen), (__pyx_v_md + __pyx_v_pos), (sizeof(int32_t))));
+0838: if klen < 0 or <size_t>klen > max_len - pos - sizeof(int32_t):
__pyx_t_5 = (__pyx_v_klen < 0);
if (!__pyx_t_5) {
} else {
__pyx_t_1 = __pyx_t_5;
goto __pyx_L9_bool_binop_done;
}
__pyx_t_5 = (((size_t)__pyx_v_klen) > ((__pyx_v_max_len - __pyx_v_pos) - (sizeof(int32_t))));
__pyx_t_1 = __pyx_t_5;
__pyx_L9_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+0839: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
+0840: pos += sizeof(int32_t) + <size_t>klen
__pyx_v_pos = (__pyx_v_pos + ((sizeof(int32_t)) + ((size_t)__pyx_v_klen)));
+0841: if max_len - pos < sizeof(int32_t):
__pyx_t_1 = ((__pyx_v_max_len - __pyx_v_pos) < (sizeof(int32_t)));
if (__pyx_t_1) {
/* … */
}
+0842: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
+0843: memcpy(&vlen, md + pos, sizeof(int32_t))
(void)(memcpy((&__pyx_v_vlen), (__pyx_v_md + __pyx_v_pos), (sizeof(int32_t))));
+0844: if vlen < 0 or <size_t>vlen > max_len - pos - sizeof(int32_t):
__pyx_t_5 = (__pyx_v_vlen < 0);
if (!__pyx_t_5) {
} else {
__pyx_t_1 = __pyx_t_5;
goto __pyx_L13_bool_binop_done;
}
__pyx_t_5 = (((size_t)__pyx_v_vlen) > ((__pyx_v_max_len - __pyx_v_pos) - (sizeof(int32_t))));
__pyx_t_1 = __pyx_t_5;
__pyx_L13_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+0845: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
+0846: pos += sizeof(int32_t) + <size_t>vlen
__pyx_v_pos = (__pyx_v_pos + ((sizeof(int32_t)) + ((size_t)__pyx_v_vlen)));
+0847: kept_n[0] = i + 1
(__pyx_v_kept_n[0]) = (__pyx_v_i + 1); }
+0848: return pos
{
__pyx_r = __pyx_v_pos;
}
goto __pyx_L0;
0849:
0850:
+0851: cdef void _arrow_schema_clone_release(ArrowSchema* schema) noexcept:
static void __pyx_f_7questdb_7_client__arrow_schema_clone_release(struct ArrowSchema *__pyx_v_schema) {
int64_t __pyx_v_i;
/* … */
/* function exit code */
}
0852: cdef int64_t i
+0853: if schema.format != NULL:
__pyx_t_1 = (__pyx_v_schema->format != NULL);
if (__pyx_t_1) {
/* … */
}
+0854: free(<void*>schema.format)
free(((void *)__pyx_v_schema->format));
+0855: schema.format = NULL
__pyx_v_schema->format = NULL;
+0856: if schema.name != NULL:
__pyx_t_1 = (__pyx_v_schema->name != NULL);
if (__pyx_t_1) {
/* … */
}
+0857: free(<void*>schema.name)
free(((void *)__pyx_v_schema->name));
+0858: schema.name = NULL
__pyx_v_schema->name = NULL;
+0859: if schema.metadata != NULL:
__pyx_t_1 = (__pyx_v_schema->metadata != NULL);
if (__pyx_t_1) {
/* … */
}
+0860: free(<void*>schema.metadata)
free(((void *)__pyx_v_schema->metadata));
+0861: schema.metadata = NULL
__pyx_v_schema->metadata = NULL;
+0862: if schema.children != NULL:
__pyx_t_1 = (__pyx_v_schema->children != NULL);
if (__pyx_t_1) {
/* … */
}
+0863: for i in range(schema.n_children):
__pyx_t_2 = __pyx_v_schema->n_children;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+0864: if schema.children[i] != NULL:
__pyx_t_1 = ((__pyx_v_schema->children[__pyx_v_i]) != NULL);
if (__pyx_t_1) {
/* … */
}
}
+0865: if schema.children[i].release != NULL:
__pyx_t_1 = ((__pyx_v_schema->children[__pyx_v_i])->release != NULL);
if (__pyx_t_1) {
/* … */
}
+0866: schema.children[i].release(schema.children[i])
(__pyx_v_schema->children[__pyx_v_i])->release((__pyx_v_schema->children[__pyx_v_i]));
+0867: free(schema.children[i])
free((__pyx_v_schema->children[__pyx_v_i]));
+0868: free(schema.children)
free(__pyx_v_schema->children);
+0869: schema.children = NULL
__pyx_v_schema->children = NULL;
+0870: if schema.dictionary != NULL:
__pyx_t_1 = (__pyx_v_schema->dictionary != NULL);
if (__pyx_t_1) {
/* … */
}
+0871: if schema.dictionary.release != NULL:
__pyx_t_1 = (__pyx_v_schema->dictionary->release != NULL);
if (__pyx_t_1) {
/* … */
}
+0872: schema.dictionary.release(schema.dictionary)
__pyx_v_schema->dictionary->release(__pyx_v_schema->dictionary);
+0873: free(schema.dictionary)
free(__pyx_v_schema->dictionary);
+0874: schema.dictionary = NULL
__pyx_v_schema->dictionary = NULL;
+0875: schema.release = NULL
__pyx_v_schema->release = NULL;
0876:
0877:
+0878: cdef int _arrow_schema_deep_clone(const ArrowSchema* src, ArrowSchema* dst) noexcept:
static int __pyx_f_7questdb_7_client__arrow_schema_deep_clone(struct ArrowSchema const *__pyx_v_src, struct ArrowSchema *__pyx_v_dst) {
size_t __pyx_v_format_len;
size_t __pyx_v_name_len;
size_t __pyx_v_metadata_len;
int32_t __pyx_v_kept_n;
int64_t __pyx_v_i;
struct ArrowSchema *__pyx_v_child;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
0879: cdef size_t format_len
0880: cdef size_t name_len
0881: cdef size_t metadata_len
0882: cdef int32_t kept_n
0883: cdef int64_t i
0884: cdef ArrowSchema* child
+0885: memset(dst, 0, sizeof(ArrowSchema))
(void)(memset(__pyx_v_dst, 0, (sizeof(struct ArrowSchema))));
+0886: dst.flags = src.flags
__pyx_t_1 = __pyx_v_src->flags; __pyx_v_dst->flags = __pyx_t_1;
+0887: dst.n_children = src.n_children
__pyx_t_1 = __pyx_v_src->n_children; __pyx_v_dst->n_children = __pyx_t_1;
+0888: if src.format != NULL:
__pyx_t_2 = (__pyx_v_src->format != NULL);
if (__pyx_t_2) {
/* … */
}
+0889: format_len = strlen(src.format)
__pyx_v_format_len = strlen(__pyx_v_src->format);
+0890: dst.format = <const char*>malloc(format_len + 1)
__pyx_v_dst->format = ((char const *)malloc((__pyx_v_format_len + 1)));
+0891: if dst.format == NULL:
__pyx_t_2 = (__pyx_v_dst->format == NULL);
if (__pyx_t_2) {
/* … */
}
+0892: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0893: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0894: memcpy(<void*>dst.format, src.format, format_len + 1)
(void)(memcpy(((void *)__pyx_v_dst->format), __pyx_v_src->format, (__pyx_v_format_len + 1)));
+0895: if src.name != NULL:
__pyx_t_2 = (__pyx_v_src->name != NULL);
if (__pyx_t_2) {
/* … */
}
+0896: name_len = strlen(src.name)
__pyx_v_name_len = strlen(__pyx_v_src->name);
+0897: dst.name = <const char*>malloc(name_len + 1)
__pyx_v_dst->name = ((char const *)malloc((__pyx_v_name_len + 1)));
+0898: if dst.name == NULL:
__pyx_t_2 = (__pyx_v_dst->name == NULL);
if (__pyx_t_2) {
/* … */
}
+0899: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0900: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0901: memcpy(<void*>dst.name, src.name, name_len + 1)
(void)(memcpy(((void *)__pyx_v_dst->name), __pyx_v_src->name, (__pyx_v_name_len + 1)));
+0902: if src.metadata != NULL:
__pyx_t_2 = (__pyx_v_src->metadata != NULL);
if (__pyx_t_2) {
/* … */
}
+0903: metadata_len = _arrow_metadata_byte_len(
__pyx_v_metadata_len = __pyx_f_7questdb_7_client__arrow_metadata_byte_len(__pyx_v_src->metadata, __pyx_e_7questdb_7_client__ARROW_METADATA_CLONE_CAP, (&__pyx_v_kept_n));
0904: src.metadata, _ARROW_METADATA_CLONE_CAP, &kept_n)
+0905: dst.metadata = <const char*>malloc(metadata_len)
__pyx_v_dst->metadata = ((char const *)malloc(__pyx_v_metadata_len));
+0906: if dst.metadata == NULL:
__pyx_t_2 = (__pyx_v_dst->metadata == NULL);
if (__pyx_t_2) {
/* … */
}
+0907: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0908: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0909: memcpy(<void*>dst.metadata, src.metadata, metadata_len)
(void)(memcpy(((void *)__pyx_v_dst->metadata), __pyx_v_src->metadata, __pyx_v_metadata_len));
0910: # Keep the cloned block self-consistent: its leading key/value count
0911: # must never exceed the entries actually copied, or a downstream
0912: # consumer would read past the allocation.
+0913: memcpy(<void*>dst.metadata, &kept_n, sizeof(int32_t))
(void)(memcpy(((void *)__pyx_v_dst->metadata), (&__pyx_v_kept_n), (sizeof(int32_t))));
+0914: if src.n_children > 0:
__pyx_t_2 = (__pyx_v_src->n_children > 0);
if (__pyx_t_2) {
/* … */
}
+0915: dst.children = <ArrowSchema**>calloc(
__pyx_v_dst->children = ((struct ArrowSchema **)calloc(((size_t)__pyx_v_src->n_children), (sizeof(struct ArrowSchema *))));
0916: <size_t>src.n_children, sizeof(ArrowSchema*))
+0917: if dst.children == NULL:
__pyx_t_2 = (__pyx_v_dst->children == NULL);
if (__pyx_t_2) {
/* … */
}
+0918: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0919: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0920: for i in range(src.n_children):
__pyx_t_1 = __pyx_v_src->n_children;
__pyx_t_3 = __pyx_t_1;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+0921: child = <ArrowSchema*>malloc(sizeof(ArrowSchema))
__pyx_v_child = ((struct ArrowSchema *)malloc((sizeof(struct ArrowSchema))));
+0922: if child == NULL:
__pyx_t_2 = (__pyx_v_child == NULL);
if (__pyx_t_2) {
/* … */
}
+0923: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0924: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0925: dst.children[i] = child
(__pyx_v_dst->children[__pyx_v_i]) = __pyx_v_child;
+0926: if _arrow_schema_deep_clone(src.children[i], child) != 0:
__pyx_t_2 = (__pyx_f_7questdb_7_client__arrow_schema_deep_clone((__pyx_v_src->children[__pyx_v_i]), __pyx_v_child) != 0);
if (__pyx_t_2) {
/* … */
}
}
+0927: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0928: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0929: if src.dictionary != NULL:
__pyx_t_2 = (__pyx_v_src->dictionary != NULL);
if (__pyx_t_2) {
/* … */
}
+0930: dst.dictionary = <ArrowSchema*>malloc(sizeof(ArrowSchema))
__pyx_v_dst->dictionary = ((struct ArrowSchema *)malloc((sizeof(struct ArrowSchema))));
+0931: if dst.dictionary == NULL:
__pyx_t_2 = (__pyx_v_dst->dictionary == NULL);
if (__pyx_t_2) {
/* … */
}
+0932: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0933: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0934: if _arrow_schema_deep_clone(src.dictionary, dst.dictionary) != 0:
__pyx_t_2 = (__pyx_f_7questdb_7_client__arrow_schema_deep_clone(__pyx_v_src->dictionary, __pyx_v_dst->dictionary) != 0);
if (__pyx_t_2) {
/* … */
}
+0935: _arrow_schema_clone_release(dst)
__pyx_f_7questdb_7_client__arrow_schema_clone_release(__pyx_v_dst);
+0936: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+0937: dst.release = _arrow_schema_clone_release
__pyx_v_dst->release = __pyx_f_7questdb_7_client__arrow_schema_clone_release;
+0938: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
0939:
0940:
+0941: cdef class _QueryStreamProducer:
struct __pyx_obj_7questdb_7_client__QueryStreamProducer {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *__pyx_vtab;
struct __pyx_obj_7questdb_7_client__CursorHandle *cursor_handle;
struct ArrowSchema cached_schema;
struct ArrowArray cached_array;
int has_cached_schema;
int has_cached_array;
int exhausted;
int delivered;
char *last_error;
PyObject *last_exc;
int seen_seq;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer {
void (*_free_cached)(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *);
};
static struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *__pyx_vtabptr_7questdb_7_client__QueryStreamProducer;
0942: """Holder for the Rust-cursor-backed ArrowArrayStream.
0943:
0944: The Arrow stream struct itself is owned by the enclosing PyCapsule;
0945: this object owns just the cached `(schema, array)` and the
0946: `_CursorHandle` keep-alive. Refcount is bumped on capsule creation
0947: and dropped by the stream's release callback. Before that, a
0948: producer from `QueryResult.__arrow_c_schema__` is owned by the
0949: result. The cursor is freed when the stream reaches its end, or at
0950: release.
0951: """
0952: cdef _CursorHandle cursor_handle
0953: cdef ArrowSchema cached_schema
0954: cdef ArrowArray cached_array
0955: cdef bint has_cached_schema
0956: cdef bint has_cached_array
0957: cdef bint exhausted
0958: cdef bint delivered
0959: cdef char* last_error
0960: # The exception behind `last_error`, if there is one, so that a
0961: # Python-level caller (`QueryResult.__arrow_c_schema__`) can raise it
0962: # with its type and code.
0963: cdef object last_exc
0964: cdef int seen_seq
0965:
+0966: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_20_QueryStreamProducer_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_20_QueryStreamProducer_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_20_QueryStreamProducer___cinit__(((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_20_QueryStreamProducer___cinit__(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0967: self.cursor_handle = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF((PyObject *)__pyx_v_self->cursor_handle); __Pyx_DECREF((PyObject *)__pyx_v_self->cursor_handle); __pyx_v_self->cursor_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)Py_None);
+0968: self.has_cached_schema = False
__pyx_v_self->has_cached_schema = 0;
+0969: self.has_cached_array = False
__pyx_v_self->has_cached_array = 0;
+0970: self.exhausted = False
__pyx_v_self->exhausted = 0;
+0971: self.delivered = False
__pyx_v_self->delivered = 0;
+0972: self.last_error = NULL
__pyx_v_self->last_error = NULL;
+0973: self.last_exc = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->last_exc); __Pyx_DECREF(__pyx_v_self->last_exc); __pyx_v_self->last_exc = Py_None;
+0974: self.seen_seq = 0
__pyx_v_self->seen_seq = 0;
+0975: memset(&self.cached_schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_self->cached_schema), 0, (sizeof(struct ArrowSchema))));
+0976: memset(&self.cached_array, 0, sizeof(ArrowArray))
(void)(memset((&__pyx_v_self->cached_array), 0, (sizeof(struct ArrowArray))));
0977:
+0978: cdef void _free_cached(self) noexcept:
static void __pyx_f_7questdb_7_client_20_QueryStreamProducer__free_cached(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_self) {
/* … */
/* function exit code */
}
+0979: if self.has_cached_schema:
if (__pyx_v_self->has_cached_schema) {
/* … */
}
+0980: if self.cached_schema.release != NULL:
__pyx_t_1 = (__pyx_v_self->cached_schema.release != NULL);
if (__pyx_t_1) {
/* … */
}
+0981: self.cached_schema.release(&self.cached_schema)
__pyx_v_self->cached_schema.release((&__pyx_v_self->cached_schema));
+0982: self.has_cached_schema = False
__pyx_v_self->has_cached_schema = 0;
+0983: if self.has_cached_array:
if (__pyx_v_self->has_cached_array) {
/* … */
}
+0984: if self.cached_array.release != NULL:
__pyx_t_1 = (__pyx_v_self->cached_array.release != NULL);
if (__pyx_t_1) {
/* … */
}
+0985: self.cached_array.release(&self.cached_array)
__pyx_v_self->cached_array.release((&__pyx_v_self->cached_array));
+0986: self.has_cached_array = False
__pyx_v_self->has_cached_array = 0;
0987:
+0988: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_20_QueryStreamProducer_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_20_QueryStreamProducer_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_20_QueryStreamProducer_2__dealloc__(((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_20_QueryStreamProducer_2__dealloc__(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_self) {
/* … */
/* function exit code */
}
+0989: self._free_cached()
((struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *)__pyx_v_self->__pyx_vtab)->_free_cached(__pyx_v_self);
+0990: if self.last_error != NULL:
__pyx_t_1 = (__pyx_v_self->last_error != NULL);
if (__pyx_t_1) {
/* … */
}
+0991: free(self.last_error)
free(__pyx_v_self->last_error);
+0992: self.last_error = NULL
__pyx_v_self->last_error = NULL;
0993:
0994:
+0995: cdef void _qs_set_error(
static void __pyx_f_7questdb_7_client__qs_set_error(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod, char const *__pyx_v_msg, size_t __pyx_v_msg_len, struct __pyx_opt_args_7questdb_7_client__qs_set_error *__pyx_optional_args) {
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_WriteUnraisable("questdb._client._qs_set_error", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
/* … */
struct __pyx_opt_args_7questdb_7_client__qs_set_error {
int __pyx_n;
PyObject *exc;
};
0996: _QueryStreamProducer prod, const char* msg, size_t msg_len,
+0997: object exc=None) noexcept:
PyObject *__pyx_v_exc = ((PyObject *)Py_None);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_exc = __pyx_optional_args->exc;
}
}
+0998: if exc is not None:
__pyx_t_1 = (__pyx_v_exc != Py_None);
if (__pyx_t_1) {
/* … */
}
0999: # A raised `exc` can reach the consumer's frames through its
1000: # traceback and context. If a frame holds the stream, that is a
1001: # cycle through the stream's C reference to `prod`, which the GC
1002: # cannot see: the cursor and its connection would never be freed.
+1003: exc.__traceback__ = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_traceback, Py_None) < (0)) __PYX_ERR(1, 1003, __pyx_L1_error)
+1004: exc.__context__ = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_context, Py_None) < (0)) __PYX_ERR(1, 1004, __pyx_L1_error)
+1005: exc.__cause__ = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_cause, Py_None) < (0)) __PYX_ERR(1, 1005, __pyx_L1_error)
+1006: prod.last_exc = exc
__Pyx_INCREF(__pyx_v_exc); __Pyx_GIVEREF(__pyx_v_exc); __Pyx_GOTREF(__pyx_v_prod->last_exc); __Pyx_DECREF(__pyx_v_prod->last_exc); __pyx_v_prod->last_exc = __pyx_v_exc;
+1007: if prod.last_error != NULL:
__pyx_t_1 = (__pyx_v_prod->last_error != NULL);
if (__pyx_t_1) {
/* … */
}
+1008: free(prod.last_error)
free(__pyx_v_prod->last_error);
+1009: prod.last_error = NULL
__pyx_v_prod->last_error = NULL;
+1010: prod.last_error = <char*>malloc(msg_len + 1)
__pyx_v_prod->last_error = ((char *)malloc((__pyx_v_msg_len + 1)));
+1011: if prod.last_error == NULL:
__pyx_t_1 = (__pyx_v_prod->last_error == NULL);
if (__pyx_t_1) {
/* … */
}
+1012: return
{
}
goto __pyx_L0;
+1013: memcpy(prod.last_error, msg, msg_len)
(void)(memcpy(__pyx_v_prod->last_error, __pyx_v_msg, __pyx_v_msg_len));
+1014: prod.last_error[msg_len] = 0
(__pyx_v_prod->last_error[__pyx_v_msg_len]) = 0;
1015:
1016:
+1017: cdef int _qs_pull(_QueryStreamProducer prod) noexcept with gil:
static int __pyx_f_7questdb_7_client__qs_pull(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod) {
PyObject *__pyx_v_full = 0;
PyObject *__pyx_v_e = NULL;
int __pyx_r;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
__Pyx_INCREF((PyObject *)__pyx_v_prod);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_WriteUnraisable("questdb._client._qs_pull", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_full);
__Pyx_XDECREF(__pyx_v_e);
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
return __pyx_r;
}
1018: cdef bytes full
+1019: try:
{
/*try:*/ {
/* … */
}
__pyx_L3_error:;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L7_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
__pyx_L6_except_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
}
+1020: return _qs_pull_impl(prod)
__pyx_t_4 = __pyx_f_7questdb_7_client__qs_pull_impl(__pyx_v_prod); if (unlikely(__pyx_t_4 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1020, __pyx_L3_error) { __pyx_r = __pyx_t_4; } goto __pyx_L7_try_return;
+1021: except BaseException as e:
__pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_4) { __Pyx_AddTraceback("questdb._client._qs_pull", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1021, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_v_e = __pyx_t_6; /*try:*/ { /* … */ /*finally:*/ { __pyx_L14_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if ( unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __pyx_t_4 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0; } __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21); __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_ErrRestore(__pyx_t_10, __pyx_t_9, __pyx_t_8); __pyx_t_10 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L5_except_error; } __pyx_L13_return: { __pyx_t_17 = __pyx_r; __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0; __pyx_r = __pyx_t_17; goto __pyx_L6_except_return; } } } goto __pyx_L5_except_error;
+1022: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L23_try_end;
__pyx_L16_error:;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
/* … */
__pyx_L18_except_error:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
goto __pyx_L14_error;
__pyx_L17_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
__pyx_L23_try_end:;
}
+1023: full = ('arrow batch pull failed: ' + repr(e)).encode('utf-8')
__pyx_t_11 = PyObject_Repr(__pyx_v_e); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1023, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_kp_u_arrow_batch_pull_failed, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1023, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyUnicode_AsUTF8String(((PyObject*)__pyx_t_12)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1023, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_v_full = ((PyObject*)__pyx_t_11); __pyx_t_11 = 0;
+1024: _qs_set_error(prod, full, <size_t>len(full), e)
__pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_full); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(1, 1024, __pyx_L16_error) __pyx_t_14 = __Pyx_PyBytes_GET_SIZE(__pyx_v_full); if (unlikely(__pyx_t_14 == ((Py_ssize_t)-1))) __PYX_ERR(1, 1024, __pyx_L16_error) __pyx_t_15.__pyx_n = 1; __pyx_t_15.exc = __pyx_v_e; __pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_t_13, ((size_t)__pyx_t_14), &__pyx_t_15);
+1025: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._qs_pull", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_16) < 0) __PYX_ERR(1, 1025, __pyx_L18_except_error)
__Pyx_XGOTREF(__pyx_t_11);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_16);
+1026: _qs_set_error(prod, b'arrow batch pull failed', 23)
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_k_arrow_batch_pull_failed_2, 23, NULL);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
goto __pyx_L17_exception_handled;
}
+1027: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1028: return -1
{
__pyx_r = -1;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L13_return;
}
1029:
1030:
+1031: cdef int _qs_pull_impl(_QueryStreamProducer prod):
static int __pyx_f_7questdb_7_client__qs_pull_impl(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod) {
struct qwp_reader_cursor *__pyx_v_cursor;
struct ArrowArray __pyx_v_local_array;
struct ArrowSchema __pyx_v_local_schema;
questdb_error *__pyx_v_err;
enum qwp_reader_arrow_batch_result __pyx_v_result;
PyObject *__pyx_v_full = 0;
PyObject *__pyx_v_exc = 0;
int __pyx_v_current_seq;
PyObject *__pyx_v_fallback = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("questdb._client._qs_pull_impl", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_full);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XDECREF(__pyx_v_fallback);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1032: cdef qwp_reader_cursor* cursor
1033: cdef ArrowArray local_array
1034: cdef ArrowSchema local_schema
+1035: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1036: cdef qwp_reader_arrow_batch_result result
1037: cdef bytes full
1038: cdef object exc
1039: cdef int current_seq
+1040: if prod.exhausted:
if (__pyx_v_prod->exhausted) {
/* … */
}
1041: # A prior error left a diagnostic pinned; keep surfacing it rather
1042: # than reporting a clean end-of-stream to a consumer that pulls again.
+1043: if prod.last_error != NULL:
__pyx_t_1 = (__pyx_v_prod->last_error != NULL);
if (__pyx_t_1) {
/* … */
}
+1044: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+1045: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+1046: if prod.cursor_handle is None:
__pyx_t_1 = (((PyObject *)__pyx_v_prod->cursor_handle) == Py_None);
if (__pyx_t_1) {
/* … */
}
+1047: _qs_set_error(prod, b'cursor is closed', 16)
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_k_cursor_is_closed, 16, NULL);
+1048: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1049: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+1050: memset(&local_array, 0, sizeof(ArrowArray))
(void)(memset((&__pyx_v_local_array), 0, (sizeof(struct ArrowArray))));
+1051: memset(&local_schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_local_schema), 0, (sizeof(struct ArrowSchema))));
+1052: with prod.cursor_handle._lock:
/*with:*/ {
__pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_prod->cursor_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_prod->cursor_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1052, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1052, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
goto __pyx_L15_try_end;
__pyx_L14_try_return:;
goto __pyx_L7_return;
__pyx_L15_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_2) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L9;
}
__pyx_L7_return: {
__pyx_t_11 = __pyx_r;
if (__pyx_t_2) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1052, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__pyx_r = __pyx_t_11;
goto __pyx_L0;
}
__pyx_L9:;
}
goto __pyx_L23;
__pyx_L6_error:;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L1_error;
__pyx_L23:;
}
+1053: cursor = prod.cursor_handle._cursor
__pyx_t_10 = __pyx_v_prod->cursor_handle->_cursor;
__pyx_v_cursor = __pyx_t_10;
+1054: if cursor == NULL:
__pyx_t_1 = (__pyx_v_cursor == NULL);
if (__pyx_t_1) {
/* … */
}
+1055: _qs_set_error(prod, b'cursor is closed', 16)
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_k_cursor_is_closed, 16, NULL);
+1056: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1057: return -1
{
__pyx_r = -1;
}
goto __pyx_L14_try_return;
+1058: prod.cursor_handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_pin(__pyx_v_prod->cursor_handle);
+1059: try:
/*try:*/ {
+1060: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L22;
}
__pyx_L22:;
}
}
}
+1061: result = qwp_reader_cursor_next_arrow_batch_compact(
__pyx_v_result = qwp_reader_cursor_next_arrow_batch_compact(__pyx_v_cursor, (&__pyx_v_local_array), (&__pyx_v_local_schema), (&__pyx_v_err));
}
1062: cursor, &local_array, &local_schema, &err)
1063: finally:
+1064: prod.cursor_handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_unpin(__pyx_v_prod->cursor_handle);
goto __pyx_L19;
}
__pyx_L19:;
}
+1065: if result == qwp_reader_arrow_batch_ok:
__pyx_t_1 = (__pyx_v_result == qwp_reader_arrow_batch_ok);
if (__pyx_t_1) {
/* … */
}
+1066: current_seq = prod.cursor_handle._reset_sequence()
__pyx_t_11 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_reset_sequence(__pyx_v_prod->cursor_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1066, __pyx_L1_error)
__pyx_v_current_seq = __pyx_t_11;
+1067: if current_seq != prod.seen_seq:
__pyx_t_1 = (__pyx_v_current_seq != __pyx_v_prod->seen_seq);
if (__pyx_t_1) {
/* … */
}
+1068: if prod.delivered:
if (__pyx_v_prod->delivered) {
/* … */
}
1069: # Mid-query failover replayed from batch-0 after batches
1070: # were already handed to the consumer; this one would
1071: # duplicate them. Streaming can't discard it — surface a
1072: # clean error (tagged like other capsule errors) and stop.
+1073: if local_array.release != NULL:
__pyx_t_1 = (__pyx_v_local_array.release != NULL);
if (__pyx_t_1) {
/* … */
}
+1074: local_array.release(&local_array)
__pyx_v_local_array.release((&__pyx_v_local_array));
+1075: if local_schema.release != NULL:
__pyx_t_1 = (__pyx_v_local_schema.release != NULL);
if (__pyx_t_1) {
/* … */
}
+1076: local_schema.release(&local_schema)
__pyx_v_local_schema.release((&__pyx_v_local_schema));
+1077: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L34_try_end;
__pyx_L29_error:;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L31_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_9, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L30_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_9, __pyx_t_8);
__pyx_L34_try_end:;
}
+1078: exc = QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1078, __pyx_L29_error)
__Pyx_GOTREF(__pyx_t_4);
+1079: QuestDBErrorCode.FailoverWouldDuplicate,
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1079, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1079, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_13, __pyx_mstate_global->__pyx_kp_u_mid_query_failover_would_duplica}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1078, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_exc = __pyx_t_3; __pyx_t_3 = 0;
1080: 'mid-query failover would duplicate already-delivered '
1081: 'batches; re-issue the query')
+1082: full = _qs_error_text(exc)
__pyx_t_3 = __pyx_f_7questdb_7_client__qs_error_text(__pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1082, __pyx_L29_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_full = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+1083: _qs_set_error(prod, full, <size_t>len(full), exc)
if (unlikely(__pyx_v_full == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 1083, __pyx_L29_error)
}
__pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_full); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(1, 1083, __pyx_L29_error)
if (unlikely(__pyx_v_full == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 1083, __pyx_L29_error)
}
__pyx_t_15 = __Pyx_PyBytes_GET_SIZE(__pyx_v_full); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(1, 1083, __pyx_L29_error)
__pyx_t_16.__pyx_n = 1;
__pyx_t_16.exc = __pyx_v_exc;
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_t_14, ((size_t)__pyx_t_15), &__pyx_t_16);
+1084: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._qs_pull_impl", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_13) < 0) __PYX_ERR(1, 1084, __pyx_L31_except_error)
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_13);
1085: fallback = (
+1086: b'[FailoverWouldDuplicate] mid-query failover would '
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_FailoverWouldDuplicate_mid_quer);
__pyx_v_fallback = __pyx_mstate_global->__pyx_kp_b_FailoverWouldDuplicate_mid_quer;
1087: b'duplicate already-delivered batches; re-issue the query')
+1088: _qs_set_error(prod, fallback, <size_t>len(fallback))
__pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_fallback); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(1, 1088, __pyx_L31_except_error) __pyx_t_15 = __Pyx_PyBytes_GET_SIZE(__pyx_v_fallback); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(1, 1088, __pyx_L31_except_error) __pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_t_14, ((size_t)__pyx_t_15), NULL); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L30_exception_handled; }
+1089: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1090: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
1091: # Pre-delivery failover: nothing reached the consumer yet, so
1092: # re-pin to the replayed stream and restart from this batch-0.
+1093: prod.seen_seq = current_seq
__pyx_v_prod->seen_seq = __pyx_v_current_seq;
+1094: prod._free_cached()
((struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *)__pyx_v_prod->__pyx_vtab)->_free_cached(__pyx_v_prod);
+1095: if not prod.has_cached_schema:
__pyx_t_1 = (!__pyx_v_prod->has_cached_schema);
if (__pyx_t_1) {
/* … */
goto __pyx_L37;
}
+1096: memcpy(&prod.cached_schema, &local_schema, sizeof(ArrowSchema))
(void)(memcpy((&__pyx_v_prod->cached_schema), (&__pyx_v_local_schema), (sizeof(struct ArrowSchema))));
+1097: prod.has_cached_schema = True
__pyx_v_prod->has_cached_schema = 1;
1098: else:
+1099: if local_schema.release != NULL:
/*else*/ {
__pyx_t_1 = (__pyx_v_local_schema.release != NULL);
if (__pyx_t_1) {
/* … */
}
}
__pyx_L37:;
+1100: local_schema.release(&local_schema)
__pyx_v_local_schema.release((&__pyx_v_local_schema));
+1101: if prod.has_cached_array and prod.cached_array.release != NULL:
if (__pyx_v_prod->has_cached_array) {
} else {
__pyx_t_1 = __pyx_v_prod->has_cached_array;
goto __pyx_L40_bool_binop_done;
}
__pyx_t_17 = (__pyx_v_prod->cached_array.release != NULL);
__pyx_t_1 = __pyx_t_17;
__pyx_L40_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1102: prod.cached_array.release(&prod.cached_array)
__pyx_v_prod->cached_array.release((&__pyx_v_prod->cached_array));
+1103: memcpy(&prod.cached_array, &local_array, sizeof(ArrowArray))
(void)(memcpy((&__pyx_v_prod->cached_array), (&__pyx_v_local_array), (sizeof(struct ArrowArray))));
+1104: prod.has_cached_array = True
__pyx_v_prod->has_cached_array = 1;
+1105: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+1106: if result == qwp_reader_arrow_batch_end:
__pyx_t_1 = (__pyx_v_result == qwp_reader_arrow_batch_end);
if (__pyx_t_1) {
/* … */
}
+1107: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1108: try:
/*try:*/ {
+1109: _mark_reader_drained(prod.cursor_handle)
__pyx_t_13 = ((PyObject *)__pyx_v_prod->cursor_handle);
__Pyx_INCREF(__pyx_t_13);
__pyx_t_18 = __pyx_f_7questdb_7_client__mark_reader_drained(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_13)); if (unlikely(__pyx_t_18 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1109, __pyx_L44_error)
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
}
1110: finally:
1111: # Free the cursor now, not at stream release: a pending
1112: # `__arrow_c_schema__` producer of a non-SELECT must not keep
1113: # a `PooledReader` lease busy.
+1114: prod.cursor_handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_free(__pyx_v_prod->cursor_handle);
goto __pyx_L45;
}
__pyx_L44_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_21, &__pyx_t_22);
if ( unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_22);
__pyx_t_11 = __pyx_lineno; __pyx_t_19 = __pyx_clineno; __pyx_t_20 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_free(__pyx_v_prod->cursor_handle);
}
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_21, __pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_2);
__pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_19; __pyx_filename = __pyx_t_20;
goto __pyx_L1_error;
}
__pyx_L45:;
}
+1115: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+1116: if err != NULL:
__pyx_t_1 = (__pyx_v_err != NULL);
if (__pyx_t_1) {
/* … */
goto __pyx_L48;
}
1117: # `_reader_err_to_py` frees `err`, also when it raises.
+1118: exc = _reader_err_to_py(err)
__pyx_t_13 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_v_exc = __pyx_t_13; __pyx_t_13 = 0;
+1119: err = NULL
__pyx_v_err = NULL;
+1120: full = _qs_error_text(exc)
__pyx_t_13 = __pyx_f_7questdb_7_client__qs_error_text(__pyx_v_exc); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_v_full = ((PyObject*)__pyx_t_13); __pyx_t_13 = 0;
+1121: _qs_set_error(prod, full, <size_t>len(full), exc)
if (unlikely(__pyx_v_full == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 1121, __pyx_L1_error)
}
__pyx_t_14 = __Pyx_PyBytes_AsString(__pyx_v_full); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(1, 1121, __pyx_L1_error)
if (unlikely(__pyx_v_full == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 1121, __pyx_L1_error)
}
__pyx_t_15 = __Pyx_PyBytes_GET_SIZE(__pyx_v_full); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(1, 1121, __pyx_L1_error)
__pyx_t_16.__pyx_n = 1;
__pyx_t_16.exc = __pyx_v_exc;
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_t_14, ((size_t)__pyx_t_15), &__pyx_t_16);
1122: else:
+1123: _qs_set_error(
/*else*/ {
/* … */
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_k_arrow_batch_fetch_error_without, 39, NULL);
}
__pyx_L48:;
1124: prod,
1125: b'arrow batch fetch error without err_out', 39)
+1126: prod.exhausted = True
__pyx_v_prod->exhausted = 1;
+1127: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
1128:
1129:
+1130: cdef bytes _qs_error_text(object exc):
static PyObject *__pyx_f_7questdb_7_client__qs_error_text(PyObject *__pyx_v_exc) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._qs_error_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1131: # The C text of a stream error: "[CodeName] message".
+1132: return ('[' + exc.code.name + '] ' + str(exc)).encode('utf-8')
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_exc, __pyx_mstate_global->__pyx_n_u_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u__22, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u__23); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_utf_8}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_1))) __PYX_ERR(1, 1132, __pyx_L1_error) { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
1133:
1134:
+1135: cdef int _qs_ensure_schema(_QueryStreamProducer prod) noexcept with gil:
static int __pyx_f_7questdb_7_client__qs_ensure_schema(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod) {
int __pyx_r;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
__Pyx_INCREF((PyObject *)__pyx_v_prod);
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
return __pyx_r;
}
1136: # Pull the first batch if there is no schema yet. A result without a
1137: # batch (a non-SELECT) gets an empty struct schema.
+1138: if not prod.has_cached_schema:
__pyx_t_1 = (!__pyx_v_prod->has_cached_schema);
if (__pyx_t_1) {
/* … */
}
+1139: if _qs_pull(prod) != 0:
__pyx_t_1 = (__pyx_f_7questdb_7_client__qs_pull(__pyx_v_prod) != 0);
if (__pyx_t_1) {
/* … */
}
+1140: return 5 # EIO
{
__pyx_r = 5;
}
goto __pyx_L0;
+1141: if not prod.has_cached_schema:
__pyx_t_1 = (!__pyx_v_prod->has_cached_schema);
if (__pyx_t_1) {
/* … */
}
+1142: if _qs_install_empty_struct_schema(prod) != 0:
__pyx_t_1 = (__pyx_f_7questdb_7_client__qs_install_empty_struct_schema(__pyx_v_prod) != 0);
if (__pyx_t_1) {
/* … */
}
+1143: return 12 # ENOMEM
{
__pyx_r = 12;
}
goto __pyx_L0;
+1144: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
1145:
1146:
+1147: cdef int _qs_get_schema(ArrowArrayStream* stream, ArrowSchema* out) noexcept with gil:
static int __pyx_f_7questdb_7_client__qs_get_schema(struct ArrowArrayStream *__pyx_v_stream, struct ArrowSchema *__pyx_v_out) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
int __pyx_v_rc;
int __pyx_r;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
return __pyx_r;
}
1148: cdef _QueryStreamProducer prod
1149: cdef int rc
1150: # duckdb before 1.5 reads `out` even when this call fails.
+1151: memset(out, 0, sizeof(ArrowSchema))
(void)(memset(__pyx_v_out, 0, (sizeof(struct ArrowSchema))));
+1152: if stream == NULL or stream.private_data == NULL:
__pyx_t_2 = (__pyx_v_stream == NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_stream->private_data == NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1153: return 22 # EINVAL
{
__pyx_r = 22;
}
goto __pyx_L0;
+1154: prod = <_QueryStreamProducer>stream.private_data
__pyx_t_3 = ((PyObject *)__pyx_v_stream->private_data);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_3);
__pyx_t_3 = 0;
+1155: try:
{
/*try:*/ {
/* … */
}
__pyx_L10_try_return:;
goto __pyx_L0;
}
+1156: rc = _qs_ensure_schema(prod)
__pyx_v_rc = __pyx_f_7questdb_7_client__qs_ensure_schema(__pyx_v_prod);
+1157: if rc != 0:
__pyx_t_1 = (__pyx_v_rc != 0);
if (__pyx_t_1) {
/* … */
}
+1158: return rc
{
__pyx_r = __pyx_v_rc;
}
goto __pyx_L10_try_return;
+1159: if _arrow_schema_deep_clone(&prod.cached_schema, out) != 0:
__pyx_t_1 = (__pyx_f_7questdb_7_client__arrow_schema_deep_clone((&__pyx_v_prod->cached_schema), __pyx_v_out) != 0);
if (__pyx_t_1) {
/* … */
}
+1160: _qs_set_error(prod, b'failed to clone ArrowSchema', 27)
__pyx_f_7questdb_7_client__qs_set_error(__pyx_v_prod, __pyx_k_failed_to_clone_ArrowSchema, 27, NULL);
+1161: return 12 # ENOMEM
{
__pyx_r = 12;
}
goto __pyx_L10_try_return;
+1162: return 0
{
__pyx_r = 0;
}
goto __pyx_L10_try_return;
1163: except BaseException:
1164: _qs_set_error(prod, b'arrow schema fetch failed', 25)
1165: return 5 # EIO
1166:
1167:
+1168: cdef int _qs_install_empty_struct_schema(_QueryStreamProducer prod) noexcept:
static int __pyx_f_7questdb_7_client__qs_install_empty_struct_schema(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod) {
char *__pyx_v_fmt;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
1169: """For an empty result set, fabricate a zero-column struct schema
1170: so consumers (polars / pyarrow) iterate to a clean end-of-stream
1171: instead of erroring on missing schema."""
+1172: cdef char* fmt = <char*>malloc(3)
__pyx_v_fmt = ((char *)malloc(3));
+1173: if fmt == NULL:
__pyx_t_1 = (__pyx_v_fmt == NULL);
if (__pyx_t_1) {
/* … */
}
+1174: return -1
{
__pyx_r = -1;
}
goto __pyx_L0;
+1175: fmt[0] = b'+'
(__pyx_v_fmt[0]) = '+';
+1176: fmt[1] = b's'
(__pyx_v_fmt[1]) = 's';
+1177: fmt[2] = 0
(__pyx_v_fmt[2]) = 0;
+1178: memset(&prod.cached_schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_prod->cached_schema), 0, (sizeof(struct ArrowSchema))));
+1179: prod.cached_schema.format = fmt
__pyx_v_prod->cached_schema.format = __pyx_v_fmt;
+1180: prod.cached_schema.release = _arrow_schema_clone_release
__pyx_v_prod->cached_schema.release = __pyx_f_7questdb_7_client__arrow_schema_clone_release;
+1181: prod.has_cached_schema = True
__pyx_v_prod->has_cached_schema = 1;
+1182: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
1183:
1184:
+1185: cdef int _qs_get_next(ArrowArrayStream* stream, ArrowArray* out) noexcept with gil:
static int __pyx_f_7questdb_7_client__qs_get_next(struct ArrowArrayStream *__pyx_v_stream, struct ArrowArray *__pyx_v_out) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
int __pyx_r;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
return __pyx_r;
}
1186: cdef _QueryStreamProducer prod
+1187: memset(out, 0, sizeof(ArrowArray))
(void)(memset(__pyx_v_out, 0, (sizeof(struct ArrowArray))));
+1188: if stream == NULL or stream.private_data == NULL:
__pyx_t_2 = (__pyx_v_stream == NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_stream->private_data == NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1189: return 22 # EINVAL
{
__pyx_r = 22;
}
goto __pyx_L0;
+1190: prod = <_QueryStreamProducer>stream.private_data
__pyx_t_3 = ((PyObject *)__pyx_v_stream->private_data);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_3);
__pyx_t_3 = 0;
+1191: try:
{
/*try:*/ {
/* … */
}
__pyx_L10_try_return:;
goto __pyx_L0;
}
+1192: if not prod.has_cached_array:
__pyx_t_1 = (!__pyx_v_prod->has_cached_array);
if (__pyx_t_1) {
/* … */
}
+1193: if _qs_pull(prod) != 0:
__pyx_t_1 = (__pyx_f_7questdb_7_client__qs_pull(__pyx_v_prod) != 0);
if (__pyx_t_1) {
/* … */
}
+1194: return 5 # EIO
{
__pyx_r = 5;
}
goto __pyx_L10_try_return;
+1195: if prod.has_cached_array:
if (__pyx_v_prod->has_cached_array) {
/* … */
}
+1196: memcpy(out, &prod.cached_array, sizeof(ArrowArray))
(void)(memcpy(__pyx_v_out, (&__pyx_v_prod->cached_array), (sizeof(struct ArrowArray))));
+1197: memset(&prod.cached_array, 0, sizeof(ArrowArray))
(void)(memset((&__pyx_v_prod->cached_array), 0, (sizeof(struct ArrowArray))));
+1198: prod.has_cached_array = False
__pyx_v_prod->has_cached_array = 0;
+1199: prod.delivered = True
__pyx_v_prod->delivered = 1;
+1200: return 0
{
__pyx_r = 0;
}
goto __pyx_L10_try_return;
+1201: return 0
{
__pyx_r = 0;
}
goto __pyx_L10_try_return;
1202: except BaseException:
1203: _qs_set_error(prod, b'arrow batch fetch failed', 24)
1204: return 5 # EIO
1205:
1206:
+1207: cdef const char* _qs_get_last_error(ArrowArrayStream* stream) noexcept with gil:
static char const *__pyx_f_7questdb_7_client__qs_get_last_error(struct ArrowArrayStream *__pyx_v_stream) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
char const *__pyx_r;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
return __pyx_r;
}
1208: cdef _QueryStreamProducer prod
+1209: if stream == NULL or stream.private_data == NULL:
__pyx_t_2 = (__pyx_v_stream == NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_stream->private_data == NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1210: return NULL
{
__pyx_r = NULL;
}
goto __pyx_L0;
+1211: try:
{
/*try:*/ {
/* … */
}
__pyx_L10_try_return:;
goto __pyx_L0;
}
+1212: prod = <_QueryStreamProducer>stream.private_data
__pyx_t_6 = ((PyObject *)__pyx_v_stream->private_data);
__Pyx_INCREF(__pyx_t_6);
__pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_6);
__pyx_t_6 = 0;
+1213: return <const char*>prod.last_error
{
__pyx_r = ((char const *)__pyx_v_prod->last_error);
}
goto __pyx_L10_try_return;
1214: except BaseException:
1215: return NULL
1216:
1217:
+1218: cdef void _qs_release(ArrowArrayStream* stream) noexcept with gil:
static void __pyx_f_7questdb_7_client__qs_release(struct ArrowArrayStream *__pyx_v_stream) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
PyObject *__pyx_v_exc_type;
PyObject *__pyx_v_exc_value;
PyObject *__pyx_v_exc_tb;
PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_RefNannyFinishContext();
__Pyx_PyGILState_Release(__pyx_gilstate_save);
}
1219: cdef _QueryStreamProducer prod
1220: cdef PyObject* exc_type
1221: cdef PyObject* exc_value
1222: cdef PyObject* exc_tb
+1223: if stream == NULL or stream.private_data == NULL:
__pyx_t_2 = (__pyx_v_stream == NULL);
if (!__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_stream->private_data == NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1224: return
{
}
goto __pyx_L0;
1225: # A dropped capsule can be released while an exception propagates.
+1226: PyErr_Fetch(&exc_type, &exc_value, &exc_tb)
PyErr_Fetch((&__pyx_v_exc_type), (&__pyx_v_exc_value), (&__pyx_v_exc_tb));
+1227: prod = <_QueryStreamProducer>stream.private_data
__pyx_t_3 = ((PyObject *)__pyx_v_stream->private_data);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_3);
__pyx_t_3 = 0;
+1228: stream.private_data = NULL
__pyx_v_stream->private_data = NULL;
+1229: stream.release = NULL
__pyx_v_stream->release = NULL;
+1230: if prod.cursor_handle is not None:
__pyx_t_1 = (((PyObject *)__pyx_v_prod->cursor_handle) != Py_None);
if (__pyx_t_1) {
/* … */
}
+1231: prod.cursor_handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_prod->cursor_handle->__pyx_vtab)->_free(__pyx_v_prod->cursor_handle);
+1232: try:
{
/*try:*/ {
/* … */
}
}
+1233: Py_DECREF(prod)
Py_DECREF(((PyObject *)__pyx_v_prod));
1234: except BaseException:
1235: pass
+1236: PyErr_Restore(exc_type, exc_value, exc_tb)
PyErr_Restore(__pyx_v_exc_type, __pyx_v_exc_value, __pyx_v_exc_tb);
1237:
1238:
+1239: cdef void _qs_capsule_destructor(object capsule) noexcept:
static void __pyx_f_7questdb_7_client__qs_capsule_destructor(PyObject *__pyx_v_capsule) {
struct ArrowArrayStream *__pyx_v_stream;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_WriteUnraisable("questdb._client._qs_capsule_destructor", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
}
1240: cdef ArrowArrayStream* stream
+1241: if not PyCapsule_IsValid(capsule, b'arrow_array_stream'):
__pyx_t_1 = (!PyCapsule_IsValid(__pyx_v_capsule, __pyx_k_arrow_array_stream));
if (__pyx_t_1) {
/* … */
}
+1242: return
{
}
goto __pyx_L0;
+1243: stream = <ArrowArrayStream*>PyCapsule_GetPointer(
__pyx_t_2 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_k_arrow_array_stream); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(1, 1243, __pyx_L1_error) __pyx_v_stream = ((struct ArrowArrayStream *)__pyx_t_2);
1244: capsule, b'arrow_array_stream')
+1245: if stream == NULL:
__pyx_t_1 = (__pyx_v_stream == NULL);
if (__pyx_t_1) {
/* … */
}
+1246: return
{
}
goto __pyx_L0;
+1247: if stream.release != NULL:
__pyx_t_1 = (__pyx_v_stream->release != NULL);
if (__pyx_t_1) {
/* … */
}
+1248: stream.release(stream)
__pyx_v_stream->release(__pyx_v_stream);
+1249: free(stream)
free(__pyx_v_stream);
1250:
1251:
+1252: cdef _QueryStreamProducer _new_query_stream_producer(_CursorHandle handle):
static struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_f_7questdb_7_client__new_query_stream_producer(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._new_query_stream_producer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1253: cdef _QueryStreamProducer prod = _QueryStreamProducer()
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__QueryStreamProducer, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1253, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_1);
__pyx_t_1 = 0;
+1254: prod.cursor_handle = handle
__Pyx_INCREF((PyObject *)__pyx_v_handle); __Pyx_GIVEREF((PyObject *)__pyx_v_handle); __Pyx_GOTREF((PyObject *)__pyx_v_prod->cursor_handle); __Pyx_DECREF((PyObject *)__pyx_v_prod->cursor_handle); __pyx_v_prod->cursor_handle = __pyx_v_handle;
+1255: prod.seen_seq = handle._reset_sequence()
__pyx_t_4 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1255, __pyx_L1_error)
__pyx_v_prod->seen_seq = __pyx_t_4;
+1256: return prod
{
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_prod);
__pyx_r = __pyx_v_prod;
}
__Pyx_XDECREF((PyObject *)__pyx_temp);
}
goto __pyx_L0;
1257:
1258:
+1259: cdef object _query_stream_capsule(_QueryStreamProducer prod):
static PyObject *__pyx_f_7questdb_7_client__query_stream_capsule(struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod) {
struct ArrowArrayStream *__pyx_v_stream;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._query_stream_capsule", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1260: cdef ArrowArrayStream* stream
+1261: stream = <ArrowArrayStream*>calloc(1, sizeof(ArrowArrayStream))
__pyx_v_stream = ((struct ArrowArrayStream *)calloc(1, (sizeof(struct ArrowArrayStream))));
+1262: if stream == NULL:
__pyx_t_1 = (__pyx_v_stream == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1263: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1263, __pyx_L1_error)
+1264: stream.get_schema = _qs_get_schema
__pyx_v_stream->get_schema = __pyx_f_7questdb_7_client__qs_get_schema;
+1265: stream.get_next = _qs_get_next
__pyx_v_stream->get_next = __pyx_f_7questdb_7_client__qs_get_next;
+1266: stream.get_last_error = _qs_get_last_error
__pyx_v_stream->get_last_error = __pyx_f_7questdb_7_client__qs_get_last_error;
+1267: stream.release = _qs_release
__pyx_v_stream->release = __pyx_f_7questdb_7_client__qs_release;
+1268: Py_INCREF(prod)
Py_INCREF(((PyObject *)__pyx_v_prod));
+1269: stream.private_data = <void*>prod
__pyx_v_stream->private_data = ((void *)__pyx_v_prod);
+1270: try:
{
/*try:*/ {
/* … */
}
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L8_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L0;
}
+1271: return PyCapsule_New(
__pyx_t_5 = PyCapsule_New(((void *)__pyx_v_stream), __pyx_k_arrow_array_stream, __pyx_f_7questdb_7_client__qs_capsule_destructor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1271, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_5); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L8_try_return;
1272: <void*>stream, b'arrow_array_stream', _qs_capsule_destructor)
+1273: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._query_stream_capsule", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1273, __pyx_L6_except_error)
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_7);
+1274: Py_DECREF(prod)
Py_DECREF(((PyObject *)__pyx_v_prod));
+1275: free(stream)
free(__pyx_v_stream);
+1276: raise
__Pyx_GIVEREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __PYX_ERR(1, 1276, __pyx_L6_except_error) }
1277:
1278:
+1279: cdef class _ArrowSchemaBox:
struct __pyx_obj_7questdb_7_client__ArrowSchemaBox {
PyObject_HEAD
struct ArrowSchema schema;
int has_schema;
};
1280: """Owns one deep clone of a result's ArrowSchema. Each
1281: ``QueryResult.__arrow_c_schema__`` call exports a new clone of it, so
1282: the call also works after the stream was handed to a consumer."""
1283: cdef ArrowSchema schema
1284: cdef bint has_schema
1285:
+1286: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_15_ArrowSchemaBox_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_15_ArrowSchemaBox_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_15_ArrowSchemaBox___cinit__(((struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_15_ArrowSchemaBox___cinit__(struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
return __pyx_r;
}
+1287: memset(&self.schema, 0, sizeof(ArrowSchema))
(void)(memset((&__pyx_v_self->schema), 0, (sizeof(struct ArrowSchema))));
+1288: self.has_schema = False
__pyx_v_self->has_schema = 0;
1289:
+1290: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_15_ArrowSchemaBox_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_15_ArrowSchemaBox_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_15_ArrowSchemaBox_2__dealloc__(((struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_15_ArrowSchemaBox_2__dealloc__(struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_v_self) {
/* … */
/* function exit code */
}
+1291: if self.has_schema and self.schema.release != NULL:
if (__pyx_v_self->has_schema) {
} else {
__pyx_t_1 = __pyx_v_self->has_schema;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_self->schema.release != NULL);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1292: self.schema.release(&self.schema)
__pyx_v_self->schema.release((&__pyx_v_self->schema));
+1293: self.has_schema = False
__pyx_v_self->has_schema = 0;
1294:
1295:
+1296: cdef _ArrowSchemaBox _arrow_schema_box(const ArrowSchema* src):
static struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_f_7questdb_7_client__arrow_schema_box(struct ArrowSchema const *__pyx_v_src) {
struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_v_box = 0;
struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._arrow_schema_box", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_box);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1297: cdef _ArrowSchemaBox box = _ArrowSchemaBox()
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__ArrowSchemaBox, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1297, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__pyx_v_box = ((struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *)__pyx_t_1);
__pyx_t_1 = 0;
+1298: if _arrow_schema_deep_clone(src, &box.schema) != 0:
__pyx_t_4 = (__pyx_f_7questdb_7_client__arrow_schema_deep_clone(__pyx_v_src, (&__pyx_v_box->schema)) != 0);
if (unlikely(__pyx_t_4)) {
/* … */
}
+1299: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1299, __pyx_L1_error)
+1300: box.has_schema = True
__pyx_v_box->has_schema = 1;
+1301: return box
{
struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_box);
__pyx_r = __pyx_v_box;
}
__Pyx_XDECREF((PyObject *)__pyx_temp);
}
goto __pyx_L0;
1302:
1303:
+1304: cdef void _arrow_schema_capsule_destructor(object capsule) noexcept:
static void __pyx_f_7questdb_7_client__arrow_schema_capsule_destructor(PyObject *__pyx_v_capsule) {
struct ArrowSchema *__pyx_v_schema;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_WriteUnraisable("questdb._client._arrow_schema_capsule_destructor", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_L0:;
}
1305: cdef ArrowSchema* schema
+1306: if not PyCapsule_IsValid(capsule, b'arrow_schema'):
__pyx_t_1 = (!PyCapsule_IsValid(__pyx_v_capsule, __pyx_k_arrow_schema));
if (__pyx_t_1) {
/* … */
}
+1307: return
{
}
goto __pyx_L0;
+1308: schema = <ArrowSchema*>PyCapsule_GetPointer(capsule, b'arrow_schema')
__pyx_t_2 = PyCapsule_GetPointer(__pyx_v_capsule, __pyx_k_arrow_schema); if (unlikely(__pyx_t_2 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(1, 1308, __pyx_L1_error) __pyx_v_schema = ((struct ArrowSchema *)__pyx_t_2);
+1309: if schema == NULL:
__pyx_t_1 = (__pyx_v_schema == NULL);
if (__pyx_t_1) {
/* … */
}
+1310: return
{
}
goto __pyx_L0;
1311: # A consumer that imported the schema has moved it and cleared
1312: # `release`.
+1313: if schema.release != NULL:
__pyx_t_1 = (__pyx_v_schema->release != NULL);
if (__pyx_t_1) {
/* … */
}
+1314: schema.release(schema)
__pyx_v_schema->release(__pyx_v_schema);
+1315: free(schema)
free(__pyx_v_schema);
1316:
1317:
+1318: cdef object _arrow_schema_capsule(_ArrowSchemaBox box):
static PyObject *__pyx_f_7questdb_7_client__arrow_schema_capsule(struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_v_box) {
struct ArrowSchema *__pyx_v_schema;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._arrow_schema_capsule", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1319: cdef ArrowSchema* schema = <ArrowSchema*>malloc(sizeof(ArrowSchema))
__pyx_v_schema = ((struct ArrowSchema *)malloc((sizeof(struct ArrowSchema))));
+1320: if schema == NULL:
__pyx_t_1 = (__pyx_v_schema == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1321: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1321, __pyx_L1_error)
1322: # On failure, the clone releases what it allocated.
+1323: if _arrow_schema_deep_clone(&box.schema, schema) != 0:
__pyx_t_1 = (__pyx_f_7questdb_7_client__arrow_schema_deep_clone((&__pyx_v_box->schema), __pyx_v_schema) != 0);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1324: free(schema)
free(__pyx_v_schema);
+1325: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1325, __pyx_L1_error)
+1326: try:
{
/*try:*/ {
/* … */
}
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L7_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L9_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L0;
}
+1327: return PyCapsule_New(
__pyx_t_5 = PyCapsule_New(((void *)__pyx_v_schema), __pyx_k_arrow_schema, __pyx_f_7questdb_7_client__arrow_schema_capsule_destructor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1327, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_5); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L9_try_return;
1328: <void*>schema, b'arrow_schema', _arrow_schema_capsule_destructor)
+1329: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._arrow_schema_capsule", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1329, __pyx_L7_except_error)
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_7);
+1330: schema.release(schema)
__pyx_v_schema->release(__pyx_v_schema);
+1331: free(schema)
free(__pyx_v_schema);
+1332: raise
__Pyx_GIVEREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __PYX_ERR(1, 1332, __pyx_L7_except_error) }
1333:
1334:
+1335: _NUMPY_NULLABLE_CACHE = None
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NUMPY_NULLABLE_CACHE, Py_None) < (0)) __PYX_ERR(1, 1335, __pyx_L1_error)
1336:
1337:
+1338: cdef object _numpy_nullable_mapping():
static PyObject *__pyx_f_7questdb_7_client__numpy_nullable_mapping(void) {
PyObject *__pyx_v_pa = NULL;
PyObject *__pyx_v_pd = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._numpy_nullable_mapping", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_pa);
__Pyx_XDECREF(__pyx_v_pd);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1339: """Return a ``types_mapper`` callable that maps Arrow primitives to
1340: pandas nullable-extension dtypes (Int64Dtype, Float64Dtype, etc.).
1341:
1342: Mirrors ``pandas.io._util._arrow_dtype_mapping``'s coverage so that
1343: ``to_pandas(dtype_backend="numpy_nullable")`` here matches what
1344: ``pd.read_parquet(..., dtype_backend="numpy_nullable")`` produces.
1345: Non-primitive Arrow types fall through (mapper returns None) and
1346: pyarrow.Table.to_pandas applies its default conversion.
1347: """
1348: global _NUMPY_NULLABLE_CACHE
+1349: if _NUMPY_NULLABLE_CACHE is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_NUMPY_NULLABLE_CACHE); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+1350: import pyarrow as pa
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1350, __pyx_L1_error) __pyx_t_1 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pa = __pyx_t_1; __pyx_t_1 = 0;
+1351: import pandas as pd
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pandas_2, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1351, __pyx_L1_error) __pyx_t_1 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pd = __pyx_t_1; __pyx_t_1 = 0;
1352: _NUMPY_NULLABLE_CACHE = {
+1353: pa.int8(): pd.Int8Dtype(),
__pyx_t_1 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __pyx_v_pa; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int8, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_7 = __pyx_v_pd; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Int8Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1354: pa.int16(): pd.Int16Dtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int16, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1354, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Int16Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1354, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1355: pa.int32(): pd.Int32Dtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int32, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Int32Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1355, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1356: pa.int64(): pd.Int64Dtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int64, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Int64Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1356, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1357: pa.uint8(): pd.UInt8Dtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_uint8, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1357, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_UInt8Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1357, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1358: pa.uint16(): pd.UInt16Dtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_uint16, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1358, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_UInt16Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1358, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1359: pa.uint32(): pd.UInt32Dtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_uint32, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1359, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_UInt32Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1359, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1360: pa.uint64(): pd.UInt64Dtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_uint64, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_UInt64Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1360, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1361: pa.float32(): pd.Float32Dtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_float32, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Float32Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1361, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1362: pa.float64(): pd.Float64Dtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_float64, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Float64Dtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1362, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1363: pa.bool_(): pd.BooleanDtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_bool_2, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_BooleanDtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1363, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1364: pa.string(): pd.StringDtype(),
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_string, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_StringDtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1364, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_4) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1365: pa.large_string(): pd.StringDtype(),
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_large_string, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_7 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_StringDtype, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1365, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (PyDict_SetItem(__pyx_t_1, __pyx_t_4, __pyx_t_5) < (0)) __PYX_ERR(1, 1353, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1366: }.get
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1366, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_NUMPY_NULLABLE_CACHE, __pyx_t_5) < (0)) __PYX_ERR(1, 1352, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1367: return _NUMPY_NULLABLE_CACHE
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NUMPY_NULLABLE_CACHE); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1367, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0;
1368:
1369:
+1370: cdef object _table_shared_symbol_dict(object table):
static PyObject *__pyx_f_7questdb_7_client__table_shared_symbol_dict(PyObject *__pyx_v_table) {
PyObject *__pyx_v_pa = NULL;
PyObject *__pyx_v_schema = 0;
int __pyx_v_changed;
PyObject *__pyx_v_cols = 0;
PyObject *__pyx_v_fields = 0;
PyObject *__pyx_v_field = 0;
PyObject *__pyx_v_ty = 0;
PyObject *__pyx_v_col = 0;
PyObject *__pyx_v_shared = 0;
PyObject *__pyx_v_signed_ty = 0;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_8genexpr3__pyx_v_j;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_20);
__Pyx_XDECREF(__pyx_t_21);
__Pyx_XDECREF(__pyx_t_22);
__Pyx_AddTraceback("questdb._client._table_shared_symbol_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_pa);
__Pyx_XDECREF(__pyx_v_schema);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_fields);
__Pyx_XDECREF(__pyx_v_field);
__Pyx_XDECREF(__pyx_v_ty);
__Pyx_XDECREF(__pyx_v_col);
__Pyx_XDECREF(__pyx_v_shared);
__Pyx_XDECREF(__pyx_v_signed_ty);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1371: """Collapse every dictionary (SYMBOL) column so all chunks share ONE
1372: dictionary, and recast its index to signed int32.
1373:
1374: QuestDB SYMBOL egresses as ``dictionary(uint32, utf8)``, one chunk per wire
1375: batch, each carrying the full append-only connection dict with global,
1376: query-stable codes — so the last chunk's dictionary is the largest and
1377: covers every code (same invariant as ``_polars_dict_codes_cats``). A generic
1378: consumer (``Table.to_pandas`` / a foreign Arrow reader) otherwise re-unifies
1379: the per-batch dictionaries — ``O(batches × cardinality)``, which dominates
1380: high-cardinality SYMBOL egress. Re-pointing every chunk at that one shared
1381: dictionary makes the unify a no-op (codes are already valid against the
1382: superset). The index is also recast to int32 because pandas rejects unsigned
1383: dictionary indices (symbol cardinality fits int32). Returns the table
1384: unchanged when no column is a dictionary.
1385: """
+1386: import pyarrow as pa
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1386, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pa = __pyx_t_1; __pyx_t_1 = 0;
+1387: cdef object schema = table.schema
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_schema = __pyx_t_1; __pyx_t_1 = 0;
+1388: cdef bint changed = False
__pyx_v_changed = 0;
+1389: cdef list cols = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_cols = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1390: cdef list fields = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_fields = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
1391: cdef object field, ty, col, shared, signed_ty
1392: cdef Py_ssize_t i, j, n
+1393: for i in range(table.num_columns):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_num_columns); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1393, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __pyx_t_3; for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5;
+1394: field = schema.field(i)
__pyx_t_6 = __pyx_v_schema;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1394, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1394, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_field, __pyx_t_1);
__pyx_t_1 = 0;
+1395: ty = field.type
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_ty, __pyx_t_1); __pyx_t_1 = 0;
+1396: if not pa.types.is_dictionary(ty):
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_ty}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 1396, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = (!__pyx_t_9); if (__pyx_t_10) { /* … */ }
+1397: cols.append(table.column(i))
__pyx_t_6 = __pyx_v_table;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_column_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1397, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_cols, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1397, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1398: fields.append(field)
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_fields, __pyx_v_field); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1398, __pyx_L1_error)
+1399: continue
goto __pyx_L3_continue;
+1400: changed = True
__pyx_v_changed = 1;
+1401: col = table.column(i)
__pyx_t_7 = __pyx_v_table;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_column_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_col, __pyx_t_1);
__pyx_t_1 = 0;
+1402: signed_ty = pa.dictionary(pa.int32(), ty.value_type, ty.ordered)
__pyx_t_6 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_12 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, NULL};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int32, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_ty, __pyx_mstate_global->__pyx_n_u_value_type); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_ty, __pyx_mstate_global->__pyx_n_u_ordered); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_6, __pyx_t_7, __pyx_t_12, __pyx_t_13};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dictionary, __pyx_callargs+__pyx_t_8, (4-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_signed_ty, __pyx_t_1);
__pyx_t_1 = 0;
+1403: n = col.num_chunks
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_col, __pyx_mstate_global->__pyx_n_u_num_chunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1403, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_14 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_14 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1403, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_n = __pyx_t_14;
+1404: if n == 0:
__pyx_t_10 = (__pyx_v_n == 0);
if (__pyx_t_10) {
/* … */
goto __pyx_L6;
}
+1405: cols.append(col.cast(signed_ty))
__pyx_t_13 = __pyx_v_col;
__Pyx_INCREF(__pyx_t_13);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_signed_ty};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1405, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_cols, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1405, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1406: else:
1407: # Append-only => the last chunk's dict is the superset; rebase every
1408: # chunk's (int32-recast) codes onto it so they share one dictionary.
+1409: shared = col.chunk(n - 1).dictionary
/*else*/ {
__pyx_t_13 = __pyx_v_col;
__Pyx_INCREF(__pyx_t_13);
__pyx_t_12 = PyLong_FromSsize_t((__pyx_v_n - 1)); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_12};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_chunk, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_dictionary); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_shared, __pyx_t_12);
__pyx_t_12 = 0;
+1410: cols.append(pa.chunked_array(
__pyx_t_1 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_1);
{ /* enter inner scope */
/* … */
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_cols, __pyx_t_12); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1410, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
}
__pyx_L6:;
/* … */
{
PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_type};
__pyx_mstate_global->__pyx_tuple[10] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(1, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]);
+1411: [pa.DictionaryArray.from_arrays(
__pyx_t_13 = PyList_New(0); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); /* … */ __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_DictionaryArray); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_6 = __pyx_t_17; __Pyx_INCREF(__pyx_t_6);
+1412: col.chunk(j).indices.cast(pa.int32()), shared)
__pyx_t_21 = __pyx_v_col;
__Pyx_INCREF(__pyx_t_21);
__pyx_t_22 = PyLong_FromSsize_t(__pyx_8genexpr3__pyx_v_j); if (unlikely(!__pyx_t_22)) __PYX_ERR(1, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_22);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_21, __pyx_t_22};
__pyx_t_20 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_chunk, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
__Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
}
__pyx_t_22 = __Pyx_PyObject_GetAttrStr(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_indices); if (unlikely(!__pyx_t_22)) __PYX_ERR(1, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_22);
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__pyx_t_19 = __pyx_t_22;
__Pyx_INCREF(__pyx_t_19);
__pyx_t_21 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_21);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_21, NULL};
__pyx_t_20 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_int32, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_21); __pyx_t_21 = 0;
if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
}
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_19, __pyx_t_20};
__pyx_t_18 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 1412, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
}
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_18, __pyx_v_shared};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrays, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1411, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_GIVEREF(__pyx_t_7);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_13, __pyx_t_7))) __PYX_ERR(1, 1411, __pyx_L1_error)
__pyx_t_7 = 0;
}
} /* exit inner scope */
+1413: for j in range(n)],
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_t_14;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_8genexpr3__pyx_v_j = __pyx_t_16;
+1414: type=signed_ty))
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_13, __pyx_v_signed_ty};
#if CYTHON_VECTORCALL
__pyx_t_7 = __pyx_mstate_global->__pyx_tuple[10];
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1410, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_7);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_type};
__pyx_t_7 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
#endif
__pyx_t_12 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_chunked_array, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1410, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
}
+1415: fields.append(field.with_type(signed_ty))
__pyx_t_7 = __pyx_v_field;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_signed_ty};
__pyx_t_12 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_with_type, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1415, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
}
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_fields, __pyx_t_12); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1415, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_L3_continue:;
}
+1416: if not changed:
__pyx_t_10 = (!__pyx_v_changed);
if (__pyx_t_10) {
/* … */
}
+1417: return table
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_table);
__pyx_r = __pyx_v_table;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1418: return pa.Table.from_arrays(
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_7 = __pyx_t_13; __Pyx_INCREF(__pyx_t_7); /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_schema}; __pyx_mstate_global->__pyx_tuple[11] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(1, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]);
+1419: cols, schema=pa.schema(fields, metadata=schema.metadata))
__pyx_t_17 = __pyx_v_pa; __Pyx_INCREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_8 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_17, __pyx_v_fields, __pyx_t_18}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[12]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1419, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_metadata}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_schema, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_8 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_cols, __pyx_t_1}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[11]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1418, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_schema}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_12 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrays, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_12; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_12 = 0; goto __pyx_L0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_metadata}; __pyx_mstate_global->__pyx_tuple[12] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(1, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]);
1420:
1421:
1422: cdef dict _KIND_NAMES = {
+1423: <int>qwp_reader_column_kind_boolean: 'boolean',
__pyx_t_17 = __Pyx_PyDict_NewPresized(23); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_boolean)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_boolean) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1424: <int>qwp_reader_column_kind_byte: 'byte',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_byte)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_byte) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1425: <int>qwp_reader_column_kind_short: 'short',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_short)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_short) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1426: <int>qwp_reader_column_kind_int: 'int',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_int)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_int) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1427: <int>qwp_reader_column_kind_long: 'long',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_long) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1428: <int>qwp_reader_column_kind_float: 'float',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_float)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1429: <int>qwp_reader_column_kind_double: 'double',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_double)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_double) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1430: <int>qwp_reader_column_kind_char: 'char',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_char)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_char_2) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1431: <int>qwp_reader_column_kind_ipv4: 'ipv4',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_ipv4)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_ipv4) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1432: <int>qwp_reader_column_kind_timestamp: 'timestamp',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_timestamp)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_timestamp) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1433: <int>qwp_reader_column_kind_timestamp_nanos: 'timestamp_ns',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_timestamp_nanos)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1433, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_timestamp_ns) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1434: <int>qwp_reader_column_kind_date: 'date',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_date)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_date) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1435: <int>qwp_reader_column_kind_uuid: 'uuid',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_uuid)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_uuid) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1436: <int>qwp_reader_column_kind_long256: 'long256',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long256)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_long256) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1437: <int>qwp_reader_column_kind_geohash: 'geohash',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_geohash)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_geohash_2) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1438: <int>qwp_reader_column_kind_varchar: 'varchar',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_varchar)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_varchar) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1439: <int>qwp_reader_column_kind_binary: 'binary',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_binary)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_binary) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1440: <int>qwp_reader_column_kind_symbol: 'symbol',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_symbol)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_symbol) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1441: <int>qwp_reader_column_kind_double_array: 'double_array',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_double_array)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_double_array) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1442: <int>qwp_reader_column_kind_long_array: 'long_array',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long_array)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1442, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_long_array) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1443: <int>qwp_reader_column_kind_decimal64: 'decimal',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal64)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1444: <int>qwp_reader_column_kind_decimal128: 'decimal',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal128)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+1445: <int>qwp_reader_column_kind_decimal256: 'decimal',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal256)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 1423, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_XGOTREF(__pyx_v_7questdb_7_client__KIND_NAMES); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__KIND_NAMES, ((PyObject*)__pyx_t_17)); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
1446: }
1447:
1448:
+1449: cdef int _reader_check(bint ok, questdb_error** err, str what) except -1:
static int __pyx_f_7questdb_7_client__reader_check(int __pyx_v_ok, questdb_error **__pyx_v_err, PyObject *__pyx_v_what) {
questdb_error *__pyx_v_taken;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._reader_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1450: # By address, not value: reading `err` in the same argument list as the
1451: # FFI call that writes it is indeterminately sequenced (C11 6.5.2.2p10).
+1452: if ok:
if (__pyx_v_ok) {
/* … */
}
+1453: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+1454: if err[0] != NULL:
__pyx_t_1 = ((__pyx_v_err[0]) != NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1455: taken = err[0]
__pyx_v_taken = (__pyx_v_err[0]);
+1456: err[0] = NULL
(__pyx_v_err[0]) = NULL;
+1457: raise _reader_err_to_py(taken)
__pyx_t_2 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_taken); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 1457, __pyx_L1_error)
+1458: raise QuestDBError(
__pyx_t_3 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4);
+1459: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1460: what + ' returned false without err_out')
__pyx_t_5 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_what, __pyx_mstate_global->__pyx_kp_u_returned_false_without_err_out); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 1458, __pyx_L1_error)
1461:
1462:
+1463: cdef object _numpy_dtype_for_kind(qwp_reader_column_kind kind, object np):
static PyObject *__pyx_f_7questdb_7_client__numpy_dtype_for_kind(enum qwp_reader_column_kind __pyx_v_kind, PyObject *__pyx_v_np) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._numpy_dtype_for_kind", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1464: if kind == qwp_reader_column_kind_boolean:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_boolean);
if (__pyx_t_1) {
/* … */
}
+1465: return np.dtype(np.bool_)
__pyx_t_3 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_bool_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1466: if kind == qwp_reader_column_kind_byte:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_byte);
if (__pyx_t_1) {
/* … */
}
+1467: return np.dtype(np.int8)
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int8); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1468: if kind == qwp_reader_column_kind_short:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_short);
if (__pyx_t_1) {
/* … */
}
+1469: return np.dtype(np.int16)
__pyx_t_3 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int16); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1469, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1469, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1470: if kind == qwp_reader_column_kind_int:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_int);
if (__pyx_t_1) {
/* … */
}
+1471: return np.dtype(np.int32)
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int32); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1471, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1471, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1472: if kind == qwp_reader_column_kind_long:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_long);
if (__pyx_t_1) {
/* … */
}
+1473: return np.dtype(np.int64)
__pyx_t_3 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int64); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1473, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1473, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1474: if kind == qwp_reader_column_kind_float:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_float);
if (__pyx_t_1) {
/* … */
}
+1475: return np.dtype(np.float32)
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_float32); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1475, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1475, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1476: if kind == qwp_reader_column_kind_double:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_double);
if (__pyx_t_1) {
/* … */
}
+1477: return np.dtype(np.float64)
__pyx_t_3 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_float64); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1477, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1477, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1478: if kind == qwp_reader_column_kind_char:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_char);
if (__pyx_t_1) {
/* … */
}
+1479: return np.dtype(np.uint16)
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_uint16); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1479, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1479, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1480: if kind == qwp_reader_column_kind_ipv4:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_ipv4);
if (__pyx_t_1) {
/* … */
}
+1481: return np.dtype(np.uint32)
__pyx_t_3 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_uint32); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1481, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1482: if kind == qwp_reader_column_kind_timestamp:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_timestamp);
if (__pyx_t_1) {
/* … */
}
+1483: return np.dtype('datetime64[us]')
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_datetime64_us};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1483, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1484: if kind == qwp_reader_column_kind_timestamp_nanos:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_timestamp_nanos);
if (__pyx_t_1) {
/* … */
}
+1485: return np.dtype('datetime64[ns]')
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_datetime64_ns};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1485, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1486: if kind == qwp_reader_column_kind_date:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_date);
if (__pyx_t_1) {
/* … */
}
+1487: return np.dtype('datetime64[ms]')
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_datetime64_ms};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1487, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+1488: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1489:
1490:
+1491: cdef object _numpy_fixed_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_fixed_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, enum qwp_reader_column_kind __pyx_v_kind, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
PyObject *__pyx_v_dtype = 0;
size_t __pyx_v_itemsize;
CYTHON_UNUSED Py_ssize_t __pyx_v_nbytes;
unsigned char *__pyx_v_src;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF((PyObject *)__pyx_t_13);
__Pyx_AddTraceback("questdb._client._numpy_fixed_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1492: const qwp_reader_batch* batch,
1493: size_t col_idx,
1494: qwp_reader_column_kind kind,
1495: size_t row_count,
1496: object np):
1497: cdef qwp_reader_column_data cd
+1498: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
+1499: cdef object dtype = _numpy_dtype_for_kind(kind, np)
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_dtype_for_kind(__pyx_v_kind, __pyx_v_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_dtype = __pyx_t_1; __pyx_t_1 = 0;
1500: cdef size_t itemsize
1501: cdef Py_ssize_t nbytes
1502: cdef unsigned char* src
+1503: if dtype is None:
__pyx_t_2 = (__pyx_v_dtype == Py_None);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1504: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1505: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1506: 'numpy egress does not support column kind 0x{:02X} yet'.format(
__pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_numpy_egress_does_not_support_co;
__Pyx_INCREF(__pyx_t_7);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 1506, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1504, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 1504, __pyx_L1_error)
+1507: <int>kind))
__pyx_t_8 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+1508: _reader_check(
__pyx_t_10 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 1508, __pyx_L1_error)
1509: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1510: 'qwp_reader_batch_column_data')
+1511: itemsize = dtype.itemsize
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyLong_As_size_t(__pyx_t_1); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1511, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_itemsize = __pyx_t_9;
+1512: if cd.value_stride != itemsize:
__pyx_t_2 = (__pyx_v_cd.value_stride != __pyx_v_itemsize);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1513: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1514: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1515: 'column kind 0x{:02X} wire stride {} != numpy itemsize {}'.format(
__pyx_t_8 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_wire_stride_n;
__Pyx_INCREF(__pyx_t_8);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(1, 1515, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_6};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 1513, __pyx_L1_error)
+1516: <int>kind, cd.value_stride, itemsize))
__pyx_t_7 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = __Pyx_PyLong_FromSize_t(__pyx_v_cd.value_stride); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyLong_FromSize_t(__pyx_v_itemsize); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = 0; { PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_7, __pyx_t_11, __pyx_t_12}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (4-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); }
+1517: if row_count == 0:
__pyx_t_2 = (__pyx_v_row_count == 0);
if (__pyx_t_2) {
/* … */
}
+1518: return np.empty(0, dtype=dtype)
__pyx_t_5 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_int_0, __pyx_v_dtype};
#if CYTHON_VECTORCALL
__pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1518, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_6);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_1;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_1 = 0;
goto __pyx_L0;
+1519: if cd.values == NULL:
__pyx_t_2 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+1520: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1521: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1522: 'column kind 0x{:02X} has {} rows but no values buffer'.format(
__pyx_t_12 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but;
__Pyx_INCREF(__pyx_t_12);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 1522, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_3};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1520, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 1520, __pyx_L1_error)
+1523: <int>kind, row_count))
__pyx_t_11 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_7}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); }
+1524: nbytes = <Py_ssize_t>(row_count * cd.value_stride)
__pyx_v_nbytes = ((Py_ssize_t)(__pyx_v_row_count * __pyx_v_cd.value_stride));
+1525: src = <unsigned char*>cd.values
__pyx_v_src = ((unsigned char *)__pyx_v_cd.values);
+1526: if kind == qwp_reader_column_kind_boolean:
__pyx_t_2 = (__pyx_v_kind == qwp_reader_column_kind_boolean);
if (__pyx_t_2) {
/* … */
}
+1527: return np.frombuffer((<unsigned char[:nbytes]>src), dtype=np.uint8) != 0
__pyx_t_5 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_5);
if (!__pyx_v_src) {
PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
__PYX_ERR(1, 1527, __pyx_L1_error)
}
__pyx_t_4 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_nbytes)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#if CYTHON_COMPILING_IN_LIMITED_API
__pyx_t_14 = PyBytes_AsString(__pyx_t_4); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1527, __pyx_L1_error)
#else
__pyx_t_14 = PyBytes_AS_STRING(__pyx_t_4);
#endif
__pyx_t_13 = __pyx_array_new(__pyx_t_3, sizeof(unsigned char), __pyx_t_14, "c", (char *) __pyx_v_src); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_13);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_uint8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_t_13), __pyx_t_4};
#if CYTHON_VECTORCALL
__pyx_t_3 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_3);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_3 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF((PyObject *)__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_3 = __Pyx_PyLong_NeObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1527, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_3;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
+1528: return np.frombuffer((<unsigned char[:nbytes]>src), dtype=dtype).copy()
__pyx_t_5 = __pyx_v_np; __Pyx_INCREF(__pyx_t_5); if (!__pyx_v_src) { PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer"); __PYX_ERR(1, 1528, __pyx_L1_error) } __pyx_t_7 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_nbytes)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #if CYTHON_COMPILING_IN_LIMITED_API __pyx_t_14 = PyBytes_AsString(__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1528, __pyx_L1_error) #else __pyx_t_14 = PyBytes_AS_STRING(__pyx_t_7); #endif __pyx_t_13 = __pyx_array_new(__pyx_t_6, sizeof(unsigned char), __pyx_t_14, "c", (char *) __pyx_v_src); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_5, ((PyObject *)__pyx_t_13), __pyx_v_dtype}; #if CYTHON_VECTORCALL __pyx_t_7 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_INCREF(__pyx_t_7); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_7 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } #endif __pyx_t_4 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF((PyObject *)__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1528, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
1529:
1530:
+1531: cdef inline void_int _obj_chunk_set(
static CYTHON_INLINE __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__obj_chunk_set(PyArrayObject *__pyx_v_out, size_t __pyx_v_r, PyObject *__pyx_v_v) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._obj_chunk_set", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
1532: cnp.ndarray out, size_t r, object v) except -1:
1533: # np.empty(dtype=object) initialises every slot to None, so null rows are
1534: # left untouched and a mid-loop raise leaves the array safe to release.
+1535: cnp.PyArray_SETITEM(out, cnp.PyArray_GETPTR1(out, <cnp.npy_intp>r), v)
__pyx_t_1 = PyArray_SETITEM(__pyx_v_out, PyArray_GETPTR1(__pyx_v_out, ((npy_intp)__pyx_v_r)), __pyx_v_v); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1535, __pyx_L1_error)
1536:
1537:
+1538: cdef object _numpy_varlen_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_varlen_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, enum qwp_reader_column_kind __pyx_v_kind, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint32_t const *__pyx_v_offsets;
uint8_t const *__pyx_v_data;
uint8_t const *__pyx_v_validity;
size_t __pyx_v_r;
uint32_t __pyx_v_start;
uint32_t __pyx_v_end;
PyArrayObject *__pyx_v_out = 0;
int __pyx_v_is_binary;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._numpy_varlen_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1539: const qwp_reader_batch* batch,
1540: size_t col_idx,
1541: qwp_reader_column_kind kind,
1542: size_t row_count,
1543: object np):
1544: cdef qwp_reader_column_data cd
+1545: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1546: cdef const uint32_t* offsets
1547: cdef const uint8_t* data
1548: cdef const uint8_t* validity
1549: cdef size_t r
1550: cdef uint32_t start
1551: cdef uint32_t end
1552: cdef cnp.ndarray out
+1553: cdef bint is_binary = kind == qwp_reader_column_kind_binary
__pyx_v_is_binary = (__pyx_v_kind == qwp_reader_column_kind_binary);
+1554: _reader_check(
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1554, __pyx_L1_error)
1555: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1556: 'qwp_reader_batch_column_data')
+1557: out = np.empty(row_count, dtype=object)
__pyx_t_3 = __pyx_v_np; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1557, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 1557, __pyx_L1_error) __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1558: if row_count == 0:
__pyx_t_7 = (__pyx_v_row_count == 0);
if (__pyx_t_7) {
/* … */
}
+1559: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1560: if cd.var_offsets == NULL:
__pyx_t_7 = (__pyx_v_cd.var_offsets == NULL);
if (unlikely(__pyx_t_7)) {
/* … */
}
+1561: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1561, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1562: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1563: 'column kind 0x{:02X} has {} rows but no offset table'.format(
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but_2;
__Pyx_INCREF(__pyx_t_9);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 1563, __pyx_L1_error)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1561, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1561, __pyx_L1_error)
+1564: <int>kind, row_count))
__pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_10, __pyx_t_11}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); }
+1565: offsets = cd.var_offsets
__pyx_t_12 = __pyx_v_cd.var_offsets; __pyx_v_offsets = __pyx_t_12;
+1566: data = cd.var_data
__pyx_t_13 = __pyx_v_cd.var_data; __pyx_v_data = __pyx_t_13;
+1567: if data == NULL and cd.var_data_len > 0:
__pyx_t_14 = (__pyx_v_data == NULL);
if (__pyx_t_14) {
} else {
__pyx_t_7 = __pyx_t_14;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_14 = (__pyx_v_cd.var_data_len > 0);
__pyx_t_7 = __pyx_t_14;
__pyx_L6_bool_binop_done:;
if (unlikely(__pyx_t_7)) {
/* … */
}
+1568: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1568, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1569: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+1570: 'column kind 0x{:02X} has {} rows but no data buffer'.format(
__pyx_t_11 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but_3;
__Pyx_INCREF(__pyx_t_11);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_8))) __PYX_ERR(1, 1570, __pyx_L1_error)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_8};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1568, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1568, __pyx_L1_error)
+1571: <int>kind, row_count))
__pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_10, __pyx_t_9}; __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); }
+1572: validity = cd.validity
__pyx_t_15 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_15;
+1573: for r in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_16 = __pyx_t_5;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_r = __pyx_t_17;
+1574: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_14 = (__pyx_v_validity != NULL);
if (__pyx_t_14) {
} else {
__pyx_t_7 = __pyx_t_14;
goto __pyx_L11_bool_binop_done;
}
__pyx_t_14 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_7 = __pyx_t_14;
__pyx_L11_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
+1575: continue
goto __pyx_L8_continue;
+1576: start = offsets[r]
__pyx_v_start = (__pyx_v_offsets[__pyx_v_r]);
+1577: end = offsets[r + 1]
__pyx_v_end = (__pyx_v_offsets[(__pyx_v_r + 1)]);
+1578: if end < start or end > cd.var_data_len:
__pyx_t_14 = (__pyx_v_end < __pyx_v_start);
if (!__pyx_t_14) {
} else {
__pyx_t_7 = __pyx_t_14;
goto __pyx_L14_bool_binop_done;
}
__pyx_t_14 = (__pyx_v_end > __pyx_v_cd.var_data_len);
__pyx_t_7 = __pyx_t_14;
__pyx_L14_bool_binop_done:;
if (unlikely(__pyx_t_7)) {
/* … */
}
+1579: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1579, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+1580: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1581: 'corrupt varlen offsets in column kind 0x{:02X}'.format(
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_corrupt_varlen_offsets_in_column;
__Pyx_INCREF(__pyx_t_9);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(1, 1581, __pyx_L1_error)
__pyx_t_18 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_18 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_6};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_18, (3-__pyx_t_18) | (__pyx_t_18*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1579, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1579, __pyx_L1_error)
+1582: <int>kind))
__pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_18 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_18, (2-__pyx_t_18) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); }
+1583: if end > start:
__pyx_t_7 = (__pyx_v_end > __pyx_v_start);
if (__pyx_t_7) {
/* … */
goto __pyx_L16;
}
+1584: if is_binary:
if (__pyx_v_is_binary) {
/* … */
goto __pyx_L17;
}
+1585: _obj_chunk_set(out, r, PyBytes_FromStringAndSize(
__pyx_t_2 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_data + __pyx_v_start)), ((Py_ssize_t)(__pyx_v_end - __pyx_v_start))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_19 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_19 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1586: <const char*>(data + start), <Py_ssize_t>(end - start)))
1587: else:
+1588: _obj_chunk_set(out, r, PyUnicode_FromStringAndSize(
/*else*/ {
/* … */
__pyx_t_2 = PyUnicode_FromStringAndSize(((char const *)(__pyx_v_data + __pyx_v_start)), ((Py_ssize_t)(__pyx_v_end - __pyx_v_start))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1588, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
/* … */
__pyx_t_19 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_19 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1588, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L17:;
1589: <const char*>(data + start), <Py_ssize_t>(end - start)))
1590: else:
+1591: _obj_chunk_set(out, r, b'' if is_binary else u'')
/*else*/ {
if (__pyx_v_is_binary) {
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b__6);
__pyx_t_2 = __pyx_mstate_global->__pyx_kp_b__6;
} else {
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__6);
__pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__6;
}
__pyx_t_19 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_19 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1591, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L16:;
__pyx_L8_continue:;
}
+1592: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1593:
1594:
+1595: cdef object _numpy_symbol_codes_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_symbol_codes_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint32_t const *__pyx_v_codes;
uint8_t const *__pyx_v_validity;
size_t __pyx_v_r;
__Pyx_memviewslice __pyx_v_mv = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_out = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__PYX_XCLEAR_MEMVIEW(&__pyx_t_13, 1);
__Pyx_AddTraceback("questdb._client._numpy_symbol_codes_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XCLEAR_MEMVIEW(&__pyx_v_mv, 1);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1596: const qwp_reader_batch* batch,
1597: size_t col_idx,
1598: size_t row_count,
1599: object np):
1600: cdef qwp_reader_column_data cd
+1601: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1602: cdef const uint32_t* codes
1603: cdef const uint8_t* validity
1604: cdef size_t r
1605: cdef int64_t[::1] mv
+1606: _reader_check(
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1606, __pyx_L1_error)
1607: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1608: 'qwp_reader_batch_column_data')
+1609: out = np.empty(row_count, dtype=np.int64)
__pyx_t_3 = __pyx_v_np; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_5}; #if CYTHON_VECTORCALL __pyx_t_7 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1609, __pyx_L1_error) __Pyx_INCREF(__pyx_t_7); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_7 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_v_out = __pyx_t_2; __pyx_t_2 = 0;
+1610: if row_count == 0:
__pyx_t_8 = (__pyx_v_row_count == 0);
if (__pyx_t_8) {
/* … */
}
+1611: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1612: if cd.symbol_codes == NULL:
__pyx_t_8 = (__pyx_v_cd.symbol_codes == NULL);
if (unlikely(__pyx_t_8)) {
/* … */
}
+1613: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1613, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1614: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1615: 'symbol column has {} rows but no codes buffer'.format(row_count))
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_symbol_column_has_rows_but_no_co;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1615, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1615, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(1, 1615, __pyx_L1_error)
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1613, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1613, __pyx_L1_error)
+1616: codes = cd.symbol_codes
__pyx_t_11 = __pyx_v_cd.symbol_codes; __pyx_v_codes = __pyx_t_11;
+1617: validity = cd.validity
__pyx_t_12 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_12;
+1618: mv = out
__pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_dc_nn_int64_t(__pyx_v_out, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(1, 1618, __pyx_L1_error)
__pyx_v_mv = __pyx_t_13;
__pyx_t_13.memview = NULL;
__pyx_t_13.data = NULL;
+1619: for r in range(row_count):
__pyx_t_6 = __pyx_v_row_count;
__pyx_t_14 = __pyx_t_6;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_r = __pyx_t_15;
+1620: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_16 = (__pyx_v_validity != NULL);
if (__pyx_t_16) {
} else {
__pyx_t_8 = __pyx_t_16;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_16 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_8 = __pyx_t_16;
__pyx_L8_bool_binop_done:;
if (__pyx_t_8) {
/* … */
goto __pyx_L7;
}
+1621: mv[r] = -1
__pyx_t_17 = __pyx_v_r;
__pyx_t_1 = -1;
if (unlikely(__pyx_t_17 >= (size_t)__pyx_v_mv.shape[0])) __pyx_t_1 = 0;
if (unlikely(__pyx_t_1 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_1);
__PYX_ERR(1, 1621, __pyx_L1_error)
}
*((int64_t *) ( /* dim=0 */ ((char *) (((int64_t *) __pyx_v_mv.data) + __pyx_t_17)) )) = -1L;
1622: else:
+1623: mv[r] = <int64_t>codes[r]
/*else*/ {
__pyx_t_17 = __pyx_v_r;
__pyx_t_1 = -1;
if (unlikely(__pyx_t_17 >= (size_t)__pyx_v_mv.shape[0])) __pyx_t_1 = 0;
if (unlikely(__pyx_t_1 != -1)) {
__Pyx_RaiseBufferIndexError(__pyx_t_1);
__PYX_ERR(1, 1623, __pyx_L1_error)
}
*((int64_t *) ( /* dim=0 */ ((char *) (((int64_t *) __pyx_v_mv.data) + __pyx_t_17)) )) = ((int64_t)(__pyx_v_codes[__pyx_v_r]));
}
__pyx_L7:;
}
+1624: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1625:
1626:
+1627: cdef void _symbol_categories_extend(
static void __pyx_f_7questdb_7_client__symbol_categories_extend(PyObject *__pyx_v_cats, struct qwp_reader_symbol_dict const *__pyx_v_sd, size_t __pyx_v_start) {
size_t __pyx_v_i;
struct qwp_reader_symbol_entry const *__pyx_v_e;
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._symbol_categories_extend", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_L0:;
__Pyx_RefNannyFinishContext();
}
1628: list cats, const qwp_reader_symbol_dict* sd, size_t start):
1629: cdef size_t i
1630: cdef const qwp_reader_symbol_entry* e
+1631: for i in range(start, sd.entry_count):
__pyx_t_1 = __pyx_v_sd->entry_count;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = __pyx_v_start; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_i = __pyx_t_3;
+1632: e = &sd.entries[i]
__pyx_v_e = (&(__pyx_v_sd->entries[__pyx_v_i]));
+1633: if <uint64_t>e.offset + <uint64_t>e.length > <uint64_t>sd.heap_len:
__pyx_t_4 = ((((uint64_t)__pyx_v_e->offset) + ((uint64_t)__pyx_v_e->length)) > ((uint64_t)__pyx_v_sd->heap_len));
if (unlikely(__pyx_t_4)) {
/* … */
}
+1634: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1634, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+1635: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_corrupt_symbol_dictionary_heap_o}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 1634, __pyx_L1_error)
1636: 'corrupt symbol dictionary heap offsets')
+1637: cats.append(
if (unlikely(__pyx_v_cats == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "append");
__PYX_ERR(1, 1637, __pyx_L1_error)
}
/* … */
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_cats, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 1637, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
+1638: PyUnicode_FromStringAndSize(
__pyx_t_5 = PyUnicode_FromStringAndSize(((char const *)(__pyx_v_sd->heap + __pyx_v_e->offset)), ((Py_ssize_t)__pyx_v_e->length)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
1639: <const char*>(sd.heap + e.offset), <Py_ssize_t>e.length))
1640:
1641:
+1642: cdef class _SymbolStrings:
struct __pyx_obj_7questdb_7_client__SymbolStrings {
PyObject_HEAD
struct __pyx_vtabstruct_7questdb_7_client__SymbolStrings *__pyx_vtab;
PyObject **_slots;
size_t _cap;
uint32_t *_decoded;
size_t _n_decoded;
size_t _decoded_cap;
};
/* … */
struct __pyx_vtabstruct_7questdb_7_client__SymbolStrings {
int (*_reserve)(struct __pyx_obj_7questdb_7_client__SymbolStrings *, size_t);
PyObject *(*_decode)(struct __pyx_obj_7questdb_7_client__SymbolStrings *, struct qwp_reader_symbol_dict const *, uint32_t);
};
static struct __pyx_vtabstruct_7questdb_7_client__SymbolStrings *__pyx_vtabptr_7questdb_7_client__SymbolStrings;
1643: """A row result's SYMBOL strings by dictionary code, decoded on first use.
1644:
1645: A lease that keeps the connection dictionary warm
1646: (``reset_symbol_dict=False``) can carry far more entries than a result
1647: references, so nothing is decoded up front. Within one query the
1648: dictionary only grows, so a decoded string stays valid for the whole
1649: result. Each slot named in ``_decoded`` holds its own reference.
1650: """
1651: cdef PyObject** _slots
1652: cdef size_t _cap
1653: cdef uint32_t* _decoded
1654: cdef size_t _n_decoded
1655: cdef size_t _decoded_cap
1656:
+1657: def __cinit__(self):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_14_SymbolStrings_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_14_SymbolStrings_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, __pyx_nargs); return -1; }
const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) return -1;
if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__cinit__", __pyx_kwds); return -1;}
__pyx_r = __pyx_pf_7questdb_7_client_14_SymbolStrings___cinit__(((struct __pyx_obj_7questdb_7_client__SymbolStrings *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_14_SymbolStrings___cinit__(struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_self) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
return __pyx_r;
}
+1658: self._slots = NULL
__pyx_v_self->_slots = NULL;
+1659: self._cap = 0
__pyx_v_self->_cap = 0;
+1660: self._decoded = NULL
__pyx_v_self->_decoded = NULL;
+1661: self._n_decoded = 0
__pyx_v_self->_n_decoded = 0;
+1662: self._decoded_cap = 0
__pyx_v_self->_decoded_cap = 0;
1663:
+1664: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_14_SymbolStrings_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_14_SymbolStrings_3__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_14_SymbolStrings_2__dealloc__(((struct __pyx_obj_7questdb_7_client__SymbolStrings *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_14_SymbolStrings_2__dealloc__(struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_self) {
size_t __pyx_v_i;
/* … */
/* function exit code */
}
1665: cdef size_t i
+1666: for i in range(self._n_decoded):
__pyx_t_1 = __pyx_v_self->_n_decoded;
__pyx_t_2 = __pyx_t_1;
for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
__pyx_v_i = __pyx_t_3;
+1667: Py_XDECREF(self._slots[self._decoded[i]])
Py_XDECREF((__pyx_v_self->_slots[(__pyx_v_self->_decoded[__pyx_v_i])])); }
+1668: free(self._decoded)
free(__pyx_v_self->_decoded);
+1669: free(self._slots)
free(__pyx_v_self->_slots);
1670:
+1671: cdef int _reserve(self, size_t entry_count) except -1:
static int __pyx_f_7questdb_7_client_14_SymbolStrings__reserve(struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_self, size_t __pyx_v_entry_count) {
size_t __pyx_v_cap;
PyObject **__pyx_v_slots;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._SymbolStrings._reserve", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
1672: cdef size_t cap
1673: cdef PyObject** slots
+1674: if entry_count <= self._cap:
__pyx_t_1 = (__pyx_v_entry_count <= __pyx_v_self->_cap);
if (__pyx_t_1) {
/* … */
}
+1675: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
+1676: cap = max(entry_count, 2 * self._cap)
__pyx_t_2 = (2 * __pyx_v_self->_cap);
__pyx_t_3 = __pyx_v_entry_count;
__pyx_t_1 = (__pyx_t_2 > __pyx_t_3);
if (__pyx_t_1) {
__pyx_t_4 = __pyx_t_2;
} else {
__pyx_t_4 = __pyx_t_3;
}
__pyx_v_cap = __pyx_t_4;
+1677: if self._slots == NULL:
__pyx_t_1 = (__pyx_v_self->_slots == NULL);
if (__pyx_t_1) {
/* … */
goto __pyx_L4;
}
+1678: slots = <PyObject**>calloc(cap, sizeof(PyObject*))
__pyx_v_slots = ((PyObject **)calloc(__pyx_v_cap, (sizeof(PyObject *))));
1679: else:
+1680: slots = <PyObject**>realloc(self._slots, cap * sizeof(PyObject*))
/*else*/ {
__pyx_v_slots = ((PyObject **)realloc(__pyx_v_self->_slots, (__pyx_v_cap * (sizeof(PyObject *)))));
+1681: if slots != NULL:
__pyx_t_1 = (__pyx_v_slots != NULL);
if (__pyx_t_1) {
/* … */
}
}
__pyx_L4:;
+1682: memset(slots + self._cap, 0,
(void)(memset((__pyx_v_slots + __pyx_v_self->_cap), 0, ((__pyx_v_cap - __pyx_v_self->_cap) * (sizeof(PyObject *)))));
1683: (cap - self._cap) * sizeof(PyObject*))
+1684: if slots == NULL:
__pyx_t_1 = (__pyx_v_slots == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1685: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1685, __pyx_L1_error)
+1686: self._slots = slots
__pyx_v_self->_slots = __pyx_v_slots;
+1687: self._cap = cap
__pyx_v_self->_cap = __pyx_v_cap;
+1688: return 0
{
__pyx_r = 0;
}
goto __pyx_L0;
1689:
+1690: cdef str _decode(self, const qwp_reader_symbol_dict* sd, uint32_t code):
static PyObject *__pyx_f_7questdb_7_client_14_SymbolStrings__decode(struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_self, struct qwp_reader_symbol_dict const *__pyx_v_sd, uint32_t __pyx_v_code) {
struct qwp_reader_symbol_entry const *__pyx_v_e;
size_t __pyx_v_cap;
uint32_t *__pyx_v_decoded;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._SymbolStrings._decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1691: cdef const qwp_reader_symbol_entry* e = &sd.entries[code]
__pyx_v_e = (&(__pyx_v_sd->entries[__pyx_v_code]));
1692: cdef size_t cap
1693: cdef uint32_t* decoded
1694: cdef str s
+1695: if <uint64_t>e.offset + <uint64_t>e.length > <uint64_t>sd.heap_len:
__pyx_t_1 = ((((uint64_t)__pyx_v_e->offset) + ((uint64_t)__pyx_v_e->length)) > ((uint64_t)__pyx_v_sd->heap_len));
if (unlikely(__pyx_t_1)) {
/* … */
}
+1696: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1696, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1697: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_corrupt_symbol_dictionary_heap_o}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 1696, __pyx_L1_error)
1698: 'corrupt symbol dictionary heap offsets')
+1699: if self._n_decoded == self._decoded_cap:
__pyx_t_1 = (__pyx_v_self->_n_decoded == __pyx_v_self->_decoded_cap);
if (__pyx_t_1) {
/* … */
}
+1700: cap = max(<size_t>16, 2 * self._decoded_cap)
__pyx_t_7 = (2 * __pyx_v_self->_decoded_cap);
__pyx_t_8 = ((size_t)16);
__pyx_t_1 = (__pyx_t_7 > __pyx_t_8);
if (__pyx_t_1) {
__pyx_t_9 = __pyx_t_7;
} else {
__pyx_t_9 = __pyx_t_8;
}
__pyx_v_cap = __pyx_t_9;
+1701: decoded = <uint32_t*>realloc(
__pyx_v_decoded = ((uint32_t *)realloc(__pyx_v_self->_decoded, (__pyx_v_cap * (sizeof(uint32_t)))));
1702: self._decoded, cap * sizeof(uint32_t))
+1703: if decoded == NULL:
__pyx_t_1 = (__pyx_v_decoded == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1704: raise MemoryError()
PyErr_NoMemory(); __PYX_ERR(1, 1704, __pyx_L1_error)
+1705: self._decoded = decoded
__pyx_v_self->_decoded = __pyx_v_decoded;
+1706: self._decoded_cap = cap
__pyx_v_self->_decoded_cap = __pyx_v_cap;
+1707: s = PyUnicode_FromStringAndSize(
__pyx_t_2 = PyUnicode_FromStringAndSize(((char const *)(__pyx_v_sd->heap + __pyx_v_e->offset)), ((Py_ssize_t)__pyx_v_e->length)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1707, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_s = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
1708: <const char*>(sd.heap + e.offset), <Py_ssize_t>e.length)
+1709: Py_INCREF(s)
Py_INCREF(__pyx_v_s);
+1710: self._slots[code] = <PyObject*>s
(__pyx_v_self->_slots[__pyx_v_code]) = ((PyObject *)__pyx_v_s);
+1711: self._decoded[self._n_decoded] = code
(__pyx_v_self->_decoded[__pyx_v_self->_n_decoded]) = __pyx_v_code;
+1712: self._n_decoded += 1
__pyx_v_self->_n_decoded = (__pyx_v_self->_n_decoded + 1);
+1713: return s
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_s);
__pyx_r = __pyx_v_s;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1714:
1715:
+1716: cdef inline uint64_t _geohash_wire_value(
static CYTHON_INLINE uint64_t __pyx_f_7questdb_7_client__geohash_wire_value(unsigned char const *__pyx_v_src, size_t __pyx_v_row, size_t __pyx_v_stride, size_t __pyx_v_nbytes, uint64_t __pyx_v_mask) {
size_t __pyx_v_off;
uint64_t __pyx_v_v;
size_t __pyx_v_b;
uint64_t __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
1717: const unsigned char* src, size_t row, size_t stride, size_t nbytes,
1718: uint64_t mask) noexcept nogil:
1719: """Row `row` of a GEOHASH column `stride` bytes wide, zero-extended.
1720:
1721: Wherever 8 bytes remain, it is one unaligned load masked to the
1722: value's own bytes; the last few rows assemble theirs byte by byte.
1723: The load reads the wire's little-endian bytes as a host integer,
1724: which `_numpy_uuid_chunk` also relies on."""
+1725: cdef size_t off = row * stride
__pyx_v_off = (__pyx_v_row * __pyx_v_stride);
+1726: cdef uint64_t v = 0
__pyx_v_v = 0;
1727: cdef size_t b
+1728: if off + 8 <= nbytes:
__pyx_t_1 = ((__pyx_v_off + 8) <= __pyx_v_nbytes);
if (__pyx_t_1) {
/* … */
}
+1729: memcpy(&v, src + off, 8)
(void)(memcpy((&__pyx_v_v), (__pyx_v_src + __pyx_v_off), 8));
+1730: return v & mask
{
__pyx_r = (__pyx_v_v & __pyx_v_mask);
}
goto __pyx_L0;
+1731: for b in range(stride):
__pyx_t_2 = __pyx_v_stride;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_b = __pyx_t_4;
+1732: v |= (<uint64_t>src[off + b]) << (8 * b)
__pyx_v_v = (__pyx_v_v | (((uint64_t)(__pyx_v_src[(__pyx_v_off + __pyx_v_b)])) << (8 * __pyx_v_b))); }
+1733: return v
{
__pyx_r = __pyx_v_v;
}
goto __pyx_L0;
1734:
1735:
+1736: cdef object _numpy_geohash_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_geohash_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
PyObject *__pyx_v_dtype = 0;
size_t __pyx_v_stride;
size_t __pyx_v_target;
unsigned int __pyx_v_precision;
Py_ssize_t __pyx_v_nbytes;
unsigned char *__pyx_v_src;
uint64_t __pyx_v_mask;
void *__pyx_v_dst;
size_t __pyx_v_r;
PyObject *__pyx_v_out = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF((PyObject *)__pyx_t_14);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_AddTraceback("questdb._client._numpy_geohash_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dtype);
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1737: const qwp_reader_batch* batch,
1738: size_t col_idx,
1739: size_t row_count,
1740: object np):
1741: cdef qwp_reader_column_data cd
+1742: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1743: cdef object dtype
1744: cdef size_t stride
1745: cdef size_t target
1746: cdef unsigned int precision
1747: cdef Py_ssize_t nbytes
1748: cdef unsigned char* src
1749: cdef uint64_t mask
1750: cdef void* dst
1751: cdef size_t r
+1752: _reader_check(
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1752, __pyx_L1_error)
1753: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1754: 'qwp_reader_batch_column_data')
+1755: stride = cd.value_stride
__pyx_t_2 = __pyx_v_cd.value_stride; __pyx_v_stride = __pyx_t_2;
+1756: precision = cd.geohash_precision_bits
__pyx_t_3 = __pyx_v_cd.geohash_precision_bits; __pyx_v_precision = __pyx_t_3;
1757: # The width comes from the precision rather than from the wire
1758: # stride, and is signed, so that it matches what the Arrow egress
1759: # gives the same column. A signed width is also what every write
1760: # route takes as it stands: the native Arrow importer carries a
1761: # `geohash` claim only on a signed Int8/16/32/64, and an unsigned
1762: # column reaches it only once `_dataframe_reinterpret_unsigned_geohash`
1763: # has given it the signed type of the same width.
1764: #
1765: # Each width carries a bit of headroom because a precision fills its
1766: # bits: an 8-bit geohash holds 0..255, which is every bit of an
1767: # unsigned byte and more than a signed one can express, so it takes
1768: # the 16-bit slot. That keeps every value positive in its container,
1769: # which is what the range check on the way back in expects.
+1770: if precision < 1 or precision > 60:
__pyx_t_5 = (__pyx_v_precision < 1);
if (!__pyx_t_5) {
} else {
__pyx_t_4 = __pyx_t_5;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_5 = (__pyx_v_precision > 60);
__pyx_t_4 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_4)) {
/* … */
}
+1771: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1771, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
+1772: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1772, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1773: 'unexpected geohash precision {} bits'.format(precision))
__pyx_t_11 = __pyx_mstate_global->__pyx_kp_u_unexpected_geohash_precision_bit;
__Pyx_INCREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyLong_From_unsigned_int(__pyx_v_precision); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 1773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_12};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1773, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_9))) __PYX_ERR(1, 1773, __pyx_L1_error)
__pyx_t_2 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_2 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_10, __pyx_t_9};
__pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_2, (3-__pyx_t_2) | (__pyx_t_2*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1771, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__PYX_ERR(1, 1771, __pyx_L1_error)
+1774: if precision <= 7:
__pyx_t_4 = (__pyx_v_precision <= 7);
if (__pyx_t_4) {
/* … */
goto __pyx_L6;
}
+1775: dtype = np.dtype(np.int8)
__pyx_t_8 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1775, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_9};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1775, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_v_dtype = __pyx_t_6;
__pyx_t_6 = 0;
+1776: target = 1
__pyx_v_target = 1;
+1777: elif precision <= 15:
__pyx_t_4 = (__pyx_v_precision <= 15);
if (__pyx_t_4) {
/* … */
goto __pyx_L6;
}
+1778: dtype = np.dtype(np.int16)
__pyx_t_9 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int16); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_v_dtype = __pyx_t_6;
__pyx_t_6 = 0;
+1779: target = 2
__pyx_v_target = 2;
+1780: elif precision <= 31:
__pyx_t_4 = (__pyx_v_precision <= 31);
if (__pyx_t_4) {
/* … */
goto __pyx_L6;
}
+1781: dtype = np.dtype(np.int32)
__pyx_t_8 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int32); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_9};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_v_dtype = __pyx_t_6;
__pyx_t_6 = 0;
+1782: target = 4
__pyx_v_target = 4;
1783: else:
+1784: dtype = np.dtype(np.int64)
/*else*/ {
__pyx_t_9 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_int64); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1784, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_v_dtype = __pyx_t_6;
__pyx_t_6 = 0;
+1785: target = 8
__pyx_v_target = 8; } __pyx_L6:;
+1786: if stride == 0 or stride > target:
__pyx_t_5 = (__pyx_v_stride == 0);
if (!__pyx_t_5) {
} else {
__pyx_t_4 = __pyx_t_5;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_5 = (__pyx_v_stride > __pyx_v_target);
__pyx_t_4 = __pyx_t_5;
__pyx_L8_bool_binop_done:;
if (unlikely(__pyx_t_4)) {
/* … */
}
+1787: raise QuestDBError(
__pyx_t_8 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1787, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+1788: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1789: 'geohash column of {} bits arrived {} bytes wide'.format(
__pyx_t_12 = __pyx_mstate_global->__pyx_kp_u_geohash_column_of_bits_arrived_b;
__Pyx_INCREF(__pyx_t_12);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_10))||((__pyx_t_10) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_10))) __PYX_ERR(1, 1789, __pyx_L1_error)
__pyx_t_2 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_8);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_2 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_7, __pyx_t_10};
__pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_2, (3-__pyx_t_2) | (__pyx_t_2*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1787, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__PYX_ERR(1, 1787, __pyx_L1_error)
+1790: precision, stride))
__pyx_t_11 = __Pyx_PyLong_From_unsigned_int(__pyx_v_precision); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_13 = __Pyx_PyLong_FromSize_t(__pyx_v_stride); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_2 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_12, __pyx_t_11, __pyx_t_13}; __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_2, (3-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); }
+1791: if row_count == 0:
__pyx_t_4 = (__pyx_v_row_count == 0);
if (__pyx_t_4) {
/* … */
}
+1792: return np.empty(0, dtype=dtype)
__pyx_t_9 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_mstate_global->__pyx_int_0, __pyx_v_dtype};
#if CYTHON_VECTORCALL
__pyx_t_10 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1792, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_10);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_10 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1792, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
}
#endif
__pyx_t_6 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1792, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_6;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_6 = 0;
goto __pyx_L0;
+1793: if cd.values == NULL:
__pyx_t_4 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_4)) {
/* … */
}
+1794: raise QuestDBError(
__pyx_t_10 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+1795: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+1796: 'geohash column has {} rows but no values buffer'.format(row_count))
__pyx_t_13 = __pyx_mstate_global->__pyx_kp_u_geohash_column_has_rows_but_no_v;
__Pyx_INCREF(__pyx_t_13);
__pyx_t_11 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_11};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1796, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(1, 1796, __pyx_L1_error)
__pyx_t_2 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_10);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_10);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_2 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_10, __pyx_t_8, __pyx_t_7};
__pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_2, (3-__pyx_t_2) | (__pyx_t_2*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_Raise(__pyx_t_6, 0, 0, 0);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__PYX_ERR(1, 1794, __pyx_L1_error)
+1797: nbytes = <Py_ssize_t>(row_count * stride)
__pyx_v_nbytes = ((Py_ssize_t)(__pyx_v_row_count * __pyx_v_stride));
+1798: src = <unsigned char*>cd.values
__pyx_v_src = ((unsigned char *)__pyx_v_cd.values);
+1799: if stride == target:
__pyx_t_4 = (__pyx_v_stride == __pyx_v_target);
if (__pyx_t_4) {
/* … */
}
+1800: return np.frombuffer((<unsigned char[:nbytes]>src), dtype=dtype).copy()
__pyx_t_8 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_8);
if (!__pyx_v_src) {
PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
__PYX_ERR(1, 1800, __pyx_L1_error)
}
__pyx_t_11 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_10 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_nbytes)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
#if CYTHON_COMPILING_IN_LIMITED_API
__pyx_t_15 = PyBytes_AsString(__pyx_t_11); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 1800, __pyx_L1_error)
#else
__pyx_t_15 = PyBytes_AS_STRING(__pyx_t_11);
#endif
__pyx_t_14 = __pyx_array_new(__pyx_t_10, sizeof(unsigned char), __pyx_t_15, "c", (char *) __pyx_v_src); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_14);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_8, ((PyObject *)__pyx_t_14), __pyx_v_dtype};
#if CYTHON_VECTORCALL
__pyx_t_11 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_11);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_11 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
}
#endif
__pyx_t_7 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF((PyObject *)__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_9 = __pyx_t_7;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_2, (1-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1800, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_6;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_6 = 0;
goto __pyx_L0;
+1801: if stride == 1 or stride == 2 or stride == 4:
switch (__pyx_v_stride) {
case 1:
case 2:
case 4:
/* … */
break;
default: break;
}
1802: # A narrower power-of-two width widens in one vectorized cast.
+1803: return np.frombuffer(
__pyx_t_11 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_11);
+1804: (<unsigned char[:nbytes]>src),
if (!__pyx_v_src) {
PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
__PYX_ERR(1, 1804, __pyx_L1_error)
}
__pyx_t_10 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_8 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_nbytes)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1804, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
#if CYTHON_COMPILING_IN_LIMITED_API
__pyx_t_15 = PyBytes_AsString(__pyx_t_10); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 1804, __pyx_L1_error)
#else
__pyx_t_15 = PyBytes_AS_STRING(__pyx_t_10);
#endif
__pyx_t_14 = __pyx_array_new(__pyx_t_8, sizeof(unsigned char), __pyx_t_15, "c", (char *) __pyx_v_src); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1804, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_14);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+1805: dtype=np.dtype('<u{}'.format(stride))).astype(dtype)
__pyx_t_8 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_12 = __pyx_mstate_global->__pyx_kp_u_u;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_16 = __Pyx_PyLong_FromSize_t(__pyx_v_stride); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_16};
__pyx_t_13 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_13))||((__pyx_t_13) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_13))) __PYX_ERR(1, 1805, __pyx_L1_error)
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_13};
__pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_dtype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
}
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_11, ((PyObject *)__pyx_t_14), __pyx_t_10};
#if CYTHON_VECTORCALL
__pyx_t_13 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1803, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_13);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_13 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1803, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
}
#endif
__pyx_t_9 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF((PyObject *)__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1803, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_7 = __pyx_t_9;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_2 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_dtype};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1805, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_6;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_6 = 0;
goto __pyx_L0;
1806: # Strides 3, 5, 6 and 7 have no NumPy integer type to cast from, so
1807: # each value is assembled from its bytes.
+1808: mask = (<uint64_t>1 << (8 * stride)) - 1
__pyx_v_mask = ((((uint64_t)1) << (8 * __pyx_v_stride)) - 1);
+1809: out = np.empty(<Py_ssize_t>row_count, dtype=dtype)
__pyx_t_9 = __pyx_v_np; __Pyx_INCREF(__pyx_t_9); __pyx_t_7 = PyLong_FromSsize_t(((Py_ssize_t)__pyx_v_row_count)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_v_dtype}; #if CYTHON_VECTORCALL __pyx_t_13 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1809, __pyx_L1_error) __Pyx_INCREF(__pyx_t_13); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_13 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); } #endif __pyx_t_6 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_v_out = __pyx_t_6; __pyx_t_6 = 0;
+1810: dst = cnp.PyArray_DATA(<cnp.ndarray>out)
__pyx_v_dst = PyArray_DATA(((PyArrayObject *)__pyx_v_out));
+1811: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L15;
}
__pyx_L15:;
}
}
+1812: if target == 4:
__pyx_t_4 = (__pyx_v_target == 4);
if (__pyx_t_4) {
/* … */
goto __pyx_L16;
}
+1813: for r in range(row_count):
__pyx_t_2 = __pyx_v_row_count;
__pyx_t_17 = __pyx_t_2;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_r = __pyx_t_18;
+1814: (<int32_t*>dst)[r] = <int32_t>_geohash_wire_value(
(((int32_t *)__pyx_v_dst)[__pyx_v_r]) = ((int32_t)__pyx_f_7questdb_7_client__geohash_wire_value(__pyx_v_src, __pyx_v_r, __pyx_v_stride, ((size_t)__pyx_v_nbytes), __pyx_v_mask));
}
1815: src, r, stride, <size_t>nbytes, mask)
1816: else:
+1817: for r in range(row_count):
/*else*/ {
__pyx_t_2 = __pyx_v_row_count;
__pyx_t_17 = __pyx_t_2;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_r = __pyx_t_18;
+1818: (<int64_t*>dst)[r] = <int64_t>_geohash_wire_value(
(((int64_t *)__pyx_v_dst)[__pyx_v_r]) = ((int64_t)__pyx_f_7questdb_7_client__geohash_wire_value(__pyx_v_src, __pyx_v_r, __pyx_v_stride, ((size_t)__pyx_v_nbytes), __pyx_v_mask));
}
}
__pyx_L16:;
}
1819: src, r, stride, <size_t>nbytes, mask)
+1820: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1821:
1822:
+1823: cdef object _numpy_uuid_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_uuid_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
PyObject *__pyx_v_uuid_cls = 0;
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint8_t const *__pyx_v_validity;
uint8_t const *__pyx_v_values;
size_t __pyx_v_r;
size_t __pyx_v_stride;
uint64_t __pyx_v_lo;
uint64_t __pyx_v_hi;
PyArrayObject *__pyx_v_out = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._numpy_uuid_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_uuid_cls);
__Pyx_XDECREF((PyObject *)__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1824: const qwp_reader_batch* batch,
1825: size_t col_idx,
1826: size_t row_count,
1827: object np):
+1828: cdef object uuid_cls = _uuid.UUID
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_uuid_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_uuid_cls = __pyx_t_2; __pyx_t_2 = 0;
1829: cdef qwp_reader_column_data cd
+1830: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1831: cdef const uint8_t* validity
1832: cdef const uint8_t* values
1833: cdef size_t r
1834: cdef size_t stride
1835: cdef uint64_t lo
1836: cdef uint64_t hi
1837: cdef cnp.ndarray out
+1838: _reader_check(
__pyx_t_3 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1838, __pyx_L1_error)
1839: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1840: 'qwp_reader_batch_column_data')
+1841: out = np.empty(row_count, dtype=object)
__pyx_t_1 = __pyx_v_np; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_4, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1841, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 1841, __pyx_L1_error) __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1842: if row_count == 0:
__pyx_t_7 = (__pyx_v_row_count == 0);
if (__pyx_t_7) {
/* … */
}
+1843: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1844: if cd.values == NULL:
__pyx_t_7 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_7)) {
/* … */
}
+1845: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1845, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1846: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1846, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1847: 'uuid column has {} rows but no values buffer'.format(row_count))
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_uuid_column_has_rows_but_no_valu;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1847, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_1))) __PYX_ERR(1, 1847, __pyx_L1_error)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_t_1};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1845, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1845, __pyx_L1_error)
+1848: validity = cd.validity
__pyx_t_11 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_11;
+1849: values = <const uint8_t*>cd.values
__pyx_v_values = ((uint8_t const *)__pyx_v_cd.values);
+1850: stride = cd.value_stride if cd.value_stride != 0 else 16
__pyx_t_7 = (__pyx_v_cd.value_stride != 0);
if (__pyx_t_7) {
__pyx_t_5 = __pyx_v_cd.value_stride;
} else {
__pyx_t_5 = 16;
}
__pyx_v_stride = __pyx_t_5;
+1851: for r in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_12 = __pyx_t_5;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_r = __pyx_t_13;
+1852: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_14 = (__pyx_v_validity != NULL);
if (__pyx_t_14) {
} else {
__pyx_t_7 = __pyx_t_14;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_14 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_7 = __pyx_t_14;
__pyx_L8_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
+1853: continue
goto __pyx_L5_continue;
1854: # The reader hands out canonical RFC 4122 big-endian rows,
1855: # having already reversed them out of QWP wire order: the first
1856: # eight bytes are the high half and the second eight the low
1857: # half, each most-significant byte first. `UUID(int=...)` takes
1858: # the two halves as host-order integers, so each one is byte
1859: # swapped on the way in. `UUID(bytes=...)` would accept the row
1860: # verbatim but costs about 70 ns more per row, because CPython
1861: # builds the same integer from the buffer anyway on top of
1862: # allocating a `bytes` object for every row.
+1863: memcpy(&hi, values + r * stride, 8)
(void)(memcpy((&__pyx_v_hi), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 8));
+1864: memcpy(&lo, values + r * stride + 8, 8)
(void)(memcpy((&__pyx_v_lo), ((__pyx_v_values + (__pyx_v_r * __pyx_v_stride)) + 8), 8));
+1865: hi = bswap64(hi)
__pyx_v_hi = __pyx_f_7questdb_7_client_bswap64(__pyx_v_hi);
+1866: lo = bswap64(lo)
__pyx_v_lo = __pyx_f_7questdb_7_client_bswap64(__pyx_v_lo);
+1867: _obj_chunk_set(
__pyx_t_16 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1867, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_L5_continue:; }
+1868: out, r, uuid_cls(int=((<object>hi) << 64) | (<object>lo)))
__pyx_t_4 = NULL;
__Pyx_INCREF(__pyx_v_uuid_cls);
__pyx_t_1 = __pyx_v_uuid_cls;
__pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_hi); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_6 = PyNumber_Lshift(__pyx_t_8, __pyx_mstate_global->__pyx_int_64); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = __Pyx_PyLong_From_uint64_t(__pyx_v_lo); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_10 = __Pyx_PyNumber_Or_object_object(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_15 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
__pyx_t_15 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_10};
#if CYTHON_VECTORCALL
__pyx_t_8 = __pyx_mstate_global->__pyx_tuple[13];
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_8);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_int};
__pyx_t_8 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
#endif
__pyx_t_2 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_15, (1-__pyx_t_15) | (__pyx_t_15*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
/* … */
{
PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_int};
__pyx_mstate_global->__pyx_tuple[13] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[13])) __PYX_ERR(1, 1868, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]);
+1869: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1870:
1871:
+1872: cdef object _numpy_long256_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_long256_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint8_t const *__pyx_v_validity;
uint8_t const *__pyx_v_values;
size_t __pyx_v_r;
size_t __pyx_v_stride;
PyArrayObject *__pyx_v_out = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._numpy_long256_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_out);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1873: const qwp_reader_batch* batch,
1874: size_t col_idx,
1875: size_t row_count,
1876: object np):
1877: cdef qwp_reader_column_data cd
+1878: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1879: cdef const uint8_t* validity
1880: cdef const uint8_t* values
1881: cdef size_t r
1882: cdef size_t stride
1883: cdef cnp.ndarray out
+1884: _reader_check(
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 1884, __pyx_L1_error)
1885: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1886: 'qwp_reader_batch_column_data')
+1887: out = np.empty(row_count, dtype=object)
__pyx_t_3 = __pyx_v_np; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1887, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 1887, __pyx_L1_error) __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1888: if row_count == 0:
__pyx_t_7 = (__pyx_v_row_count == 0);
if (__pyx_t_7) {
/* … */
}
+1889: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1890: if cd.values == NULL:
__pyx_t_7 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_7)) {
/* … */
}
+1891: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1892: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1893: 'long256 column has {} rows but no values buffer'.format(row_count))
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_long256_column_has_rows_but_no_v;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 1893, __pyx_L1_error)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1891, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1891, __pyx_L1_error)
+1894: validity = cd.validity
__pyx_t_11 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_11;
+1895: values = <const uint8_t*>cd.values
__pyx_v_values = ((uint8_t const *)__pyx_v_cd.values);
+1896: stride = cd.value_stride if cd.value_stride != 0 else 32
__pyx_t_7 = (__pyx_v_cd.value_stride != 0);
if (__pyx_t_7) {
__pyx_t_5 = __pyx_v_cd.value_stride;
} else {
__pyx_t_5 = 32;
}
__pyx_v_stride = __pyx_t_5;
+1897: for r in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_12 = __pyx_t_5;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_r = __pyx_t_13;
+1898: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_14 = (__pyx_v_validity != NULL);
if (__pyx_t_14) {
} else {
__pyx_t_7 = __pyx_t_14;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_14 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_7 = __pyx_t_14;
__pyx_L8_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
+1899: continue
goto __pyx_L5_continue;
+1900: _obj_chunk_set(out, r, int.from_bytes(
__pyx_t_4 = ((PyObject *)(&PyLong_Type));
__Pyx_INCREF(__pyx_t_4);
/* … */
__pyx_t_16 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_16 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1900, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_L5_continue:;
}
/* … */
{
PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_signed};
__pyx_mstate_global->__pyx_tuple[14] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[14])) __PYX_ERR(1, 1900, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[14]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[14]);
+1901: PyBytes_FromStringAndSize(<const char*>(values + r * stride), 32),
__pyx_t_3 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_values + (__pyx_v_r * __pyx_v_stride))), 32); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+1902: 'little', signed=False))
__pyx_t_15 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_3, __pyx_mstate_global->__pyx_n_u_little, Py_False};
#if CYTHON_VECTORCALL
__pyx_t_8 = __pyx_mstate_global->__pyx_tuple[14];
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1900, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_8);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_signed};
__pyx_t_8 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1900, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
#endif
__pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_bytes, __pyx_callargs+__pyx_t_15, (3-__pyx_t_15) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1900, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
+1903: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1904:
1905:
+1906: cdef object _numpy_decimal_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_decimal_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
PyObject *__pyx_v_decimal_cls = 0;
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint8_t const *__pyx_v_validity;
uint8_t const *__pyx_v_values;
size_t __pyx_v_r;
size_t __pyx_v_width;
int __pyx_v_scale;
PyArrayObject *__pyx_v_out = 0;
PyObject *__pyx_v_unscaled = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._numpy_decimal_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_decimal_cls);
__Pyx_XDECREF((PyObject *)__pyx_v_out);
__Pyx_XDECREF(__pyx_v_unscaled);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_18_numpy_array_chunk_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
1907: const qwp_reader_batch* batch,
1908: size_t col_idx,
1909: size_t row_count,
1910: object np):
+1911: cdef object decimal_cls = Decimal
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_decimal_cls = __pyx_t_1; __pyx_t_1 = 0;
1912: cdef qwp_reader_column_data cd
+1913: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1914: cdef const uint8_t* validity
1915: cdef const uint8_t* values
1916: cdef size_t r
1917: cdef size_t width
1918: cdef int scale
1919: cdef cnp.ndarray out
+1920: _reader_check(
__pyx_t_2 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 1920, __pyx_L1_error)
1921: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
1922: 'qwp_reader_batch_column_data')
+1923: out = np.empty(row_count, dtype=object)
__pyx_t_3 = __pyx_v_np; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1923, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 1923, __pyx_L1_error) __pyx_v_out = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1924: if row_count == 0:
__pyx_t_7 = (__pyx_v_row_count == 0);
if (__pyx_t_7) {
/* … */
}
+1925: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1926: if cd.values == NULL:
__pyx_t_7 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_7)) {
/* … */
}
+1927: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1928: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1929: 'decimal column has {} rows but no values buffer'.format(row_count))
__pyx_t_9 = __pyx_mstate_global->__pyx_kp_u_decimal_column_has_rows_but_no_v;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1929, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1929, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 1929, __pyx_L1_error)
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_8, __pyx_t_3};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 1927, __pyx_L1_error)
+1930: validity = cd.validity
__pyx_t_11 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_11;
+1931: values = <const uint8_t*>cd.values
__pyx_v_values = ((uint8_t const *)__pyx_v_cd.values);
+1932: width = cd.value_stride
__pyx_t_5 = __pyx_v_cd.value_stride; __pyx_v_width = __pyx_t_5;
+1933: scale = cd.decimal_scale
__pyx_t_12 = __pyx_v_cd.decimal_scale; __pyx_v_scale = __pyx_t_12;
+1934: for r in range(row_count):
__pyx_t_5 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_5;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+1935: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_15 = (__pyx_v_validity != NULL);
if (__pyx_t_15) {
} else {
__pyx_t_7 = __pyx_t_15;
goto __pyx_L8_bool_binop_done;
}
__pyx_t_15 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_7 = __pyx_t_15;
__pyx_L8_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
+1936: continue
goto __pyx_L5_continue;
+1937: unscaled = int.from_bytes(
__pyx_t_4 = ((PyObject *)(&PyLong_Type));
__Pyx_INCREF(__pyx_t_4);
+1938: PyBytes_FromStringAndSize(
__pyx_t_3 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_values + (__pyx_v_r * __pyx_v_width))), ((Py_ssize_t)__pyx_v_width)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
1939: <const char*>(values + r * width), <Py_ssize_t>width),
+1940: 'little', signed=True)
__pyx_t_16 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_3, __pyx_mstate_global->__pyx_n_u_little, Py_True};
#if CYTHON_VECTORCALL
__pyx_t_8 = __pyx_mstate_global->__pyx_tuple[14];
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1937, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_8);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_signed};
__pyx_t_8 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1937, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_bytes, __pyx_callargs+__pyx_t_16, (3-__pyx_t_16) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1937, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_unscaled, __pyx_t_1);
__pyx_t_1 = 0;
+1941: _obj_chunk_set(out, r, decimal_cls(f'{unscaled}e{-scale}'))
__pyx_t_8 = NULL;
__Pyx_INCREF(__pyx_v_decimal_cls);
__pyx_t_3 = __pyx_v_decimal_cls;
__pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_unscaled, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_6 = __Pyx_PyUnicode_From_int((-__pyx_v_scale), 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_17[0] = __pyx_t_4;
__pyx_t_17[1] = __pyx_mstate_global->__pyx_n_u_e;
__pyx_t_17[2] = __pyx_t_6;
__pyx_t_18 = 1;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_18 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_17[2]);
#endif
__pyx_t_2 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_2 |= __Pyx_PyUnicode_KIND_04(__pyx_t_17[0]);
#endif
__pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_17, 3, __pyx_t_18, __pyx_t_2);
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_16 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_8);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_16 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_10};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_16, (2-__pyx_t_16) | (__pyx_t_16*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1941, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_19 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_1); if (unlikely(__pyx_t_19 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 1941, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_L5_continue:;
}
+1942: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
1943:
1944:
+1945: cdef object _numpy_array_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_array_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, enum qwp_reader_column_kind __pyx_v_kind, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk *__pyx_cur_scope;
struct qwp_reader_array_data __pyx_v_ad;
questdb_error *__pyx_v_err;
uint8_t const *__pyx_v_validity;
uint8_t const *__pyx_v_data;
uint32_t const *__pyx_v_data_offsets;
uint32_t const *__pyx_v_shape_offsets;
size_t __pyx_v_r;
uint32_t __pyx_v_dstart;
uint32_t __pyx_v_dend;
Py_ssize_t __pyx_v_blen;
PyArrayObject *__pyx_v_out = 0;
PyObject *__pyx_v_flat = NULL;
PyObject *__pyx_gb_7questdb_7_client_18_numpy_array_chunk_2generator4 = 0;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 1945, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF((PyObject *)__pyx_t_21);
__Pyx_AddTraceback("questdb._client._numpy_array_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_out);
__Pyx_XDECREF(__pyx_v_flat);
__Pyx_XDECREF(__pyx_gb_7questdb_7_client_18_numpy_array_chunk_2generator4);
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk {
PyObject_HEAD
uint32_t __pyx_v_send;
uint32_t const *__pyx_v_shapes;
uint32_t __pyx_v_sstart;
};
1946: const qwp_reader_batch* batch,
1947: size_t col_idx,
1948: qwp_reader_column_kind kind,
1949: size_t row_count,
1950: object np):
1951: cdef qwp_reader_array_data ad
+1952: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
1953: cdef const uint8_t* validity
1954: cdef const uint8_t* data
1955: cdef const uint32_t* data_offsets
1956: cdef const uint32_t* shapes
1957: cdef const uint32_t* shape_offsets
1958: cdef size_t r
1959: cdef size_t k
1960: cdef uint32_t dstart
1961: cdef uint32_t dend
1962: cdef uint32_t sstart
1963: cdef uint32_t send
1964: cdef Py_ssize_t blen
1965: cdef cnp.ndarray out
+1966: if kind != qwp_reader_column_kind_double_array:
__pyx_t_1 = (__pyx_v_kind != qwp_reader_column_kind_double_array);
if (unlikely(__pyx_t_1)) {
/* … */
}
+1967: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1968: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1969: 'numpy egress supports only double arrays (kind 0x{:02X})'.format(
__pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_numpy_egress_supports_only_doubl;
__Pyx_INCREF(__pyx_t_7);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 1969, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_5};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1967, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1967, __pyx_L1_error)
+1970: <int>kind))
__pyx_t_8 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+1971: _reader_check(
__pyx_t_10 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_array_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_ad), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_array_column_da); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 1971, __pyx_L1_error)
1972: qwp_reader_batch_array_column_data(batch, col_idx, &ad, &err), &err,
1973: 'qwp_reader_batch_array_column_data')
+1974: out = np.empty(row_count, dtype=object)
__pyx_t_4 = __pyx_v_np; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1974, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_5numpy_ndarray))))) __PYX_ERR(1, 1974, __pyx_L1_error) __pyx_v_out = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1975: if row_count == 0:
__pyx_t_1 = (__pyx_v_row_count == 0);
if (__pyx_t_1) {
/* … */
}
+1976: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+1977: if ad.data_offsets == NULL or ad.shape_offsets == NULL:
__pyx_t_11 = (__pyx_v_ad.data_offsets == NULL);
if (!__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_11 = (__pyx_v_ad.shape_offsets == NULL);
__pyx_t_1 = __pyx_t_11;
__pyx_L6_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+1978: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1978, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+1979: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1980: 'array column has {} rows but no offset tables'.format(row_count))
__pyx_t_8 = __pyx_mstate_global->__pyx_kp_u_array_column_has_rows_but_no_off;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_7 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1980, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(1, 1980, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1978, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1978, __pyx_L1_error)
+1981: if ad.data == NULL and ad.data_len > 0:
__pyx_t_11 = (__pyx_v_ad.data == NULL);
if (__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L9_bool_binop_done;
}
__pyx_t_11 = (__pyx_v_ad.data_len > 0);
__pyx_t_1 = __pyx_t_11;
__pyx_L9_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+1982: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+1983: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1984: 'array column has {} data bytes but no data buffer'.format(
__pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_array_column_has_data_bytes_but;
__Pyx_INCREF(__pyx_t_7);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 1984, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_3};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1982, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1982, __pyx_L1_error)
+1985: ad.data_len))
__pyx_t_8 = __Pyx_PyLong_FromSize_t(__pyx_v_ad.data_len); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1985, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); }
+1986: if ad.shapes == NULL and ad.shapes_len > 0:
__pyx_t_11 = (__pyx_v_ad.shapes == NULL);
if (__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L12_bool_binop_done;
}
__pyx_t_11 = (__pyx_v_ad.shapes_len > 0);
__pyx_t_1 = __pyx_t_11;
__pyx_L12_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+1987: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1987, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+1988: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1989: 'array column has {} shape entries but no shapes buffer'.format(
__pyx_t_8 = __pyx_mstate_global->__pyx_kp_u_array_column_has_shape_entries_b;
__Pyx_INCREF(__pyx_t_8);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_6))) __PYX_ERR(1, 1989, __pyx_L1_error)
__pyx_t_9 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
__pyx_t_9 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_6};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1987, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 1987, __pyx_L1_error)
+1990: ad.shapes_len))
__pyx_t_7 = __Pyx_PyLong_FromSize_t(__pyx_v_ad.shapes_len); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7}; __pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); }
+1991: validity = ad.validity
__pyx_t_12 = __pyx_v_ad.validity; __pyx_v_validity = __pyx_t_12;
+1992: data = ad.data
__pyx_t_13 = __pyx_v_ad.data; __pyx_v_data = __pyx_t_13;
+1993: data_offsets = ad.data_offsets
__pyx_t_14 = __pyx_v_ad.data_offsets; __pyx_v_data_offsets = __pyx_t_14;
+1994: shapes = ad.shapes
__pyx_t_15 = __pyx_v_ad.shapes; __pyx_cur_scope->__pyx_v_shapes = __pyx_t_15;
+1995: shape_offsets = ad.shape_offsets
__pyx_t_16 = __pyx_v_ad.shape_offsets; __pyx_v_shape_offsets = __pyx_t_16;
+1996: for r in range(row_count):
__pyx_t_9 = __pyx_v_row_count;
__pyx_t_17 = __pyx_t_9;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_r = __pyx_t_18;
+1997: if validity != NULL and ((validity[r >> 3] >> (r & 7)) & 1):
__pyx_t_11 = (__pyx_v_validity != NULL);
if (__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L17_bool_binop_done;
}
__pyx_t_11 = ((((__pyx_v_validity[(__pyx_v_r >> 3)]) >> (__pyx_v_r & 7)) & 1) != 0);
__pyx_t_1 = __pyx_t_11;
__pyx_L17_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+1998: continue
goto __pyx_L14_continue;
+1999: dstart = data_offsets[r]
__pyx_v_dstart = (__pyx_v_data_offsets[__pyx_v_r]);
+2000: dend = data_offsets[r + 1]
__pyx_v_dend = (__pyx_v_data_offsets[(__pyx_v_r + 1)]);
+2001: if dend < dstart or <uint64_t>dend > <uint64_t>ad.data_len:
__pyx_t_11 = (__pyx_v_dend < __pyx_v_dstart);
if (!__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L20_bool_binop_done;
}
__pyx_t_11 = (((uint64_t)__pyx_v_dend) > ((uint64_t)__pyx_v_ad.data_len));
__pyx_t_1 = __pyx_t_11;
__pyx_L20_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+2002: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2002, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+2003: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2004: 'corrupt array data offsets in column kind 0x{:02X}'.format(
__pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_corrupt_array_data_offsets_in_co;
__Pyx_INCREF(__pyx_t_7);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2004, __pyx_L1_error)
__pyx_t_19 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
__pyx_t_19 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_4, __pyx_t_5};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_19, (3-__pyx_t_19) | (__pyx_t_19*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2002, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 2002, __pyx_L1_error)
+2005: <int>kind))
__pyx_t_8 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_19 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_8}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+2006: blen = <Py_ssize_t>(dend - dstart)
__pyx_v_blen = ((Py_ssize_t)(__pyx_v_dend - __pyx_v_dstart));
+2007: if blen > 0:
__pyx_t_1 = (__pyx_v_blen > 0);
if (__pyx_t_1) {
/* … */
goto __pyx_L22;
}
+2008: flat = np.frombuffer(
__pyx_t_4 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_4);
+2009: (<unsigned char[:blen]>(<unsigned char*>(data + dstart))),
__pyx_t_20 = ((unsigned char *)(__pyx_v_data + __pyx_v_dstart));
if (!__pyx_t_20) {
PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer");
__PYX_ERR(1, 2009, __pyx_L1_error)
}
__pyx_t_8 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2009, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_blen)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2009, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#if CYTHON_COMPILING_IN_LIMITED_API
__pyx_t_22 = PyBytes_AsString(__pyx_t_8); if (unlikely(!__pyx_t_22)) __PYX_ERR(1, 2009, __pyx_L1_error)
#else
__pyx_t_22 = PyBytes_AS_STRING(__pyx_t_8);
#endif
__pyx_t_21 = __pyx_array_new(__pyx_t_3, sizeof(unsigned char), __pyx_t_22, "c", (char *) __pyx_t_20); if (unlikely(!__pyx_t_21)) __PYX_ERR(1, 2009, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_21);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2010: dtype=np.float64).copy()
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_float64); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_19 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_4, ((PyObject *)__pyx_t_21), __pyx_t_8}; #if CYTHON_VECTORCALL __pyx_t_3 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2008, __pyx_L1_error) __Pyx_INCREF(__pyx_t_3); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_3 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } #endif __pyx_t_5 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF((PyObject *)__pyx_t_21); __pyx_t_21 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_19 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_copy, __pyx_callargs+__pyx_t_19, (1-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_flat, __pyx_t_2); __pyx_t_2 = 0;
2011: else:
+2012: flat = np.empty(0, dtype=np.float64)
/*else*/ {
__pyx_t_5 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_float64); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2012, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_19 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_mstate_global->__pyx_int_0, __pyx_t_6};
#if CYTHON_VECTORCALL
__pyx_t_3 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2012, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_3);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_3 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2012, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
#endif
__pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_empty, __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2012, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_XDECREF_SET(__pyx_v_flat, __pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L22:;
+2013: sstart = shape_offsets[r]
__pyx_cur_scope->__pyx_v_sstart = (__pyx_v_shape_offsets[__pyx_v_r]);
+2014: send = shape_offsets[r + 1]
__pyx_cur_scope->__pyx_v_send = (__pyx_v_shape_offsets[(__pyx_v_r + 1)]);
+2015: if send < sstart or <uint64_t>send > <uint64_t>ad.shapes_len:
__pyx_t_11 = (__pyx_cur_scope->__pyx_v_send < __pyx_cur_scope->__pyx_v_sstart);
if (!__pyx_t_11) {
} else {
__pyx_t_1 = __pyx_t_11;
goto __pyx_L24_bool_binop_done;
}
__pyx_t_11 = (((uint64_t)__pyx_cur_scope->__pyx_v_send) > ((uint64_t)__pyx_v_ad.shapes_len));
__pyx_t_1 = __pyx_t_11;
__pyx_L24_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+2016: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2016, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+2017: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2018: 'corrupt array shape offsets in column kind 0x{:02X}'.format(
__pyx_t_4 = __pyx_mstate_global->__pyx_kp_u_corrupt_array_shape_offsets_in_c;
__Pyx_INCREF(__pyx_t_4);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2018, __pyx_L1_error)
__pyx_t_19 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
__pyx_t_19 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_5};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_19, (3-__pyx_t_19) | (__pyx_t_19*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2016, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__PYX_ERR(1, 2016, __pyx_L1_error)
+2019: <int>kind))
__pyx_t_7 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_19 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+2020: if send > sstart:
__pyx_t_1 = (__pyx_cur_scope->__pyx_v_send > __pyx_cur_scope->__pyx_v_sstart);
if (__pyx_t_1) {
/* … */
goto __pyx_L26;
}
+2021: _obj_chunk_set(out, r, flat.reshape(
__pyx_t_6 = __pyx_v_flat;
__Pyx_INCREF(__pyx_t_6);
/* … */
__pyx_t_23 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_t_2); if (unlikely(__pyx_t_23 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 2021, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2022: tuple(shapes[sstart + k] for k in range(send - sstart))))
static PyObject *__pyx_pf_7questdb_7_client_18_numpy_array_chunk_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_3_genexpr *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_3_genexpr *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_3_genexpr(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_3_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_3_genexpr *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 2022, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk *) __pyx_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_18_numpy_array_chunk_2generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_numpy_array_chunk_locals_genexp, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._numpy_array_chunk.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_18_numpy_array_chunk_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("genexpr", 0);
__pyx_L3_first_run:;
if (unlikely(__pyx_sent_value != Py_None)) {
if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
__PYX_ERR(1, 2022, __pyx_L1_error)
}
if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(1, 2022, __pyx_L1_error) }
__pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2022, __pyx_L1_error)
for (;;) {
{
__pyx_t_3 = __pyx_t_2(__pyx_t_1);
if (unlikely(!__pyx_t_3)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 2022, __pyx_L1_error)
PyErr_Clear();
}
break;
}
}
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_PyInt_FromNumber(&__pyx_t_3, NULL, 1) < (0)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, ((PyObject*)__pyx_t_3));
__Pyx_GIVEREF(__pyx_t_3);
__pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyLong_From_uint32_t(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_sstart); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyNumber_Add_int_int(__pyx_t_3, __pyx_cur_scope->__pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_PyLong_From_uint32_t((__pyx_cur_scope->__pyx_outer_scope->__pyx_v_shapes[__pyx_t_5])); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
__Pyx_XGIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
__pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
/* return from generator, yielding value */
__pyx_generator->resume_label = 1;
return __pyx_r;
__pyx_L6_resume_from_yield:;
__pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
__pyx_cur_scope->__pyx_t_0 = 0;
__Pyx_XGOTREF(__pyx_t_1);
__pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2022, __pyx_L1_error)
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_8 = NULL;
__pyx_t_3 = __Pyx_PyLong_From_uint32_t((__pyx_cur_scope->__pyx_v_send - __pyx_cur_scope->__pyx_v_sstart)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_19 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_3};
__pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)(&PyRange_Type), __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (__pyx_t_19*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_3 = __pyx_pf_7questdb_7_client_18_numpy_array_chunk_genexpr(((PyObject*)__pyx_cur_scope), __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2022, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_19 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_reshape, __pyx_callargs+__pyx_t_19, (2-__pyx_t_19) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_3_genexpr {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_2___pyx_f_7questdb_7_client__numpy_array_chunk *__pyx_outer_scope;
PyObject *__pyx_genexpr_arg_0;
PyObject *__pyx_v_k;
PyObject *__pyx_t_0;
PyObject *(*__pyx_t_1)(PyObject *);
};
2023: else:
+2024: _obj_chunk_set(out, r, flat)
/*else*/ {
__pyx_t_23 = __pyx_f_7questdb_7_client__obj_chunk_set(__pyx_v_out, __pyx_v_r, __pyx_v_flat); if (unlikely(__pyx_t_23 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 2024, __pyx_L1_error)
}
__pyx_L26:;
__pyx_L14_continue:;
}
+2025: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_out);
__pyx_r = ((PyObject *)__pyx_v_out);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2026:
2027:
+2028: cdef object _numpy_column_chunk(
static PyObject *__pyx_f_7questdb_7_client__numpy_column_chunk(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, enum qwp_reader_column_kind __pyx_v_kind, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._numpy_column_chunk", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2029: const qwp_reader_batch* batch,
2030: size_t col_idx,
2031: qwp_reader_column_kind kind,
2032: size_t row_count,
2033: object np):
+2034: if kind == qwp_reader_column_kind_symbol:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_symbol);
if (__pyx_t_1) {
/* … */
}
+2035: return _numpy_symbol_codes_chunk(batch, col_idx, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_symbol_codes_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2035, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2036: if (kind == qwp_reader_column_kind_varchar
switch (__pyx_v_kind) {
case qwp_reader_column_kind_varchar:
case qwp_reader_column_kind_binary:
/* … */
break;
default: break;
}
2037: or kind == qwp_reader_column_kind_binary):
+2038: return _numpy_varlen_chunk(batch, col_idx, kind, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_varlen_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_kind, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2039: if kind == qwp_reader_column_kind_geohash:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_geohash);
if (__pyx_t_1) {
/* … */
}
+2040: return _numpy_geohash_chunk(batch, col_idx, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_geohash_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2041: if kind == qwp_reader_column_kind_uuid:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_uuid);
if (__pyx_t_1) {
/* … */
}
+2042: return _numpy_uuid_chunk(batch, col_idx, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_uuid_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2043: if kind == qwp_reader_column_kind_long256:
__pyx_t_1 = (__pyx_v_kind == qwp_reader_column_kind_long256);
if (__pyx_t_1) {
/* … */
}
+2044: return _numpy_long256_chunk(batch, col_idx, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_long256_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2045: if (kind == qwp_reader_column_kind_decimal64
switch (__pyx_v_kind) {
case qwp_reader_column_kind_decimal64:
case qwp_reader_column_kind_decimal128:
/* … */
break;
default: break;
}
+2046: or kind == qwp_reader_column_kind_decimal128
case qwp_reader_column_kind_decimal256:
2047: or kind == qwp_reader_column_kind_decimal256):
+2048: return _numpy_decimal_chunk(batch, col_idx, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_decimal_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2049: if (kind == qwp_reader_column_kind_double_array
switch (__pyx_v_kind) {
case qwp_reader_column_kind_double_array:
case qwp_reader_column_kind_long_array:
/* … */
break;
default: break;
}
2050: or kind == qwp_reader_column_kind_long_array):
+2051: return _numpy_array_chunk(batch, col_idx, kind, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_array_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_kind, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+2052: return _numpy_fixed_chunk(batch, col_idx, kind, row_count, np)
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_fixed_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_kind, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
2053:
2054:
+2055: cdef bint _is_hybrid_int(qwp_reader_column_kind kind):
static int __pyx_f_7questdb_7_client__is_hybrid_int(enum qwp_reader_column_kind __pyx_v_kind) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
+2056: return (kind == qwp_reader_column_kind_int
case qwp_reader_column_kind_long:
+2057: or kind == qwp_reader_column_kind_long
switch (__pyx_v_kind) {
case qwp_reader_column_kind_int:
/* … */
case qwp_reader_column_kind_ipv4:
/* … */
__pyx_t_1 = 1;
break;
default:
__pyx_t_1 = 0;
break;
}
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
+2058: or kind == qwp_reader_column_kind_ipv4
case qwp_reader_column_kind_geohash:
2059: or kind == qwp_reader_column_kind_geohash)
2060:
2061:
+2062: cdef object _numpy_validity_mask(
static PyObject *__pyx_f_7questdb_7_client__numpy_validity_mask(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
CYTHON_UNUSED Py_ssize_t __pyx_v_vbytes;
unsigned char *__pyx_v_vsrc;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF((PyObject *)__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._numpy_validity_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2063: const qwp_reader_batch* batch,
2064: size_t col_idx,
2065: size_t row_count,
2066: object np):
2067: cdef qwp_reader_column_data cd
+2068: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2069: cdef Py_ssize_t vbytes
2070: cdef unsigned char* vsrc
+2071: _reader_check(
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 2071, __pyx_L1_error)
2072: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
2073: 'qwp_reader_batch_column_data')
+2074: if row_count == 0 or cd.validity == NULL:
__pyx_t_3 = (__pyx_v_row_count == 0);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_cd.validity == NULL);
__pyx_t_2 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+2075: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+2076: vbytes = <Py_ssize_t>((row_count + 7) // 8)
__pyx_v_vbytes = ((Py_ssize_t)((__pyx_v_row_count + 7) / 8));
+2077: vsrc = <unsigned char*>cd.validity
__pyx_v_vsrc = ((unsigned char *)__pyx_v_cd.validity);
+2078: return np.unpackbits(
__pyx_t_7 = __pyx_v_np; __Pyx_INCREF(__pyx_t_7); /* … */ { PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_bitorder}; __pyx_mstate_global->__pyx_tuple[15] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[15])) __PYX_ERR(1, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]);
+2079: np.frombuffer((<unsigned char[:vbytes]>vsrc), dtype=np.uint8),
__pyx_t_9 = __pyx_v_np; __Pyx_INCREF(__pyx_t_9); if (!__pyx_v_vsrc) { PyErr_SetString(PyExc_ValueError,"Cannot create cython.array from NULL pointer"); __PYX_ERR(1, 2079, __pyx_L1_error) } __pyx_t_12 = __pyx_format_from_typeinfo(&__Pyx_TypeInfo_unsigned_char); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = Py_BuildValue("(" __PYX_BUILD_PY_SSIZE_T ")", ((Py_ssize_t)__pyx_v_vbytes)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #if CYTHON_COMPILING_IN_LIMITED_API __pyx_t_13 = PyBytes_AsString(__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 2079, __pyx_L1_error) #else __pyx_t_13 = PyBytes_AS_STRING(__pyx_t_12); #endif __pyx_t_10 = __pyx_array_new(__pyx_t_11, sizeof(unsigned char), __pyx_t_13, "c", (char *) __pyx_v_vsrc); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_np, __pyx_mstate_global->__pyx_n_u_uint8); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_14 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_9, ((PyObject *)__pyx_t_10), __pyx_t_12}; #if CYTHON_VECTORCALL __pyx_t_11 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_INCREF(__pyx_t_11); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_11 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); } #endif __pyx_t_8 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_frombuffer, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF((PyObject *)__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); }
+2080: count=<Py_ssize_t>row_count, bitorder='little').astype(bool)
__pyx_t_11 = PyLong_FromSsize_t(((Py_ssize_t)__pyx_v_row_count)); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_14 = 0; { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_8, __pyx_t_11, __pyx_mstate_global->__pyx_n_u_little}; #if CYTHON_VECTORCALL __pyx_t_12 = __pyx_mstate_global->__pyx_tuple[15]; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2078, __pyx_L1_error) __Pyx_INCREF(__pyx_t_12); #else { PyObject *__pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_n_u_bitorder}; __pyx_t_12 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 2); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } #endif __pyx_t_6 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_unpackbits, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_12); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_14 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool)}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_14, (2-__pyx_t_14) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
2081:
2082:
+2083: cdef object _build_nullable_array(
static PyObject *__pyx_f_7questdb_7_client__build_nullable_array(PyObject *__pyx_v_values, PyObject *__pyx_v_mask, enum qwp_reader_column_kind __pyx_v_kind, PyObject *__pyx_v_pd) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._build_nullable_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2084: values, mask, qwp_reader_column_kind kind, object pd):
+2085: if (kind == qwp_reader_column_kind_float
switch (__pyx_v_kind) {
case qwp_reader_column_kind_float:
case qwp_reader_column_kind_double:
/* … */
break;
default: break;
}
2086: or kind == qwp_reader_column_kind_double):
+2087: return pd.arrays.FloatingArray(values, mask)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_arrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_values, __pyx_v_mask}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_FloatingArray, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+2088: if kind == qwp_reader_column_kind_boolean:
__pyx_t_5 = (__pyx_v_kind == qwp_reader_column_kind_boolean);
if (__pyx_t_5) {
/* … */
}
+2089: return pd.arrays.BooleanArray(values, mask)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_arrays); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_values, __pyx_v_mask}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_BooleanArray, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+2090: return pd.arrays.IntegerArray(values, mask)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_arrays); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_values, __pyx_v_mask}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_IntegerArray, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
2091:
2092:
+2093: cdef object _combine_hybrid_mask(list value_chunks, list mask_chunks, object np):
static PyObject *__pyx_f_7questdb_7_client__combine_hybrid_mask(PyObject *__pyx_v_value_chunks, PyObject *__pyx_v_mask_chunks, PyObject *__pyx_v_np) {
size_t __pyx_v_n;
size_t __pyx_v_i;
int __pyx_v_any_null;
PyObject *__pyx_v_parts = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._combine_hybrid_mask", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parts);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2094: cdef size_t n = <size_t>len(mask_chunks)
if (unlikely(__pyx_v_mask_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2094, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_mask_chunks); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2094, __pyx_L1_error)
__pyx_v_n = ((size_t)__pyx_t_1);
2095: cdef size_t i
+2096: cdef bint any_null = False
__pyx_v_any_null = 0;
+2097: for i in range(n):
__pyx_t_2 = __pyx_v_n;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+2098: if mask_chunks[i] is not None:
if (unlikely(__pyx_v_mask_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2098, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_mask_chunks, __pyx_v_i, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2098, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = (__pyx_t_5 != Py_None);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_6) {
/* … */
}
}
__pyx_L4_break:;
+2099: any_null = True
__pyx_v_any_null = 1;
+2100: break
goto __pyx_L4_break;
+2101: if not any_null:
__pyx_t_6 = (!__pyx_v_any_null);
if (__pyx_t_6) {
/* … */
}
+2102: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+2103: parts = []
__pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_parts = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0;
+2104: for i in range(n):
__pyx_t_2 = __pyx_v_n;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+2105: if mask_chunks[i] is None:
if (unlikely(__pyx_v_mask_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2105, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_mask_chunks, __pyx_v_i, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2105, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = (__pyx_t_5 == Py_None);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_6) {
/* … */
goto __pyx_L9;
}
+2106: parts.append(np.zeros(len(value_chunks[i]), dtype=bool))
__pyx_t_7 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_7);
if (unlikely(__pyx_v_value_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2106, __pyx_L1_error)
}
__pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_value_chunks, __pyx_v_i, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_1 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_8 = PyLong_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_8, ((PyObject *)__pyx_mstate_global->__pyx_ptype_7cpython_4bool_bool)};
#if CYTHON_VECTORCALL
__pyx_t_10 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_10);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_10 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
}
#endif
__pyx_t_5 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_zeros, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 2106, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2107: else:
+2108: parts.append(mask_chunks[i])
/*else*/ {
if (unlikely(__pyx_v_mask_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2108, __pyx_L1_error)
}
__pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_mask_chunks, __pyx_v_i, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2108, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_5); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 2108, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L9:;
}
+2109: if len(parts) == 1:
__pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_parts); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2109, __pyx_L1_error) __pyx_t_6 = (__pyx_t_1 == 1); if (__pyx_t_6) { /* … */ }
+2110: return parts[0]
__pyx_t_5 = __Pyx_GetItemInt_List(__pyx_v_parts, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0;
+2111: return np.concatenate(parts)
__pyx_t_10 = __pyx_v_np; __Pyx_INCREF(__pyx_t_10); __pyx_t_2 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_v_parts}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_concatenate, __pyx_callargs+__pyx_t_2, (2-__pyx_t_2) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_5; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0;
2112:
2113:
+2114: cdef list _numpy_pinned_name_bytes(tuple pinned):
static PyObject *__pyx_f_7questdb_7_client__numpy_pinned_name_bytes(PyObject *__pyx_v_pinned) {
PyObject *__pyx_8genexpr5__pyx_v_name = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("questdb._client._numpy_pinned_name_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_name);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2115: """The pinned column names as UTF-8, encoded once per result.
2116:
2117: The per-batch check compares them against the borrowed name buffer
2118: the reader hands back, so no `PyUnicode` is built per column per
2119: batch.
2120: """
+2121: return [(<str>name).encode('utf-8') for name in <list>pinned[0]]
{ /* enter inner scope */
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2121, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(__pyx_v_pinned == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2121, __pyx_L5_error)
}
__pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_pinned, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2121, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_t_2 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
__PYX_ERR(1, 2121, __pyx_L5_error)
}
__pyx_t_3 = ((PyObject*)__pyx_t_2); __Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
for (;;) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 2121, __pyx_L5_error)
#endif
if (__pyx_t_4 >= __pyx_temp) break;
}
__pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_3, __pyx_t_4, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_4;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2121, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_name, __pyx_t_2);
__pyx_t_2 = 0;
if (unlikely(__pyx_8genexpr5__pyx_v_name == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "encode");
__PYX_ERR(1, 2121, __pyx_L5_error)
}
__pyx_t_2 = PyUnicode_AsUTF8String(((PyObject*)__pyx_8genexpr5__pyx_v_name)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2121, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_1, __pyx_t_2))) __PYX_ERR(1, 2121, __pyx_L5_error)
__pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_name); __pyx_8genexpr5__pyx_v_name = 0;
goto __pyx_L9_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_name); __pyx_8genexpr5__pyx_v_name = 0;
goto __pyx_L1_error;
__pyx_L9_exit_scope:;
} /* exit inner scope */
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_1);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_1 = 0;
goto __pyx_L0;
2122:
2123:
+2124: cdef _numpy_check_meta_pinned(
static PyObject *__pyx_f_7questdb_7_client__numpy_check_meta_pinned(PyObject *__pyx_v_pinned, PyObject *__pyx_v_pinned_names, struct qwp_reader_batch const *__pyx_v_batch) {
PyObject *__pyx_v_pinned_kinds = 0;
PyObject *__pyx_v_pinned_scales = 0;
PyObject *__pyx_v_pinned_precision = 0;
size_t __pyx_v_n_cols;
size_t __pyx_v_col_idx;
enum qwp_reader_column_kind __pyx_v_kind;
questdb_error *__pyx_v_err;
struct qwp_reader_column_data __pyx_v_cd_meta;
PyObject *__pyx_v_want = 0;
char const *__pyx_v_name_buf;
size_t __pyx_v_name_len;
PyObject *__pyx_v_want_name = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._numpy_check_meta_pinned", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_pinned_kinds);
__Pyx_XDECREF(__pyx_v_pinned_scales);
__Pyx_XDECREF(__pyx_v_pinned_precision);
__Pyx_XDECREF(__pyx_v_want);
__Pyx_XDECREF(__pyx_v_want_name);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2125: tuple pinned, list pinned_names, const qwp_reader_batch* batch):
2126: """Refuse a batch whose schema disagrees with the first one's.
2127:
2128: The NumPy path reads the column names, kinds, decimal scales and
2129: geohash precisions once and decodes every later batch against them,
2130: and the round-trip claim it hands back names them too. A batch that
2131: disagrees would be decoded with the wrong dtype and described by a
2132: claim that does not match its own values, so it stops here instead.
2133:
2134: The count, the names, the kinds and the two numbers the decoders
2135: read per batch are all compared. The names are compared as raw
2136: bytes against the buffer the reader borrows out, because a
2137: `PyUnicode` per column per batch is the cost this path had removed
2138: -- and a rename is the one alteration that moves neither the count
2139: nor the kinds, which is exactly what the reference client checks
2140: first.
2141: """
+2142: cdef list pinned_kinds = <list>pinned[1]
if (unlikely(__pyx_v_pinned == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2142, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_pinned, 1, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2142, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_pinned_kinds = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
+2143: cdef list pinned_scales = <list>pinned[2]
if (unlikely(__pyx_v_pinned == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2143, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_Tuple(__pyx_v_pinned, 2, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2143, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __pyx_t_2;
__Pyx_INCREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_pinned_scales = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+2144: cdef list pinned_precision = <list>pinned[3]
if (unlikely(__pyx_v_pinned == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2144, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_pinned, 3, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = __pyx_t_1;
__Pyx_INCREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_pinned_precision = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
+2145: cdef size_t n_cols = qwp_reader_batch_column_count(batch)
__pyx_v_n_cols = qwp_reader_batch_column_count(__pyx_v_batch);
2146: cdef size_t col_idx
+2147: cdef qwp_reader_column_kind kind = qwp_reader_column_kind_unknown
__pyx_v_kind = qwp_reader_column_kind_unknown;
+2148: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2149: cdef qwp_reader_column_data cd_meta
2150: cdef object want
+2151: cdef const char* name_buf = NULL
__pyx_v_name_buf = NULL;
+2152: cdef size_t name_len = 0
__pyx_v_name_len = 0;
2153: cdef bytes want_name
+2154: if n_cols != <size_t>len(pinned_kinds):
if (unlikely(__pyx_v_pinned_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2154, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_v_pinned_kinds); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2154, __pyx_L1_error)
__pyx_t_4 = (__pyx_v_n_cols != ((size_t)__pyx_t_3));
if (__pyx_t_4) {
/* … */
}
+2155: _numpy_meta_drift()
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_meta_drift(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2156: for col_idx in range(n_cols):
__pyx_t_5 = __pyx_v_n_cols;
__pyx_t_6 = __pyx_t_5;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_col_idx = __pyx_t_7;
+2157: _reader_check(
__pyx_t_8 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_name(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_name_buf), (&__pyx_v_name_len), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_name); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 2157, __pyx_L1_error)
2158: qwp_reader_batch_column_name(
2159: batch, col_idx, &name_buf, &name_len, &err),
2160: &err, 'qwp_reader_batch_column_name')
+2161: want_name = <bytes>pinned_names[col_idx]
if (unlikely(__pyx_v_pinned_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2161, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_pinned_names, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2161, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __pyx_t_2;
__Pyx_INCREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF_SET(__pyx_v_want_name, ((PyObject*)__pyx_t_1));
__pyx_t_1 = 0;
+2162: if (name_len != <size_t>len(want_name)
if (unlikely(__pyx_v_want_name == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2162, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyBytes_GET_SIZE(__pyx_v_want_name); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2162, __pyx_L1_error)
__pyx_t_9 = (__pyx_v_name_len != ((size_t)__pyx_t_3));
if (!__pyx_t_9) {
} else {
__pyx_t_4 = __pyx_t_9;
goto __pyx_L7_bool_binop_done;
}
/* … */
if (__pyx_t_4) {
/* … */
}
+2163: or memcmp(name_buf, <const char*>want_name,
if (unlikely(__pyx_v_want_name == Py_None)) {
PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
__PYX_ERR(1, 2163, __pyx_L1_error)
}
__pyx_t_10 = __Pyx_PyBytes_AsString(__pyx_v_want_name); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(1, 2163, __pyx_L1_error)
+2164: name_len) != 0):
__pyx_t_9 = (memcmp(__pyx_v_name_buf, ((char const *)__pyx_t_10), __pyx_v_name_len) != 0);
__pyx_t_4 = __pyx_t_9;
__pyx_L7_bool_binop_done:;
+2165: _numpy_meta_drift()
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_meta_drift(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2166: _reader_check(
__pyx_t_8 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_kind(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_kind), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_kind); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 2166, __pyx_L1_error)
2167: qwp_reader_batch_column_kind(batch, col_idx, &kind, &err),
2168: &err, 'qwp_reader_batch_column_kind')
+2169: if <int>kind != <int>(<object>pinned_kinds[col_idx]):
if (unlikely(__pyx_v_pinned_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2169, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pinned_kinds, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2169, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2169, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_4 = (((int)__pyx_v_kind) != ((int)__pyx_t_8));
if (__pyx_t_4) {
/* … */
}
+2170: _numpy_meta_drift()
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_meta_drift(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2171: if kind == qwp_reader_column_kind_geohash:
switch (__pyx_v_kind) {
case qwp_reader_column_kind_geohash:
/* … */
break;
case qwp_reader_column_kind_decimal64:
+2172: want = pinned_precision[col_idx]
if (unlikely(__pyx_v_pinned_precision == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2172, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pinned_precision, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2172, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_want, __pyx_t_1);
__pyx_t_1 = 0;
+2173: elif (kind == qwp_reader_column_kind_decimal64
case qwp_reader_column_kind_decimal128:
/* … */
break;
default:
+2174: or kind == qwp_reader_column_kind_decimal128
case qwp_reader_column_kind_decimal256:
2175: or kind == qwp_reader_column_kind_decimal256):
+2176: want = pinned_scales[col_idx]
if (unlikely(__pyx_v_pinned_scales == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2176, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pinned_scales, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2176, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_want, __pyx_t_1);
__pyx_t_1 = 0;
2177: else:
+2178: continue
goto __pyx_L4_continue;
break;
}
+2179: if qwp_reader_batch_column_data(batch, col_idx, &cd_meta, &err):
__pyx_t_4 = qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd_meta), (&__pyx_v_err));
if (__pyx_t_4) {
/* … */
goto __pyx_L10;
}
+2180: if kind == qwp_reader_column_kind_geohash:
__pyx_t_4 = (__pyx_v_kind == qwp_reader_column_kind_geohash);
if (__pyx_t_4) {
/* … */
goto __pyx_L11;
}
+2181: if want is not None and cd_meta.geohash_precision_bits != want:
__pyx_t_9 = (__pyx_v_want != Py_None);
if (__pyx_t_9) {
} else {
__pyx_t_4 = __pyx_t_9;
goto __pyx_L13_bool_binop_done;
}
__pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_cd_meta.geohash_precision_bits); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2181, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = __Pyx_PyObject_CompareBoolNe_int_object(__pyx_t_1, __pyx_v_want, Py_NE); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 2181, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_4 = __pyx_t_9;
__pyx_L13_bool_binop_done:;
if (__pyx_t_4) {
/* … */
}
+2182: _numpy_meta_drift()
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_meta_drift(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2183: elif want is not None and cd_meta.decimal_scale != want:
__pyx_t_9 = (__pyx_v_want != Py_None);
if (__pyx_t_9) {
} else {
__pyx_t_4 = __pyx_t_9;
goto __pyx_L15_bool_binop_done;
}
__pyx_t_1 = __Pyx_PyLong_From_int8_t(__pyx_v_cd_meta.decimal_scale); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = __Pyx_PyObject_CompareBoolNe_int_object(__pyx_t_1, __pyx_v_want, Py_NE); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 2183, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_4 = __pyx_t_9;
__pyx_L15_bool_binop_done:;
if (__pyx_t_4) {
/* … */
}
__pyx_L11:;
+2184: _numpy_meta_drift()
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_meta_drift(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2185: elif err != NULL:
__pyx_t_4 = (__pyx_v_err != NULL);
if (__pyx_t_4) {
/* … */
}
__pyx_L10:;
__pyx_L4_continue:;
}
+2186: questdb_error_free(err)
questdb_error_free(__pyx_v_err);
+2187: err = NULL
__pyx_v_err = NULL;
2188:
2189:
+2190: def _debug_numpy_pinned_meta(_NumpyBatchIter it):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_7_debug_numpy_pinned_meta(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_6_debug_numpy_pinned_meta, "The schema a NumPy-backed iterator pinned from its first batch.\n\n Not part of the public API. The drift check compares a later batch\n against this, and a result whose schema really changes mid-stream\n cannot be arranged from a test, so the pin is what a test perturbs\n instead. Comparing a good batch against a doctored pin exercises\n the same comparison as a doctored batch against a good pin.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_7_debug_numpy_pinned_meta = {"_debug_numpy_pinned_meta", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_7_debug_numpy_pinned_meta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_6_debug_numpy_pinned_meta}; static PyObject *__pyx_pw_7questdb_7_client_7_debug_numpy_pinned_meta(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_it = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_debug_numpy_pinned_meta (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_it,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 2190, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2190, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_debug_numpy_pinned_meta", 0) < (0)) __PYX_ERR(1, 2190, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_numpy_pinned_meta", 1, 1, 1, i); __PYX_ERR(1, 2190, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2190, __pyx_L3_error) } __pyx_v_it = ((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)values[0]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_debug_numpy_pinned_meta", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 2190, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._debug_numpy_pinned_meta", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_it), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__NumpyBatchIter, 1, "it", 0))) __PYX_ERR(1, 2190, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_6_debug_numpy_pinned_meta(__pyx_self, __pyx_v_it); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_6_debug_numpy_pinned_meta(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_it) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client._debug_numpy_pinned_meta", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_7_debug_numpy_pinned_meta, 0, __pyx_mstate_global->__pyx_n_u_debug_numpy_pinned_meta, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_numpy_pinned_meta, __pyx_t_17) < (0)) __PYX_ERR(1, 2190, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2191: """The schema a NumPy-backed iterator pinned from its first batch.
2192:
2193: Not part of the public API. The drift check compares a later batch
2194: against this, and a result whose schema really changes mid-stream
2195: cannot be arranged from a test, so the pin is what a test perturbs
2196: instead. Comparing a good batch against a doctored pin exercises
2197: the same comparison as a doctored batch against a good pin.
2198: """
+2199: return (it.pinned_meta, list(it.pinned_names_b))
__pyx_t_1 = PySequence_List(__pyx_v_it->pinned_names_b); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_it->pinned_meta); __Pyx_GIVEREF(__pyx_v_it->pinned_meta); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_it->pinned_meta) != (0)) __PYX_ERR(1, 2199, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 2199, __pyx_L1_error); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
2200:
2201:
+2202: def _debug_numpy_force_pin(_NumpyBatchIter it, tuple pinned_meta,
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_9_debug_numpy_force_pin(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_8_debug_numpy_force_pin, "Seed an iterator\047s pinned schema so its *first* batch is checked\n against it rather than pinning one of its own.\n\n Not part of the public API.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_9_debug_numpy_force_pin = {"_debug_numpy_force_pin", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_9_debug_numpy_force_pin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_8_debug_numpy_force_pin}; static PyObject *__pyx_pw_7questdb_7_client_9_debug_numpy_force_pin(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_it = 0; PyObject *__pyx_v_pinned_meta = 0; PyObject *__pyx_v_pinned_names_b = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_debug_numpy_force_pin (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_it,&__pyx_mstate_global->__pyx_n_u_pinned_meta,&__pyx_mstate_global->__pyx_n_u_pinned_names_b,0}; PyObject* values[3] = {0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 2202, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 2202, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 2202, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2202, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_debug_numpy_force_pin", 0) < (0)) __PYX_ERR(1, 2202, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_numpy_force_pin", 1, 3, 3, i); __PYX_ERR(1, 2202, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2202, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 2202, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 2202, __pyx_L3_error) } __pyx_v_it = ((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)values[0]); __pyx_v_pinned_meta = ((PyObject*)values[1]); __pyx_v_pinned_names_b = ((PyObject*)values[2]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_debug_numpy_force_pin", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 2202, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._debug_numpy_force_pin", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_it), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__NumpyBatchIter, 1, "it", 0))) __PYX_ERR(1, 2202, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pinned_meta), (&PyTuple_Type), 1, "pinned_meta", 1))) __PYX_ERR(1, 2202, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pinned_names_b), (&PyList_Type), 1, "pinned_names_b", 1))) __PYX_ERR(1, 2203, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_8_debug_numpy_force_pin(__pyx_self, __pyx_v_it, __pyx_v_pinned_meta, __pyx_v_pinned_names_b); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_8_debug_numpy_force_pin(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_it, PyObject *__pyx_v_pinned_meta, PyObject *__pyx_v_pinned_names_b) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("questdb._client._debug_numpy_force_pin", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_9_debug_numpy_force_pin, 0, __pyx_mstate_global->__pyx_n_u_debug_numpy_force_pin, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2202, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_numpy_force_pin, __pyx_t_17) < (0)) __PYX_ERR(1, 2202, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2203: list pinned_names_b):
2204: """Seed an iterator's pinned schema so its *first* batch is checked
2205: against it rather than pinning one of its own.
2206:
2207: Not part of the public API.
2208: """
+2209: it.pinned_meta = pinned_meta
__Pyx_INCREF(__pyx_v_pinned_meta); __Pyx_GIVEREF(__pyx_v_pinned_meta); __Pyx_GOTREF(__pyx_v_it->pinned_meta); __Pyx_DECREF(__pyx_v_it->pinned_meta); __pyx_v_it->pinned_meta = __pyx_v_pinned_meta;
+2210: it.pinned_names_b = pinned_names_b
__Pyx_INCREF(__pyx_v_pinned_names_b); __Pyx_GIVEREF(__pyx_v_pinned_names_b); __Pyx_GOTREF(__pyx_v_it->pinned_names_b); __Pyx_DECREF(__pyx_v_it->pinned_names_b); __pyx_v_it->pinned_names_b = __pyx_v_pinned_names_b;
+2211: (it.col_names, it.col_kinds, it.col_scales,
if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 2211, __pyx_L1_error) if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(1, 2211, __pyx_L1_error) if (!(likely(PyList_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_3))) __PYX_ERR(1, 2211, __pyx_L1_error) if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_4))) __PYX_ERR(1, 2211, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2211, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_it->col_names); __Pyx_DECREF(__pyx_v_it->col_names); __pyx_v_it->col_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_it->col_kinds); __Pyx_DECREF(__pyx_v_it->col_kinds); __pyx_v_it->col_kinds = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_it->col_scales); __Pyx_DECREF(__pyx_v_it->col_scales); __pyx_v_it->col_scales = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+2212: it.col_precision, it.has_symbol) = pinned_meta
if (likely(__pyx_v_pinned_meta != Py_None)) {
PyObject* sequence = __pyx_v_pinned_meta;
Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence);
if (unlikely(size != 5)) {
if (size > 5) __Pyx_RaiseTooManyValuesError(5);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(1, 2211, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
__Pyx_INCREF(__pyx_t_2);
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 2);
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 3);
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 4);
__Pyx_INCREF(__pyx_t_5);
#else
{
Py_ssize_t i;
PyObject** temps[5] = {&__pyx_t_1,&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5};
for (i=0; i < 5; i++) {
PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(1, 2211, __pyx_L1_error)
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
}
#endif
} else {
__Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 2211, __pyx_L1_error)
}
/* … */
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_v_it->col_precision);
__Pyx_DECREF(__pyx_v_it->col_precision);
__pyx_v_it->col_precision = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
__pyx_v_it->has_symbol = __pyx_t_6;
+2213: it.claim = _numpy_roundtrip_claim(
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_roundtrip_claim(((PyObject*)__pyx_t_5), ((PyObject*)__pyx_t_4), ((PyObject*)__pyx_t_3), ((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_it->claim); __Pyx_DECREF(__pyx_v_it->claim); __pyx_v_it->claim = __pyx_t_1; __pyx_t_1 = 0;
+2214: it.col_names, it.col_kinds, it.col_scales, it.col_precision)
__pyx_t_5 = __pyx_v_it->col_names; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = __pyx_v_it->col_kinds; __Pyx_INCREF(__pyx_t_4); __pyx_t_3 = __pyx_v_it->col_scales; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = __pyx_v_it->col_precision; __Pyx_INCREF(__pyx_t_2);
+2215: it.first = False
__pyx_v_it->first = 0;
2216:
2217:
+2218: cdef _numpy_meta_drift():
static PyObject *__pyx_f_7questdb_7_client__numpy_meta_drift(void) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._numpy_meta_drift", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2219: # `SchemaDrift` is the code the header gives a mid-stream schema
2220: # change, and the one `to_arrow()` and `iter_polars()` already raise
2221: # for the same event through the Arrow reader. `ServerSchemaMismatch`
2222: # is a server-reported ingest status and means something else.
+2223: raise QuestDBError(
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+2224: QuestDBErrorCode.SchemaDrift,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SchemaDrift); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_The_result_schema_changed_betwee}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2223, __pyx_L1_error)
2225: 'The result schema changed between batches: this reader '
2226: 'decodes every batch against the first one\'s columns, so a '
2227: 'later batch that disagrees cannot be read.')
2228:
2229:
+2230: cdef tuple _numpy_extract_meta(const qwp_reader_batch* batch):
static PyObject *__pyx_f_7questdb_7_client__numpy_extract_meta(struct qwp_reader_batch const *__pyx_v_batch) {
size_t __pyx_v_n_cols;
size_t __pyx_v_col_idx;
enum qwp_reader_column_kind __pyx_v_kind;
char const *__pyx_v_name_buf;
size_t __pyx_v_name_len;
questdb_error *__pyx_v_err;
struct qwp_reader_column_data __pyx_v_cd_meta;
int __pyx_v_has_symbol;
PyObject *__pyx_v_col_names = NULL;
PyObject *__pyx_v_col_kinds = NULL;
PyObject *__pyx_v_col_scales = NULL;
PyObject *__pyx_v_col_precision = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._numpy_extract_meta", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_col_names);
__Pyx_XDECREF(__pyx_v_col_kinds);
__Pyx_XDECREF(__pyx_v_col_scales);
__Pyx_XDECREF(__pyx_v_col_precision);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2231: cdef size_t n_cols = qwp_reader_batch_column_count(batch)
__pyx_v_n_cols = qwp_reader_batch_column_count(__pyx_v_batch);
2232: cdef size_t col_idx
+2233: cdef qwp_reader_column_kind kind = qwp_reader_column_kind_unknown
__pyx_v_kind = qwp_reader_column_kind_unknown;
+2234: cdef const char* name_buf = NULL
__pyx_v_name_buf = NULL;
+2235: cdef size_t name_len = 0
__pyx_v_name_len = 0;
+2236: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2237: cdef qwp_reader_column_data cd_meta
+2238: cdef bint has_symbol = False
__pyx_v_has_symbol = 0;
+2239: col_names = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2240: col_kinds = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_kinds = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2241: col_scales = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_scales = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2242: col_precision = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_precision = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2243: for col_idx in range(n_cols):
__pyx_t_2 = __pyx_v_n_cols;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_col_idx = __pyx_t_4;
+2244: _reader_check(
__pyx_t_5 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_name(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_name_buf), (&__pyx_v_name_len), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_name); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 2244, __pyx_L1_error)
2245: qwp_reader_batch_column_name(
2246: batch, col_idx, &name_buf, &name_len, &err),
2247: &err, 'qwp_reader_batch_column_name')
+2248: col_names.append(
__pyx_t_6 = __Pyx_PyList_Append(__pyx_v_col_names, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2248, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2249: PyUnicode_FromStringAndSize(name_buf, <Py_ssize_t>name_len))
__pyx_t_1 = PyUnicode_FromStringAndSize(__pyx_v_name_buf, ((Py_ssize_t)__pyx_v_name_len)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1);
+2250: _reader_check(
__pyx_t_5 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_kind(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_kind), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_kind); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 2250, __pyx_L1_error)
2251: qwp_reader_batch_column_kind(batch, col_idx, &kind, &err),
2252: &err, 'qwp_reader_batch_column_kind')
+2253: col_kinds.append(<int>kind)
__pyx_t_1 = __Pyx_PyLong_From_int(((int)__pyx_v_kind)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_col_kinds, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2253, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2254: col_scales.append(None)
__pyx_t_6 = __Pyx_PyList_Append(__pyx_v_col_scales, Py_None); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2254, __pyx_L1_error)
+2255: col_precision.append(None)
__pyx_t_6 = __Pyx_PyList_Append(__pyx_v_col_precision, Py_None); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2255, __pyx_L1_error)
+2256: if kind == qwp_reader_column_kind_symbol:
switch (__pyx_v_kind) {
case qwp_reader_column_kind_symbol:
/* … */
break;
case qwp_reader_column_kind_geohash:
+2257: has_symbol = True
__pyx_v_has_symbol = 1;
+2258: elif (kind == qwp_reader_column_kind_geohash
case qwp_reader_column_kind_decimal64:
/* … */
break;
default: break;
}
}
+2259: or kind == qwp_reader_column_kind_decimal64
case qwp_reader_column_kind_decimal128:
+2260: or kind == qwp_reader_column_kind_decimal128
case qwp_reader_column_kind_decimal256:
2261: or kind == qwp_reader_column_kind_decimal256):
+2262: if qwp_reader_batch_column_data(batch, col_idx, &cd_meta, &err):
__pyx_t_7 = qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd_meta), (&__pyx_v_err));
if (__pyx_t_7) {
/* … */
goto __pyx_L5;
}
+2263: if kind == qwp_reader_column_kind_geohash:
__pyx_t_7 = (__pyx_v_kind == qwp_reader_column_kind_geohash);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
+2264: col_precision[col_idx] = cd_meta.geohash_precision_bits
__pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_cd_meta.geohash_precision_bits); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely((__Pyx_SetItemInt(__pyx_v_col_precision, __pyx_v_col_idx, __pyx_t_1, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(1, 2264, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2265: else:
+2266: col_scales[col_idx] = cd_meta.decimal_scale
/*else*/ {
__pyx_t_1 = __Pyx_PyLong_From_int8_t(__pyx_v_cd_meta.decimal_scale); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2266, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely((__Pyx_SetItemInt(__pyx_v_col_scales, __pyx_v_col_idx, __pyx_t_1, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(1, 2266, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__pyx_L6:;
+2267: elif err != NULL:
__pyx_t_7 = (__pyx_v_err != NULL);
if (__pyx_t_7) {
/* … */
}
__pyx_L5:;
+2268: questdb_error_free(err)
questdb_error_free(__pyx_v_err);
+2269: err = NULL
__pyx_v_err = NULL;
+2270: return (col_names, col_kinds, col_scales, col_precision, has_symbol)
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_has_symbol); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(5); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_col_names); __Pyx_GIVEREF(__pyx_v_col_names); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_col_names) != (0)) __PYX_ERR(1, 2270, __pyx_L1_error); __Pyx_INCREF(__pyx_v_col_kinds); __Pyx_GIVEREF(__pyx_v_col_kinds); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_col_kinds) != (0)) __PYX_ERR(1, 2270, __pyx_L1_error); __Pyx_INCREF(__pyx_v_col_scales); __Pyx_GIVEREF(__pyx_v_col_scales); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_col_scales) != (0)) __PYX_ERR(1, 2270, __pyx_L1_error); __Pyx_INCREF(__pyx_v_col_precision); __Pyx_GIVEREF(__pyx_v_col_precision); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_col_precision) != (0)) __PYX_ERR(1, 2270, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_t_1) != (0)) __PYX_ERR(1, 2270, __pyx_L1_error); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_8); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_8 = 0; goto __pyx_L0;
2271:
2272:
+2273: cdef object _FROM_CODES_HAS_VALIDATE = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE, Py_None); __Pyx_GIVEREF(Py_None);
2274:
2275:
+2276: cdef object _symbol_from_codes(object pd, object arr, object dtype):
static PyObject *__pyx_f_7questdb_7_client__symbol_from_codes(PyObject *__pyx_v_pd, PyObject *__pyx_v_arr, PyObject *__pyx_v_dtype) {
Py_ssize_t __pyx_v_n_cats;
PyObject *__pyx_v_inspect = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._symbol_from_codes", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_inspect);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2277: # Bounds-check the wire codes against the dict once (a vectorised C-level
2278: # reduction), then skip pandas' O(rows) Python re-validation. `validate=`
2279: # exists since pandas 2.1; older pandas keeps the checked path. `dtype=`
2280: # reuses one cached category Index across columns and batches (vs
2281: # `categories=`, which rebuilds it every call).
+2282: cdef Py_ssize_t n_cats = len(dtype.categories)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dtype, __pyx_mstate_global->__pyx_n_u_categories); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_n_cats = __pyx_t_2;
+2283: if arr.size and <Py_ssize_t>int(arr.max()) >= n_cats:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_arr, __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 2283, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { } else { __pyx_t_3 = __pyx_t_4; goto __pyx_L4_bool_binop_done; } __pyx_t_5 = __pyx_v_arr; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_max, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_5); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 2283, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_4 = (((Py_ssize_t)__pyx_t_2) >= __pyx_v_n_cats); __pyx_t_3 = __pyx_t_4; __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_3)) { /* … */ }
+2284: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2284, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+2285: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_corrupt_symbol_codes_code_out_of}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __Pyx_Raise(__pyx_t_5, 0, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __PYX_ERR(1, 2284, __pyx_L1_error)
2286: 'corrupt symbol codes: code out of dictionary range')
2287: global _FROM_CODES_HAS_VALIDATE
+2288: if _FROM_CODES_HAS_VALIDATE is None:
__pyx_t_3 = (__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE == Py_None);
if (__pyx_t_3) {
/* … */
}
+2289: import inspect
__pyx_t_10 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_inspect, 0, 0, NULL, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2289, __pyx_L1_error) __pyx_t_5 = __pyx_t_10; __Pyx_GOTREF(__pyx_t_5); __pyx_v_inspect = __pyx_t_5; __pyx_t_5 = 0;
2290: _FROM_CODES_HAS_VALIDATE = (
+2291: 'validate' in inspect.signature(
__pyx_t_7 = __pyx_v_inspect;
__Pyx_INCREF(__pyx_t_7);
/* … */
__pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2291, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE);
__Pyx_DECREF_SET(__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
+2292: pd.Categorical.from_codes).parameters)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_Categorical); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_from_codes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_1}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_signature, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2291, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_parameters); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_mstate_global->__pyx_n_u_validate, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 2291, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2293: if _FROM_CODES_HAS_VALIDATE:
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_7questdb_7_client__FROM_CODES_HAS_VALIDATE); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 2293, __pyx_L1_error) if (__pyx_t_3) { /* … */ }
+2294: return pd.Categorical.from_codes(arr, dtype=dtype, validate=False)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_Categorical); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __pyx_t_7; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; { PyObject *__pyx_callargs[4] = {__pyx_t_5, __pyx_v_arr, __pyx_v_dtype, Py_False}; #if CYTHON_VECTORCALL __pyx_t_9 = __pyx_mstate_global->__pyx_tuple[16]; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2294, __pyx_L1_error) __Pyx_INCREF(__pyx_t_9); #else { PyObject *__pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_dtype, __pyx_mstate_global->__pyx_n_u_validate}; __pyx_t_9 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_codes, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0; /* … */ { PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_dtype, __pyx_mstate_global->__pyx_n_u_validate}; __pyx_mstate_global->__pyx_tuple[16] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[16])) __PYX_ERR(1, 2294, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]);
+2295: return pd.Categorical.from_codes(arr, dtype=dtype)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_Categorical); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __pyx_t_9; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_arr, __pyx_v_dtype}; #if CYTHON_VECTORCALL __pyx_t_5 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2295, __pyx_L1_error) __Pyx_INCREF(__pyx_t_5); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_5 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_codes, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
2296:
2297:
+2298: cdef object _numpy_roundtrip_claim(
static PyObject *__pyx_f_7questdb_7_client__numpy_roundtrip_claim(PyObject *__pyx_v_col_names, PyObject *__pyx_v_col_kinds, PyObject *__pyx_v_col_scales, PyObject *__pyx_v_col_precision) {
size_t __pyx_v_col_idx;
size_t __pyx_v_n_cols;
PyObject *__pyx_v_columns_meta = 0;
PyObject *__pyx_v_entry = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._numpy_roundtrip_claim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_columns_meta);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2299: list col_names, list col_kinds, list col_scales, list col_precision):
2300: """The ``df.attrs['questdb']`` claim for a native (no pyarrow) result.
2301:
2302: Built from the schema the first batch reported, which the whole
2303: result shares, so a streaming read builds it once and hands the same
2304: claim to every batch. That is sound for the same reason pandas can
2305: share it between copies of one frame: the claim declines to be
2306: copied and cannot be edited.
2307: """
2308: cdef size_t col_idx
+2309: cdef size_t n_cols = <size_t>len(col_names)
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2309, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_col_names); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2309, __pyx_L1_error)
__pyx_v_n_cols = ((size_t)__pyx_t_1);
+2310: cdef dict columns_meta = {}
__pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_columns_meta = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
2311: cdef dict entry
+2312: for col_idx in range(n_cols):
__pyx_t_3 = __pyx_v_n_cols;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_col_idx = __pyx_t_5;
+2313: entry = {'kind': _KIND_NAMES.get(col_kinds[col_idx], 'unknown')}
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(__pyx_v_7questdb_7_client__KIND_NAMES == Py_None)) { PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get"); __PYX_ERR(1, 2313, __pyx_L1_error) } if (unlikely(__pyx_v_col_kinds == Py_None)) { PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable"); __PYX_ERR(1, 2313, __pyx_L1_error) } __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_7questdb_7_client__KIND_NAMES, __pyx_t_6, __pyx_mstate_global->__pyx_n_u_unknown); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_kind, __pyx_t_7) < (0)) __PYX_ERR(1, 2313, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_entry, ((PyObject*)__pyx_t_2)); __pyx_t_2 = 0;
+2314: if col_scales[col_idx] is not None:
if (unlikely(__pyx_v_col_scales == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2314, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_scales, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2314, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = (__pyx_t_2 != Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_8) {
/* … */
}
+2315: entry['scale'] = col_scales[col_idx]
if (unlikely(__pyx_v_col_scales == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2315, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_scales, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2315, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely((PyDict_SetItem(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_scale, __pyx_t_2) < 0))) __PYX_ERR(1, 2315, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2316: if col_precision[col_idx] is not None:
if (unlikely(__pyx_v_col_precision == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2316, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_precision, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2316, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_8 = (__pyx_t_2 != Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_8) {
/* … */
}
+2317: entry['precision_bits'] = col_precision[col_idx]
if (unlikely(__pyx_v_col_precision == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2317, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_precision, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2317, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely((PyDict_SetItem(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_precision_bits, __pyx_t_2) < 0))) __PYX_ERR(1, 2317, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2318: columns_meta[col_names[col_idx]] = entry
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2318, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_names, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2318, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely((PyDict_SetItem(__pyx_v_columns_meta, __pyx_t_2, __pyx_v_entry) < 0))) __PYX_ERR(1, 2318, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
+2319: return _RoundtripClaim(
__pyx_t_7 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_RoundtripClaim); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6);
+2320: {'version': _ROUNDTRIP_META_VERSION, 'columns': columns_meta})
__pyx_t_9 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = __Pyx_PyLong_From_int(__pyx_v_7questdb_7_client__ROUNDTRIP_META_VERSION); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_version, __pyx_t_10) < (0)) __PYX_ERR(1, 2320, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_columns, __pyx_v_columns_meta) < (0)) __PYX_ERR(1, 2320, __pyx_L1_error) __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
2321:
2322:
+2323: cdef object _numpy_assemble_frame(
static PyObject *__pyx_f_7questdb_7_client__numpy_assemble_frame(PyObject *__pyx_v_col_names, PyObject *__pyx_v_col_kinds, PyObject *__pyx_v_col_scales, PyObject *__pyx_v_col_precision, PyObject *__pyx_v_col_chunks, PyObject *__pyx_v_symbol_categories, PyObject *__pyx_v_np, PyObject *__pyx_v_pd, PyObject *__pyx_v_col_masks, struct __pyx_opt_args_7questdb_7_client__numpy_assemble_frame *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("questdb._client._numpy_assemble_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_arrays);
__Pyx_XDECREF(__pyx_v_chunks);
__Pyx_XDECREF(__pyx_v_arr);
__Pyx_XDECREF(__pyx_v_mask);
__Pyx_XDECREF(__pyx_v_frame);
__Pyx_XDECREF(__pyx_v_symbol_dtype);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_7questdb_7_client__numpy_assemble_frame {
int __pyx_n;
PyObject *symbol_dtype;
PyObject *claim;
};
2324: list col_names, list col_kinds, list col_scales,
2325: list col_precision, list col_chunks, list symbol_categories,
+2326: object np, object pd, list col_masks, object symbol_dtype=None,
PyObject *__pyx_v_symbol_dtype = ((PyObject *)Py_None);
+2327: object claim=None):
PyObject *__pyx_v_claim = ((PyObject *)Py_None);
size_t __pyx_v_n_cols;
size_t __pyx_v_col_idx;
enum qwp_reader_column_kind __pyx_v_kind;
PyObject *__pyx_v_arrays = NULL;
PyObject *__pyx_v_chunks = NULL;
PyObject *__pyx_v_arr = NULL;
PyObject *__pyx_v_mask = NULL;
PyObject *__pyx_v_frame = NULL;
PyObject *__pyx_r = NULL;
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_symbol_dtype = __pyx_optional_args->symbol_dtype;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_claim = __pyx_optional_args->claim;
}
}
}
__Pyx_INCREF(__pyx_v_symbol_dtype);
+2328: cdef size_t n_cols = <size_t>len(col_names)
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2328, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_col_names); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2328, __pyx_L1_error)
__pyx_v_n_cols = ((size_t)__pyx_t_1);
2329: cdef size_t col_idx
2330: cdef qwp_reader_column_kind kind
+2331: arrays = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_arrays = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+2332: for col_idx in range(n_cols):
__pyx_t_3 = __pyx_v_n_cols;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_col_idx = __pyx_t_5;
+2333: kind = <qwp_reader_column_kind><int>col_kinds[col_idx]
if (unlikely(__pyx_v_col_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2333, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2333, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2333, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_kind = ((enum qwp_reader_column_kind)((int)__pyx_t_6));
+2334: chunks = col_chunks[col_idx]
if (unlikely(__pyx_v_col_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2334, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_col_chunks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2334, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_chunks, __pyx_t_2);
__pyx_t_2 = 0;
+2335: if len(chunks) == 1:
__pyx_t_1 = PyObject_Length(__pyx_v_chunks); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2335, __pyx_L1_error) __pyx_t_7 = (__pyx_t_1 == 1); if (__pyx_t_7) { /* … */ goto __pyx_L5; }
+2336: arr = chunks[0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_chunks, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_arr, __pyx_t_2); __pyx_t_2 = 0;
2337: else:
+2338: arr = np.concatenate(chunks)
/*else*/ {
__pyx_t_8 = __pyx_v_np;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_chunks};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_concatenate, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_XDECREF_SET(__pyx_v_arr, __pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L5:;
+2339: if kind == qwp_reader_column_kind_symbol:
__pyx_t_7 = (__pyx_v_kind == qwp_reader_column_kind_symbol);
if (__pyx_t_7) {
/* … */
goto __pyx_L6;
}
2340: # Build the category Index once (here for fetch-all, or supplied
2341: # pre-built by `_NumpyBatchIter` across batches) and reuse it via
2342: # `dtype=` for every SYMBOL column, then build from the codes with no
2343: # bounds re-validation. Avoids the O(columns/batches x cardinality)
2344: # Index rebuild + validation the `categories=`/validate path costs.
+2345: if symbol_dtype is None:
__pyx_t_7 = (__pyx_v_symbol_dtype == Py_None);
if (__pyx_t_7) {
/* … */
}
+2346: symbol_dtype = pd.CategoricalDtype(symbol_categories)
__pyx_t_8 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_symbol_categories};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_CategoricalDtype, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2346, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF_SET(__pyx_v_symbol_dtype, __pyx_t_2);
__pyx_t_2 = 0;
+2347: arr = _symbol_from_codes(pd, arr, symbol_dtype)
__pyx_t_2 = __pyx_f_7questdb_7_client__symbol_from_codes(__pyx_v_pd, __pyx_v_arr, __pyx_v_symbol_dtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_arr, __pyx_t_2); __pyx_t_2 = 0;
+2348: elif _is_hybrid_int(kind):
__pyx_t_7 = __pyx_f_7questdb_7_client__is_hybrid_int(__pyx_v_kind); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2348, __pyx_L1_error) if (__pyx_t_7) { /* … */ } __pyx_L6:;
+2349: mask = _combine_hybrid_mask(chunks, col_masks[col_idx], np)
__pyx_t_2 = __pyx_v_chunks;
__Pyx_INCREF(__pyx_t_2);
if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(1, 2349, __pyx_L1_error)
if (unlikely(__pyx_v_col_masks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2349, __pyx_L1_error)
}
__pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_col_masks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_8))) __PYX_ERR(1, 2349, __pyx_L1_error)
__pyx_t_10 = __pyx_f_7questdb_7_client__combine_hybrid_mask(((PyObject*)__pyx_t_2), ((PyObject*)__pyx_t_8), __pyx_v_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2349, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF_SET(__pyx_v_mask, __pyx_t_10);
__pyx_t_10 = 0;
+2350: if mask is not None:
__pyx_t_7 = (__pyx_v_mask != Py_None);
if (__pyx_t_7) {
/* … */
}
+2351: arr = _build_nullable_array(arr, mask, kind, pd)
__pyx_t_10 = __pyx_f_7questdb_7_client__build_nullable_array(__pyx_v_arr, __pyx_v_mask, __pyx_v_kind, __pyx_v_pd); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2351, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF_SET(__pyx_v_arr, __pyx_t_10); __pyx_t_10 = 0;
+2352: arrays.append(arr)
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_arrays, __pyx_v_arr); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 2352, __pyx_L1_error) }
+2353: frame = pd.DataFrame(dict(enumerate(arrays)), copy=False)
__pyx_t_8 = __pyx_v_pd; __Pyx_INCREF(__pyx_t_8); __pyx_t_12 = NULL; __pyx_t_14 = NULL; __pyx_t_3 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_14, __pyx_v_arrays}; __pyx_t_13 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_enumerate, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); } __pyx_t_3 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_13}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)(&PyDict_Type), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __pyx_t_3 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_2, Py_False}; #if CYTHON_VECTORCALL __pyx_t_13 = __pyx_mstate_global->__pyx_tuple[17]; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_INCREF(__pyx_t_13); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_copy}; __pyx_t_13 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); } #endif __pyx_t_10 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_DataFrame, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } __pyx_v_frame = __pyx_t_10; __pyx_t_10 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_copy}; __pyx_mstate_global->__pyx_tuple[17] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[17])) __PYX_ERR(1, 2353, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[17]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[17]);
2354: # Keep pandas 3 from inferring a pyarrow-backed StringDtype Index.
+2355: frame.columns = pd.Index(col_names, dtype=object)
__pyx_t_13 = __pyx_v_pd; __Pyx_INCREF(__pyx_t_13); __pyx_t_3 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_v_col_names, __pyx_builtin_object}; #if CYTHON_VECTORCALL __pyx_t_2 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2355, __pyx_L1_error) __Pyx_INCREF(__pyx_t_2); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_2 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } #endif __pyx_t_10 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_Index, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } if (__Pyx_PyObject_SetAttrStr(__pyx_v_frame, __pyx_mstate_global->__pyx_n_u_columns, __pyx_t_10) < (0)) __PYX_ERR(1, 2355, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+2356: frame.attrs['questdb'] = (
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_questdb, __pyx_t_10) < 0))) __PYX_ERR(1, 2356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+2357: _numpy_roundtrip_claim(
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_roundtrip_claim(__pyx_v_col_names, __pyx_v_col_kinds, __pyx_v_col_scales, __pyx_v_col_precision); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = __pyx_t_2; __pyx_t_2 = 0; } else {
2358: col_names, col_kinds, col_scales, col_precision)
+2359: if claim is None else claim)
__pyx_t_7 = (__pyx_v_claim == Py_None);
if (__pyx_t_7) {
/* … */
__Pyx_INCREF(__pyx_v_claim);
__pyx_t_10 = __pyx_v_claim;
}
+2360: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2361:
2362:
+2363: cdef tuple _numpy_batch_columns(
static PyObject *__pyx_f_7questdb_7_client__numpy_batch_columns(struct qwp_reader_batch const *__pyx_v_batch, PyObject *__pyx_v_col_kinds, size_t __pyx_v_n_cols, size_t __pyx_v_row_count, PyObject *__pyx_v_np) {
size_t __pyx_v_col_idx;
enum qwp_reader_column_kind __pyx_v_kind;
PyObject *__pyx_v_chunks = NULL;
PyObject *__pyx_v_masks = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._numpy_batch_columns", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_chunks);
__Pyx_XDECREF(__pyx_v_masks);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2364: const qwp_reader_batch* batch, list col_kinds,
2365: size_t n_cols, size_t row_count, object np):
2366: cdef size_t col_idx
2367: cdef qwp_reader_column_kind kind
+2368: chunks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2368, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_chunks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2369: masks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_masks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2370: for col_idx in range(n_cols):
__pyx_t_2 = __pyx_v_n_cols;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_col_idx = __pyx_t_4;
+2371: kind = <qwp_reader_column_kind><int>col_kinds[col_idx]
if (unlikely(__pyx_v_col_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2371, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2371, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2371, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_kind = ((enum qwp_reader_column_kind)((int)__pyx_t_5));
+2372: chunks.append(_numpy_column_chunk(batch, col_idx, kind, row_count, np))
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_column_chunk(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_kind, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2372, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_chunks, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2372, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2373: if _is_hybrid_int(kind):
__pyx_t_7 = __pyx_f_7questdb_7_client__is_hybrid_int(__pyx_v_kind); if (unlikely(__pyx_t_7 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2373, __pyx_L1_error) if (__pyx_t_7) { /* … */ goto __pyx_L5; }
+2374: masks.append(_numpy_validity_mask(batch, col_idx, row_count, np))
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_validity_mask(__pyx_v_batch, __pyx_v_col_idx, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_masks, __pyx_t_1); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2374, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2375: else:
+2376: masks.append(None)
/*else*/ {
__pyx_t_6 = __Pyx_PyList_Append(__pyx_v_masks, Py_None); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 2376, __pyx_L1_error)
}
__pyx_L5:;
}
+2377: return (chunks, masks)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_chunks); __Pyx_GIVEREF(__pyx_v_chunks); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_chunks) != (0)) __PYX_ERR(1, 2377, __pyx_L1_error); __Pyx_INCREF(__pyx_v_masks); __Pyx_GIVEREF(__pyx_v_masks); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_masks) != (0)) __PYX_ERR(1, 2377, __pyx_L1_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
2378:
2379:
2380: # ---------------------------------------------------------------------------
2381: # Row egress: `QueryResult.columns()` / `QueryResult.iter_rows()`.
2382: #
2383: # Built on the same raw-batch C API as the numpy path
2384: # (`qwp_reader_cursor_next_batch` + the `qwp_reader_column_data` view), not on
2385: # Arrow: a row consumer wants Python objects, and going through Arrow would
2386: # add a conversion and a hard `pyarrow` dependency to get them. Serves
2387: # DB-API-shaped callers — dbt, a PEP 249 shim, plain scripting — where result
2388: # sets are small (metadata lookups, test rows, `LIMIT 0` schema probes) and
2389: # exact QuestDB type names matter more than throughput. Large analytical
2390: # results still belong on `to_pandas()` / `to_arrow()`, which stay columnar.
2391: # ---------------------------------------------------------------------------
2392:
2393: # `datetime.min` / `datetime.max` as microseconds since the epoch.
+2394: cdef int64_t _DATETIME_MIN_MICROS = -62_135_596_800_000_000
__pyx_v_7questdb_7_client__DATETIME_MIN_MICROS = -62135596800000000L;
+2395: cdef int64_t _DATETIME_MAX_MICROS = 253_402_300_799_999_999
__pyx_v_7questdb_7_client__DATETIME_MAX_MICROS = 0x384440CCC735FFF;
+2396: cdef int64_t _MICROS_PER_DAY = 86_400_000_000
__pyx_v_7questdb_7_client__MICROS_PER_DAY = 0x141DD76000;
2397:
2398: # Geohash base-32 alphabet, matching `GeoHashes.base32` on the server.
+2399: cdef const char* _GEOHASH_BASE32 = b'0123456789bcdefghjkmnpqrstuvwxyz'
__pyx_v_7questdb_7_client__GEOHASH_BASE32 = __pyx_k_0123456789bcdefghjkmnpqrstuvwxyz;
2400:
2401:
2402: # Fixed part of the QuestDB DDL spelling per column kind. GEOHASH and the
2403: # DECIMALs carry parameters and are rendered by `_questdb_type_name`.
2404: # Spellings follow `ColumnType.typeNameMap` on the server, including the
2405: # mixed-case `IPv4`, so a caller can compare them against `tables()` /
2406: # `information_schema.questdb_columns()` output without normalising.
2407: _QDB_TYPE_NAMES = {
+2408: <int>qwp_reader_column_kind_boolean: 'BOOLEAN',
__pyx_t_17 = __Pyx_PyDict_NewPresized(19); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_boolean)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_BOOLEAN) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2409: <int>qwp_reader_column_kind_byte: 'BYTE',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_byte)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_BYTE) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2410: <int>qwp_reader_column_kind_short: 'SHORT',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_short)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_SHORT) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2411: <int>qwp_reader_column_kind_int: 'INT',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_int)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_INT) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2412: <int>qwp_reader_column_kind_long: 'LONG',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_LONG) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2413: <int>qwp_reader_column_kind_float: 'FLOAT',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_float)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_FLOAT) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2414: <int>qwp_reader_column_kind_double: 'DOUBLE',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_double)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_DOUBLE) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2415: <int>qwp_reader_column_kind_symbol: 'SYMBOL',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_symbol)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_SYMBOL) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2416: <int>qwp_reader_column_kind_timestamp: 'TIMESTAMP',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_timestamp)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_TIMESTAMP) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2417: <int>qwp_reader_column_kind_date: 'DATE',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_date)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_DATE) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2418: <int>qwp_reader_column_kind_uuid: 'UUID',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_uuid)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_UUID) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2419: <int>qwp_reader_column_kind_long256: 'LONG256',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long256)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_LONG256) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2420: # STRING columns reach the client as VARCHAR: QWP has no STRING column
2421: # kind, so a legacy STRING column is reported as VARCHAR here.
+2422: <int>qwp_reader_column_kind_varchar: 'VARCHAR',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_varchar)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_VARCHAR) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2423: <int>qwp_reader_column_kind_timestamp_nanos: 'TIMESTAMP_NS',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_timestamp_nanos)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2423, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_TIMESTAMP_NS) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
2424: # The wire schema carries no dimension count, so every array column is
2425: # reported in its 1-D spelling; the server writes a 2-D one `DOUBLE[][]`.
+2426: <int>qwp_reader_column_kind_double_array: 'DOUBLE[]',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_double_array)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2426, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_kp_u_DOUBLE_2) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2427: <int>qwp_reader_column_kind_long_array: 'LONG[]',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_long_array)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_kp_u_LONG_2) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2428: <int>qwp_reader_column_kind_char: 'CHAR',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_char)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_CHAR) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2429: <int>qwp_reader_column_kind_binary: 'BINARY',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_binary)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_BINARY) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2430: <int>qwp_reader_column_kind_ipv4: 'IPv4',
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_ipv4)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_n_u_IPv4) < (0)) __PYX_ERR(1, 2408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_QDB_TYPE_NAMES, __pyx_t_17) < (0)) __PYX_ERR(1, 2407, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2431: }
2432:
2433: # Storage-width precision ceilings for the three DECIMAL widths. The wire
2434: # carries only `decimal_scale`, so a column declared `DECIMAL(10,2)` is
2435: # reported as `DECIMAL(18,2)` — the declared precision is not recoverable
2436: # from a result set.
2437: _DECIMAL_PRECISION = {
+2438: <int>qwp_reader_column_kind_decimal64: 18,
__pyx_t_17 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal64)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_int_18) < (0)) __PYX_ERR(1, 2438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2439: <int>qwp_reader_column_kind_decimal128: 38,
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal128)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_int_38) < (0)) __PYX_ERR(1, 2438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2440: <int>qwp_reader_column_kind_decimal256: 76,
__pyx_t_16 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_decimal256)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); if (PyDict_SetItem(__pyx_t_17, __pyx_t_16, __pyx_mstate_global->__pyx_int_76) < (0)) __PYX_ERR(1, 2438, __pyx_L1_error) __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_DECIMAL_PRECISION, __pyx_t_17) < (0)) __PYX_ERR(1, 2437, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
2441: }
2442:
2443:
+2444: cdef str _questdb_type_name(int kind, object scale, object precision_bits):
static PyObject *__pyx_f_7questdb_7_client__questdb_type_name(int __pyx_v_kind, PyObject *__pyx_v_scale, PyObject *__pyx_v_precision_bits) {
int __pyx_v_bits;
int __pyx_v_dec_precision;
PyObject *__pyx_v_name = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client._questdb_type_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_name);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2445: """QuestDB DDL type name for a column kind plus its parameters."""
2446: cdef int bits
2447: cdef int dec_precision
+2448: if kind == <int>qwp_reader_column_kind_geohash:
__pyx_t_1 = (__pyx_v_kind == ((int)qwp_reader_column_kind_geohash));
if (__pyx_t_1) {
/* … */
}
2449: # `GeoHashes`/`ColumnType`: character form when the width is a whole
2450: # number of base-32 characters, bit form otherwise.
+2451: bits = 0 if precision_bits is None else <int>precision_bits
__pyx_t_1 = (__pyx_v_precision_bits == Py_None);
if (__pyx_t_1) {
__pyx_t_2 = 0;
} else {
__pyx_t_3 = __Pyx_PyLong_As_int(__pyx_v_precision_bits); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2451, __pyx_L1_error)
__pyx_t_2 = ((int)__pyx_t_3);
}
__pyx_v_bits = __pyx_t_2;
+2452: if bits > 0 and bits % 5 == 0:
__pyx_t_4 = (__pyx_v_bits > 0);
if (__pyx_t_4) {
} else {
__pyx_t_1 = __pyx_t_4;
goto __pyx_L5_bool_binop_done;
}
__pyx_t_4 = (__Pyx_mod_long(__pyx_v_bits, 5, 1) == 0);
__pyx_t_1 = __pyx_t_4;
__pyx_L5_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+2453: return 'GEOHASH({}c)'.format(bits // 5)
__pyx_t_6 = __pyx_mstate_global->__pyx_kp_u_GEOHASH_c;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyLong_From_long(__Pyx_div_long(__pyx_v_bits, 5, 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2453, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2453, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2453, __pyx_L1_error)
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_5);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_5 = 0;
goto __pyx_L0;
+2454: return 'GEOHASH({}b)'.format(bits)
__pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_GEOHASH_b;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_6 = __Pyx_PyLong_From_int(__pyx_v_bits); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2454, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2454, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2454, __pyx_L1_error)
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_5);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_5 = 0;
goto __pyx_L0;
+2455: if kind in _DECIMAL_PRECISION:
__pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_DECIMAL_PRECISION); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_5, __pyx_t_6, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 2455, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_1) { /* … */ }
+2456: dec_precision = <int>_DECIMAL_PRECISION[kind]
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_DECIMAL_PRECISION); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, __pyx_v_kind, int, 1, __Pyx_PyLong_From_int, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_t_5); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2456, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_dec_precision = ((int)__pyx_t_2);
+2457: return 'DECIMAL({},{})'.format(
__pyx_t_6 = __pyx_mstate_global->__pyx_kp_u_DECIMAL;
__Pyx_INCREF(__pyx_t_6);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2457, __pyx_L1_error)
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_5);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_5 = 0;
goto __pyx_L0;
+2458: dec_precision, 0 if scale is None else <int>scale)
__pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_dec_precision); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = (__pyx_v_scale == Py_None); if (__pyx_t_1) { __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_t_9 = __pyx_mstate_global->__pyx_int_0; } else { __pyx_t_2 = __Pyx_PyLong_As_int(__pyx_v_scale); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2458, __pyx_L1_error) __pyx_t_10 = __Pyx_PyLong_From_int(((int)__pyx_t_2)); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_9 = __pyx_t_10; __pyx_t_10 = 0; } __pyx_t_8 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_9}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+2459: name = _QDB_TYPE_NAMES.get(kind)
__pyx_t_9 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QDB_TYPE_NAMES); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_8 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7}; __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_v_name = __pyx_t_5; __pyx_t_5 = 0;
+2460: if name is None:
__pyx_t_1 = (__pyx_v_name == Py_None);
if (__pyx_t_1) {
/* … */
}
+2461: return 'UNKNOWN(0x{:02X})'.format(kind)
__pyx_t_6 = __pyx_mstate_global->__pyx_kp_u_UNKNOWN_0x_02X;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2461, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_7};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2461, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2461, __pyx_L1_error)
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_5);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_5 = 0;
goto __pyx_L0;
+2462: return name
__pyx_t_5 = __pyx_v_name; __Pyx_INCREF(__pyx_t_5); if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2462, __pyx_L1_error) { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_5); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_5 = 0; goto __pyx_L0;
2463:
2464:
+2465: cdef str _geohash_text(uint64_t value, int bits):
static PyObject *__pyx_f_7questdb_7_client__geohash_text(uint64_t __pyx_v_value, int __pyx_v_bits) {
char __pyx_v_buf[64];
int __pyx_v_i;
int __pyx_v_n;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._geohash_text", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2466: """Render a geohash the way the server's text protocols do.
2467:
2468: `GeoHashes.appendCharsUnsafe` for a whole number of base-32 characters,
2469: `appendBinaryStringUnsafe` (a run of '0'/'1') otherwise. Returning the
2470: raw integer instead would be unusable against a `where geohash = '...'`
2471: predicate.
2472: """
2473: # `bits` is 1..60 (checked by the caller), so at most 60 characters.
2474: cdef char[64] buf
2475: cdef int i
2476: cdef int n
+2477: if bits > 0 and bits % 5 == 0:
__pyx_t_2 = (__pyx_v_bits > 0);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__Pyx_mod_long(__pyx_v_bits, 5, 1) == 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
goto __pyx_L3;
}
+2478: n = bits // 5
__pyx_v_n = __Pyx_div_long(__pyx_v_bits, 5, 1);
+2479: for i in range(n):
__pyx_t_3 = __pyx_v_n;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_i = __pyx_t_5;
+2480: buf[i] = _GEOHASH_BASE32[(value >> ((n - 1 - i) * 5)) & 0x1F]
(__pyx_v_buf[__pyx_v_i]) = (__pyx_v_7questdb_7_client__GEOHASH_BASE32[((__pyx_v_value >> (((__pyx_v_n - 1) - __pyx_v_i) * 5)) & 0x1F)]);
}
2481: else:
+2482: n = bits
/*else*/ {
__pyx_v_n = __pyx_v_bits;
+2483: for i in range(n):
__pyx_t_3 = __pyx_v_n;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_i = __pyx_t_5;
+2484: buf[i] = c'1' if (value >> (n - 1 - i)) & 1 else c'0'
__pyx_t_1 = (((__pyx_v_value >> ((__pyx_v_n - 1) - __pyx_v_i)) & 1) != 0);
if (__pyx_t_1) {
__pyx_t_6 = '1';
} else {
__pyx_t_6 = '0';
}
(__pyx_v_buf[__pyx_v_i]) = __pyx_t_6;
}
}
__pyx_L3:;
+2485: return PyUnicode_FromStringAndSize(buf, n)
__pyx_t_7 = PyUnicode_FromStringAndSize(__pyx_v_buf, __pyx_v_n); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_7); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_7 = 0; goto __pyx_L0;
2486:
2487:
+2488: cdef inline bint _cell_is_null(const uint8_t* validity, size_t row) noexcept:
static CYTHON_INLINE int __pyx_f_7questdb_7_client__cell_is_null(uint8_t const *__pyx_v_validity, size_t __pyx_v_row) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L0:;
return __pyx_r;
}
2489: # Per QWP the null bitmap is LSB-first within each byte and a set bit
2490: # means NULL; a column with no nulls carries no bitmap at all.
+2491: return validity != NULL and ((validity[row >> 3] >> (row & 7)) & 1)
__pyx_t_2 = (__pyx_v_validity != NULL);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L3_bool_binop_done;
}
__pyx_t_2 = ((((__pyx_v_validity[(__pyx_v_row >> 3)]) >> (__pyx_v_row & 7)) & 1) != 0);
__pyx_t_1 = __pyx_t_2;
__pyx_L3_bool_binop_done:;
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
2492:
2493:
+2494: cdef void_int _raise_temporal_out_of_range(
static __pyx_t_7questdb_7_client_void_int __pyx_f_7questdb_7_client__raise_temporal_out_of_range(PyObject *__pyx_v_col_name, size_t __pyx_v_row, int64_t __pyx_v_value) {
__pyx_t_7questdb_7_client_void_int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._raise_temporal_out_of_range", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2495: str col_name, size_t row, int64_t value) except -1:
+2496: raise QuestDBError(
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+2497: QuestDBErrorCode.InvalidTimestamp,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidTimestamp); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2498: f'column {col_name!r} row {row}: value {value} is outside the range '
__pyx_t_4 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyUnicode_From_size_t(__pyx_v_row, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyUnicode_From_int64_t(__pyx_v_value, 0, ' ', 'd'); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_column_3; __pyx_t_8[1] = __pyx_t_4; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_row; __pyx_t_8[3] = __pyx_t_6; __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u_value_2; __pyx_t_8[5] = __pyx_t_7; __pyx_t_8[6] = __pyx_mstate_global->__pyx_kp_u_is_outside_the_range_datetime_c; __pyx_t_9 = 126; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[5]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]); #endif __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2498, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_11}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2496, __pyx_L1_error)
2499: 'datetime can represent (years 1..9999); use to_pandas() / '
2500: 'to_arrow() for this result')
2501:
2502:
+2503: cdef object _utc_datetime(int64_t days, int secs, int micros):
static PyObject *__pyx_f_7questdb_7_client__utc_datetime(int64_t __pyx_v_days, int __pyx_v_secs, int __pyx_v_micros) {
int __pyx_v_z;
int __pyx_v_era;
int __pyx_v_doe;
int __pyx_v_yoe;
int __pyx_v_doy;
int __pyx_v_mp;
int __pyx_v_month;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._utc_datetime", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2504: cdef int z = <int>days + 719468
__pyx_v_z = (((int)__pyx_v_days) + 0xAFA6C);
+2505: cdef int era = z // 146097
__pyx_v_era = __Pyx_div_long(__pyx_v_z, 0x23AB1, 1);
+2506: cdef int doe = z - era * 146097
__pyx_v_doe = (__pyx_v_z - (__pyx_v_era * 0x23AB1));
+2507: cdef int yoe = (doe - doe // 1460 + doe // 36524 - doe // 146096) // 365
__pyx_v_yoe = __Pyx_div_long((((__pyx_v_doe - __Pyx_div_long(__pyx_v_doe, 0x5B4, 1)) + __Pyx_div_long(__pyx_v_doe, 0x8EAC, 1)) - __Pyx_div_long(__pyx_v_doe, 0x23AB0, 1)), 0x16D, 1);
+2508: cdef int doy = doe - (365 * yoe + yoe // 4 - yoe // 100)
__pyx_v_doy = (__pyx_v_doe - (((0x16D * __pyx_v_yoe) + __Pyx_div_long(__pyx_v_yoe, 4, 1)) - __Pyx_div_long(__pyx_v_yoe, 0x64, 1)));
+2509: cdef int mp = (5 * doy + 2) // 153
__pyx_v_mp = __Pyx_div_long(((5 * __pyx_v_doy) + 2), 0x99, 1);
+2510: cdef int month = mp + 3 if mp < 10 else mp - 9
__pyx_t_2 = (__pyx_v_mp < 10);
if (__pyx_t_2) {
__pyx_t_1 = (__pyx_v_mp + 3);
} else {
__pyx_t_1 = (__pyx_v_mp - 9);
}
__pyx_v_month = __pyx_t_1;
+2511: return datetime_new(
__pyx_t_4 = ((PyObject *)__pyx_f_7cpython_8datetime_datetime_new((((__pyx_v_era * 0x190) + __pyx_v_yoe) + (__pyx_v_month <= 2)), __pyx_v_month, ((__pyx_v_doy - __Pyx_div_long(((0x99 * __pyx_v_mp) + 2), 5, 1)) + 1), __Pyx_div_long(__pyx_v_secs, 0xE10, 1), __Pyx_mod_long(__Pyx_div_long(__pyx_v_secs, 60, 1), 60, 1), __Pyx_mod_long(__pyx_v_secs, 60, 1), __pyx_v_micros, __pyx_t_3, NULL)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
2512: era * 400 + yoe + (month <= 2), month, doy - (153 * mp + 2) // 5 + 1,
+2513: secs // 3600, secs // 60 % 60, secs % 60, micros, _UTC)
__pyx_t_3 = __pyx_v_7questdb_7_client__UTC;
__Pyx_INCREF(__pyx_t_3);
2514:
2515:
+2516: cdef list _row_column_values(
static PyObject *__pyx_f_7questdb_7_client__row_column_values(struct qwp_reader_batch const *__pyx_v_batch, size_t __pyx_v_col_idx, PyObject *__pyx_v_col_name, int __pyx_v_kind, size_t __pyx_v_row_count, struct qwp_reader_symbol_dict const *__pyx_v_sd, struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_symbols, PyObject *__pyx_v_np) {
struct qwp_reader_column_data __pyx_v_cd;
questdb_error *__pyx_v_err;
uint8_t const *__pyx_v_validity;
uint8_t const *__pyx_v_values;
uint32_t const *__pyx_v_offsets;
uint8_t const *__pyx_v_var_data;
uint32_t const *__pyx_v_codes;
PyObject *__pyx_v_slot;
size_t __pyx_v_r;
size_t __pyx_v_stride;
uint32_t __pyx_v_start;
uint32_t __pyx_v_end;
uint32_t __pyx_v_code;
uint64_t __pyx_v_lo;
uint64_t __pyx_v_hi;
uint64_t __pyx_v_u64;
int64_t __pyx_v_i64;
int32_t __pyx_v_i32;
int16_t __pyx_v_i16;
uint16_t __pyx_v_u16;
uint32_t __pyx_v_u32;
float __pyx_v_f32;
double __pyx_v_f64;
int __pyx_v_scale;
int __pyx_v_bits;
int64_t __pyx_v_micros;
int64_t __pyx_v_days;
int64_t __pyx_v_rem;
int64_t __pyx_v_secs;
PyObject *__pyx_v_out = 0;
PyObject *__pyx_v_ipv4_cls = 0;
PyObject *__pyx_v_decimal_cls = 0;
PyObject *__pyx_v_uuid_cls = 0;
PyObject *__pyx_v_chunk = NULL;
PyObject *__pyx_v_unscaled = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_XDECREF(__pyx_t_18);
__Pyx_AddTraceback("questdb._client._row_column_values", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_out);
__Pyx_XDECREF(__pyx_v_ipv4_cls);
__Pyx_XDECREF(__pyx_v_decimal_cls);
__Pyx_XDECREF(__pyx_v_uuid_cls);
__Pyx_XDECREF(__pyx_v_chunk);
__Pyx_XDECREF(__pyx_v_unscaled);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2517: const qwp_reader_batch* batch,
2518: size_t col_idx,
2519: str col_name,
2520: int kind,
2521: size_t row_count,
2522: const qwp_reader_symbol_dict* sd,
2523: _SymbolStrings symbols,
2524: object np):
2525: """Decode one column of one batch into a list of Python values.
2526:
2527: Dispatch happens once per column rather than once per cell, which is
2528: where a naive row reader spends most of its time. `None` marks a null.
2529: """
2530: cdef qwp_reader_column_data cd
+2531: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2532: cdef const uint8_t* validity
2533: cdef const uint8_t* values
2534: cdef const uint32_t* offsets
2535: cdef const uint8_t* var_data
2536: cdef const uint32_t* codes
2537: cdef PyObject* slot
2538: cdef size_t r
2539: cdef size_t stride
2540: cdef uint32_t start
2541: cdef uint32_t end
2542: cdef uint32_t code
2543: cdef uint64_t lo
2544: cdef uint64_t hi
2545: cdef uint64_t u64
2546: cdef int64_t i64
2547: cdef int32_t i32
2548: cdef int16_t i16
2549: cdef uint16_t u16
2550: cdef uint32_t u32
2551: cdef float f32
2552: cdef double f64
2553: cdef int scale
2554: cdef int bits
2555: cdef int64_t micros
2556: cdef int64_t days
2557: cdef int64_t rem
2558: cdef int64_t secs
+2559: cdef list out = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_out = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2560: cdef object ipv4_cls
2561: cdef object decimal_cls
2562: cdef object uuid_cls
2563:
2564: # Arrays have their own accessor: `qwp_reader_batch_column_data` fails
2565: # outright on an array column, so this branch must come before it.
2566: # `_numpy_array_chunk` already walks the shape table and yields
2567: # ndarrays, so reuse it rather than re-deriving that here.
+2568: if (kind == <int>qwp_reader_column_kind_double_array
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_double_array));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+2569: or kind == <int>qwp_reader_column_kind_long_array):
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_long_array)); __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:;
+2570: if row_count == 0:
__pyx_t_2 = (__pyx_v_row_count == 0);
if (__pyx_t_2) {
/* … */
}
+2571: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+2572: if kind == <int>qwp_reader_column_kind_long_array:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_long_array));
if (unlikely(__pyx_t_2)) {
/* … */
}
+2573: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+2574: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2575: f'column {col_name!r}: row egress does not support LONG[] '
__pyx_t_6 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_column_3; __pyx_t_8[1] = __pyx_t_6; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_row_egress_does_not_support_LON; __pyx_t_9 = 55; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]); #endif __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2575, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_11}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2573, __pyx_L1_error)
2576: 'columns yet')
+2577: chunk = _numpy_array_chunk(
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_array_chunk(__pyx_v_batch, __pyx_v_col_idx, ((enum qwp_reader_column_kind)__pyx_v_kind), __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_chunk = __pyx_t_1; __pyx_t_1 = 0;
2578: batch, col_idx, <qwp_reader_column_kind>kind, row_count, np)
+2579: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2580: out.append(chunk[r])
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_chunk, __pyx_v_r, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; }
+2581: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2582:
+2583: _reader_check(
__pyx_t_10 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_column_data(__pyx_v_batch, __pyx_v_col_idx, (&__pyx_v_cd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_column_data); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 2583, __pyx_L1_error)
2584: qwp_reader_batch_column_data(batch, col_idx, &cd, &err), &err,
2585: 'qwp_reader_batch_column_data')
+2586: if <int>cd.kind != kind:
__pyx_t_2 = (((int)__pyx_v_cd.kind) != __pyx_v_kind);
if (unlikely(__pyx_t_2)) {
/* … */
}
+2587: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2587, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
+2588: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2589: f'column {col_name!r} changed kind mid-query: expected '
__pyx_t_16 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_column_3; __pyx_t_8[1] = __pyx_t_16; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_changed_kind_mid_query_expected; __pyx_t_9 = 73; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]); #endif __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __pyx_t_6 = __pyx_t_17; __Pyx_INCREF(__pyx_t_6);
+2590: '0x{:02X}, batch carries 0x{:02X}'.format(kind, <int>cd.kind))
__pyx_t_16 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_18 = __Pyx_PyLong_From_int(((int)__pyx_v_cd.kind)); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_12 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_16, __pyx_t_18}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } if (!(likely(PyUnicode_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(1, 2590, __pyx_L1_error) __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_11, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2587, __pyx_L1_error)
+2591: if row_count == 0:
__pyx_t_2 = (__pyx_v_row_count == 0);
if (__pyx_t_2) {
/* … */
}
+2592: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+2593: validity = cd.validity
__pyx_t_19 = __pyx_v_cd.validity; __pyx_v_validity = __pyx_t_19;
2594:
+2595: if kind == <int>qwp_reader_column_kind_symbol:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_symbol));
if (__pyx_t_2) {
/* … */
}
+2596: codes = cd.symbol_codes
__pyx_t_20 = __pyx_v_cd.symbol_codes;
__pyx_v_codes = __pyx_t_20;
+2597: if codes == NULL:
__pyx_t_2 = (__pyx_v_codes == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+2598: raise QuestDBError(
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2598, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+2599: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2600: 'symbol column has {} rows but no code array'.format(
__pyx_t_17 = __pyx_mstate_global->__pyx_kp_u_symbol_column_has_rows_but_no_co_2;
__Pyx_INCREF(__pyx_t_17);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(1, 2600, __pyx_L1_error)
__pyx_t_12 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_11);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_12 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_5, __pyx_t_4};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2598, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2598, __pyx_L1_error)
+2601: row_count))
__pyx_t_18 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 2601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_17, __pyx_t_18}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); }
+2602: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2603: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2604: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2604, __pyx_L1_error)
+2605: continue
goto __pyx_L14_continue;
+2606: code = codes[r]
__pyx_v_code = (__pyx_v_codes[__pyx_v_r]);
+2607: if <size_t>code >= sd.entry_count:
__pyx_t_2 = (((size_t)__pyx_v_code) >= __pyx_v_sd->entry_count);
if (unlikely(__pyx_t_2)) {
/* … */
}
+2608: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2608, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+2609: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_21 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_21 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_11, __pyx_mstate_global->__pyx_kp_u_corrupt_symbol_codes_code_out_of}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2608, __pyx_L1_error)
2610: 'corrupt symbol codes: code out of dictionary range')
+2611: slot = symbols._slots[code]
__pyx_v_slot = (__pyx_v_symbols->_slots[__pyx_v_code]);
+2612: if slot == NULL:
__pyx_t_2 = (__pyx_v_slot == NULL);
if (__pyx_t_2) {
/* … */
goto __pyx_L18;
}
+2613: out.append(symbols._decode(sd, code))
__pyx_t_1 = ((struct __pyx_vtabstruct_7questdb_7_client__SymbolStrings *)__pyx_v_symbols->__pyx_vtab)->_decode(__pyx_v_symbols, __pyx_v_sd, __pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2614: else:
+2615: out.append(<object>slot)
/*else*/ {
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, ((PyObject *)__pyx_v_slot)); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2615, __pyx_L1_error)
}
__pyx_L18:;
__pyx_L14_continue:;
}
+2616: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2617:
2618: # VARCHAR / BINARY share the offsets + heap layout.
+2619: if (kind == <int>qwp_reader_column_kind_varchar
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_varchar));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L20_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+2620: or kind == <int>qwp_reader_column_kind_binary):
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_binary)); __pyx_t_2 = __pyx_t_3; __pyx_L20_bool_binop_done:;
+2621: offsets = cd.var_offsets
__pyx_t_22 = __pyx_v_cd.var_offsets;
__pyx_v_offsets = __pyx_t_22;
+2622: if offsets == NULL:
__pyx_t_2 = (__pyx_v_offsets == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+2623: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2623, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
+2624: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2625: 'column kind 0x{:02X} has {} rows but no offset table'.format(
__pyx_t_18 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but_2;
__Pyx_INCREF(__pyx_t_18);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_7))) __PYX_ERR(1, 2625, __pyx_L1_error)
__pyx_t_12 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
__pyx_t_12 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_7};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2623, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2623, __pyx_L1_error)
+2626: kind, row_count))
__pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_16 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2626, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_12 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_18, __pyx_t_17, __pyx_t_16}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); }
+2627: var_data = cd.var_data
__pyx_t_23 = __pyx_v_cd.var_data;
__pyx_v_var_data = __pyx_t_23;
+2628: if var_data == NULL and cd.var_data_len > 0:
__pyx_t_3 = (__pyx_v_var_data == NULL);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L24_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_cd.var_data_len > 0);
__pyx_t_2 = __pyx_t_3;
__pyx_L24_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+2629: raise QuestDBError(
__pyx_t_11 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+2630: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2631: 'column kind 0x{:02X} has {} rows but no data buffer'.format(
__pyx_t_16 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but_3;
__Pyx_INCREF(__pyx_t_16);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_5))) __PYX_ERR(1, 2631, __pyx_L1_error)
__pyx_t_12 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_11);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_12 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_11, __pyx_t_4, __pyx_t_5};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2629, __pyx_L1_error)
+2632: kind, row_count))
__pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_12 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_16, __pyx_t_17, __pyx_t_18}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); }
+2633: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2634: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2635: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2635, __pyx_L1_error)
+2636: continue
goto __pyx_L26_continue;
+2637: start = offsets[r]
__pyx_v_start = (__pyx_v_offsets[__pyx_v_r]);
+2638: end = offsets[r + 1]
__pyx_v_end = (__pyx_v_offsets[(__pyx_v_r + 1)]);
+2639: if end < start or <size_t>end > cd.var_data_len:
__pyx_t_3 = (__pyx_v_end < __pyx_v_start);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L30_bool_binop_done;
}
__pyx_t_3 = (((size_t)__pyx_v_end) > __pyx_v_cd.var_data_len);
__pyx_t_2 = __pyx_t_3;
__pyx_L30_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+2640: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2640, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+2641: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2642: 'corrupt varlen offsets in column kind '
+2643: '0x{:02X}'.format(kind))
__pyx_t_18 = __pyx_mstate_global->__pyx_kp_u_corrupt_varlen_offsets_in_column;
__Pyx_INCREF(__pyx_t_18);
__pyx_t_17 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
__pyx_t_21 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_17};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_21, (2-__pyx_t_21) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2643, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(1, 2643, __pyx_L1_error)
__pyx_t_21 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_21 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_11, __pyx_t_4};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2640, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2640, __pyx_L1_error)
+2644: if kind == <int>qwp_reader_column_kind_binary:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_binary));
if (__pyx_t_2) {
/* … */
goto __pyx_L32;
}
+2645: out.append(PyBytes_FromStringAndSize(
__pyx_t_1 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_var_data + __pyx_v_start)), ((Py_ssize_t)(__pyx_v_end - __pyx_v_start))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2645, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2645, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2646: <const char*>(var_data + start),
2647: <Py_ssize_t>(end - start)))
2648: else:
+2649: out.append(PyUnicode_FromStringAndSize(
/*else*/ {
/* … */
__pyx_t_1 = PyUnicode_FromStringAndSize(((char const *)(__pyx_v_var_data + __pyx_v_start)), ((Py_ssize_t)(__pyx_v_end - __pyx_v_start))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2649, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
/* … */
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2649, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__pyx_L32:;
__pyx_L26_continue:;
}
2650: <const char*>(var_data + start),
2651: <Py_ssize_t>(end - start)))
+2652: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2653:
2654: # Everything below is fixed-width and needs a values buffer.
+2655: if cd.values == NULL:
__pyx_t_2 = (__pyx_v_cd.values == NULL);
if (unlikely(__pyx_t_2)) {
/* … */
}
+2656: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2656, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+2657: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+2658: 'column kind 0x{:02X} has {} rows but no values buffer'.format(
__pyx_t_17 = __pyx_mstate_global->__pyx_kp_u_column_kind_0x_02X_has_rows_but;
__Pyx_INCREF(__pyx_t_17);
/* … */
if (!(likely(PyUnicode_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_11))) __PYX_ERR(1, 2658, __pyx_L1_error)
__pyx_t_12 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_12 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_11};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2656, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2656, __pyx_L1_error)
+2659: kind, row_count))
__pyx_t_18 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 2659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_16 = __Pyx_PyLong_FromSize_t(__pyx_v_row_count); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_12 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_17, __pyx_t_18, __pyx_t_16}; __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); }
+2660: values = <const uint8_t*>cd.values
__pyx_v_values = ((uint8_t const *)__pyx_v_cd.values);
+2661: stride = cd.value_stride
__pyx_t_12 = __pyx_v_cd.value_stride; __pyx_v_stride = __pyx_t_12;
2662:
+2663: if kind == <int>qwp_reader_column_kind_boolean:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_boolean));
if (__pyx_t_2) {
/* … */
}
2664: # BOOLEAN is dense one byte per row on the C side; honour the stride
2665: # the decoder reports rather than assuming it.
+2666: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2667: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
goto __pyx_L37;
}
+2668: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2668, __pyx_L1_error)
2669: else:
+2670: out.append(values[r * stride] != 0)
/*else*/ {
__pyx_t_1 = __Pyx_PyBool_FromLong(((__pyx_v_values[(__pyx_v_r * __pyx_v_stride)]) != 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2670, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2670, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__pyx_L37:;
}
+2671: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2672:
+2673: if kind == <int>qwp_reader_column_kind_byte:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_byte));
if (__pyx_t_2) {
/* … */
}
+2674: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2675: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
goto __pyx_L41;
}
+2676: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2676, __pyx_L1_error)
2677: else:
+2678: out.append(<int>(<const int8_t*>values)[r])
/*else*/ {
__pyx_t_1 = __Pyx_PyLong_From_int(((int)(((int8_t const *)__pyx_v_values)[__pyx_v_r]))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2678, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2678, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__pyx_L41:;
}
+2679: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2680:
+2681: if kind == <int>qwp_reader_column_kind_short:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_short));
if (__pyx_t_2) {
/* … */
}
+2682: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2683: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2684: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2684, __pyx_L1_error)
+2685: continue
goto __pyx_L43_continue;
+2686: memcpy(&i16, values + r * stride, 2)
(void)(memcpy((&__pyx_v_i16), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 2));
+2687: out.append(<int>i16)
__pyx_t_1 = __Pyx_PyLong_From_int(((int)__pyx_v_i16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2687, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_L43_continue:; }
+2688: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2689:
+2690: if kind == <int>qwp_reader_column_kind_char:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_char));
if (__pyx_t_2) {
/* … */
}
2691: # QuestDB has no separate null for CHAR: the wire marks the row
2692: # non-null and carries code point 0. PGWire's `outColChar` renders
2693: # that as NULL, so match it rather than handing back '\x00'.
+2694: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2695: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2696: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2696, __pyx_L1_error)
+2697: continue
goto __pyx_L47_continue;
+2698: memcpy(&u16, values + r * stride, 2)
(void)(memcpy((&__pyx_v_u16), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 2));
+2699: out.append(None if u16 == 0 else chr(u16))
__pyx_t_2 = (__pyx_v_u16 == 0);
if (__pyx_t_2) {
__Pyx_INCREF(Py_None);
__pyx_t_1 = Py_None;
} else {
__pyx_t_4 = PyUnicode_FromOrdinal(__pyx_v_u16); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2699, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2699, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_L47_continue:;
}
+2700: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2701:
+2702: if kind == <int>qwp_reader_column_kind_int:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_int));
if (__pyx_t_2) {
/* … */
}
+2703: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2704: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2705: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2705, __pyx_L1_error)
+2706: continue
goto __pyx_L51_continue;
+2707: memcpy(&i32, values + r * stride, 4)
(void)(memcpy((&__pyx_v_i32), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 4));
+2708: out.append(<int>i32)
__pyx_t_1 = __Pyx_PyLong_From_int(((int)__pyx_v_i32)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_L51_continue:; }
+2709: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2710:
+2711: if kind == <int>qwp_reader_column_kind_ipv4:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_ipv4));
if (__pyx_t_2) {
/* … */
}
2712: # The server already turns its IPv4 null sentinel into a validity
2713: # bit (`appendIPv4OrNull`), so there is no zero to special-case.
+2714: ipv4_cls = ipaddress.IPv4Address
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ipaddress); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_IPv4Address); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_ipv4_cls = __pyx_t_4; __pyx_t_4 = 0;
+2715: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2716: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2717: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2717, __pyx_L1_error)
+2718: continue
goto __pyx_L55_continue;
+2719: memcpy(&u32, values + r * stride, 4)
(void)(memcpy((&__pyx_v_u32), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 4));
+2720: out.append(ipv4_cls(<unsigned long>u32))
__pyx_t_1 = NULL;
__Pyx_INCREF(__pyx_v_ipv4_cls);
__pyx_t_11 = __pyx_v_ipv4_cls;
__pyx_t_7 = __Pyx_PyLong_From_unsigned_long(((unsigned long)__pyx_v_u32)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2720, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_21 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
assert(__pyx_t_1);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
__pyx_t_21 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_7};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_11, __pyx_callargs+__pyx_t_21, (2-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2720, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2720, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_L55_continue:;
}
+2721: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2722:
+2723: if kind == <int>qwp_reader_column_kind_long:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_long));
if (__pyx_t_2) {
/* … */
}
+2724: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2725: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2726: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2726, __pyx_L1_error)
+2727: continue
goto __pyx_L59_continue;
+2728: memcpy(&i64, values + r * stride, 8)
(void)(memcpy((&__pyx_v_i64), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 8));
+2729: out.append(<long long>i64)
__pyx_t_4 = __Pyx_PyLong_From_PY_LONG_LONG(((PY_LONG_LONG)__pyx_v_i64)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2729, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_L59_continue:; }
+2730: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2731:
+2732: if kind == <int>qwp_reader_column_kind_float:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_float));
if (__pyx_t_2) {
/* … */
}
2733: # NaN never reaches the values buffer: the server converts it to a
2734: # validity bit (`appendFloatOrNull`), so null and NaN are one thing.
+2735: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2736: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2737: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2737, __pyx_L1_error)
+2738: continue
goto __pyx_L63_continue;
+2739: memcpy(&f32, values + r * stride, 4)
(void)(memcpy((&__pyx_v_f32), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 4));
+2740: out.append(<double>f32)
__pyx_t_4 = PyFloat_FromDouble(((double)__pyx_v_f32)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2740, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2740, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_L63_continue:; }
+2741: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2742:
+2743: if kind == <int>qwp_reader_column_kind_double:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_double));
if (__pyx_t_2) {
/* … */
}
+2744: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2745: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2746: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2746, __pyx_L1_error)
+2747: continue
goto __pyx_L67_continue;
+2748: memcpy(&f64, values + r * stride, 8)
(void)(memcpy((&__pyx_v_f64), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 8));
+2749: out.append(f64)
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_f64); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2749, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2749, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_L67_continue:; }
+2750: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2751:
+2752: if (kind == <int>qwp_reader_column_kind_timestamp
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_timestamp));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L71_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+2753: or kind == <int>qwp_reader_column_kind_timestamp_nanos
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_timestamp_nanos));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L71_bool_binop_done;
}
+2754: or kind == <int>qwp_reader_column_kind_date):
__pyx_t_3 = (__pyx_v_kind == ((int)qwp_reader_column_kind_date)); __pyx_t_2 = __pyx_t_3; __pyx_L71_bool_binop_done:;
2755: # Timezone-aware UTC, matching the Arrow path, which tags all three
2756: # temporal kinds `Timestamp(unit, "UTC")`. A naive datetime would be
2757: # read as local time by most downstream code. TIMESTAMP_NS is
2758: # rounded down to microseconds: `datetime` has no nanosecond field.
+2759: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2760: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2761: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2761, __pyx_L1_error)
+2762: continue
goto __pyx_L74_continue;
+2763: memcpy(&i64, values + r * stride, 8)
(void)(memcpy((&__pyx_v_i64), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 8));
+2764: if kind == <int>qwp_reader_column_kind_timestamp_nanos:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_timestamp_nanos));
if (__pyx_t_2) {
/* … */
goto __pyx_L77;
}
+2765: micros = i64 // 1000
__pyx_v_micros = __Pyx_div_int64_t(__pyx_v_i64, 0x3E8, 1);
+2766: elif kind == <int>qwp_reader_column_kind_date:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_date));
if (__pyx_t_2) {
/* … */
goto __pyx_L77;
}
+2767: if (i64 < _DATETIME_MIN_MICROS // 1000
__pyx_t_3 = (__pyx_v_i64 < __Pyx_div_int64_t(__pyx_v_7questdb_7_client__DATETIME_MIN_MICROS, 0x3E8, 1));
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L79_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+2768: or i64 > _DATETIME_MAX_MICROS // 1000):
__pyx_t_3 = (__pyx_v_i64 > __Pyx_div_int64_t(__pyx_v_7questdb_7_client__DATETIME_MAX_MICROS, 0x3E8, 1));
__pyx_t_2 = __pyx_t_3;
__pyx_L79_bool_binop_done:;
+2769: _raise_temporal_out_of_range(col_name, r, i64)
__pyx_t_24 = __pyx_f_7questdb_7_client__raise_temporal_out_of_range(__pyx_v_col_name, __pyx_v_r, __pyx_v_i64); if (unlikely(__pyx_t_24 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 2769, __pyx_L1_error)
+2770: micros = i64 * 1000
__pyx_v_micros = (__pyx_v_i64 * 0x3E8);
2771: else:
+2772: micros = i64
/*else*/ {
__pyx_v_micros = __pyx_v_i64;
}
__pyx_L77:;
+2773: if micros < _DATETIME_MIN_MICROS or micros > _DATETIME_MAX_MICROS:
__pyx_t_3 = (__pyx_v_micros < __pyx_v_7questdb_7_client__DATETIME_MIN_MICROS);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L82_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_micros > __pyx_v_7questdb_7_client__DATETIME_MAX_MICROS);
__pyx_t_2 = __pyx_t_3;
__pyx_L82_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+2774: _raise_temporal_out_of_range(col_name, r, i64)
__pyx_t_24 = __pyx_f_7questdb_7_client__raise_temporal_out_of_range(__pyx_v_col_name, __pyx_v_r, __pyx_v_i64); if (unlikely(__pyx_t_24 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 2774, __pyx_L1_error)
+2775: days = micros // _MICROS_PER_DAY
if (unlikely(__pyx_v_7questdb_7_client__MICROS_PER_DAY == 0)) {
PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
__PYX_ERR(1, 2775, __pyx_L1_error)
}
else if (sizeof(int64_t) == sizeof(long) && (!(((int64_t)-1) > 0)) && unlikely(__pyx_v_7questdb_7_client__MICROS_PER_DAY == (int64_t)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_micros))) {
PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
__PYX_ERR(1, 2775, __pyx_L1_error)
}
__pyx_v_days = __Pyx_div_int64_t(__pyx_v_micros, __pyx_v_7questdb_7_client__MICROS_PER_DAY, 0);
+2776: rem = micros - days * _MICROS_PER_DAY
__pyx_v_rem = (__pyx_v_micros - (__pyx_v_days * __pyx_v_7questdb_7_client__MICROS_PER_DAY));
+2777: secs = rem // 1_000_000
__pyx_v_secs = __Pyx_div_int64_t(__pyx_v_rem, 0xF4240, 1);
+2778: out.append(_utc_datetime(
__pyx_t_4 = __pyx_f_7questdb_7_client__utc_datetime(__pyx_v_days, ((int)__pyx_v_secs), ((int)(__pyx_v_rem - (__pyx_v_secs * 0xF4240)))); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2778, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_L74_continue:; }
2779: days, <int>secs, <int>(rem - secs * 1_000_000)))
+2780: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2781:
+2782: if kind == <int>qwp_reader_column_kind_uuid:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_uuid));
if (__pyx_t_2) {
/* … */
}
2783: # Canonical RFC-4122 bytes, decoded the same way as
2784: # `_numpy_uuid_chunk`.
+2785: uuid_cls = _uuid.UUID
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_uuid_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_UUID); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_uuid_cls = __pyx_t_11; __pyx_t_11 = 0;
+2786: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2787: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2788: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2788, __pyx_L1_error)
+2789: continue
goto __pyx_L85_continue;
+2790: memcpy(&hi, values + r * stride, 8)
(void)(memcpy((&__pyx_v_hi), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), 8));
+2791: memcpy(&lo, values + r * stride + 8, 8)
(void)(memcpy((&__pyx_v_lo), ((__pyx_v_values + (__pyx_v_r * __pyx_v_stride)) + 8), 8));
+2792: hi = bswap64(hi)
__pyx_v_hi = __pyx_f_7questdb_7_client_bswap64(__pyx_v_hi);
+2793: lo = bswap64(lo)
__pyx_v_lo = __pyx_f_7questdb_7_client_bswap64(__pyx_v_lo);
+2794: out.append(uuid_cls(int=((<object>hi) << 64) | (<object>lo)))
__pyx_t_4 = NULL;
__Pyx_INCREF(__pyx_v_uuid_cls);
__pyx_t_7 = __pyx_v_uuid_cls;
__pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_hi); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = PyNumber_Lshift(__pyx_t_1, __pyx_mstate_global->__pyx_int_64); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __Pyx_PyLong_From_uint64_t(__pyx_v_lo); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_16 = __Pyx_PyNumber_Or_object_object(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_21 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_21 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_16};
#if CYTHON_VECTORCALL
__pyx_t_1 = __pyx_mstate_global->__pyx_tuple[13];
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_1);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_int};
__pyx_t_1 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+1, 1);
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
#endif
__pyx_t_11 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_21, (1-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
}
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_11); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2794, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_L85_continue:;
}
+2795: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2796:
+2797: if kind == <int>qwp_reader_column_kind_long256:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_long256));
if (__pyx_t_2) {
/* … */
}
+2798: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2799: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2800: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2800, __pyx_L1_error)
+2801: continue
goto __pyx_L89_continue;
+2802: out.append(int.from_bytes(
__pyx_t_7 = ((PyObject *)(&PyLong_Type));
__Pyx_INCREF(__pyx_t_7);
/* … */
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_11); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2802, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_L89_continue:;
}
+2803: PyBytes_FromStringAndSize(
__pyx_t_1 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_values + (__pyx_v_r * __pyx_v_stride))), 32); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2803, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_21 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_1, __pyx_mstate_global->__pyx_n_u_little}; __pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_bytes, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); }
2804: <const char*>(values + r * stride), 32),
2805: 'little'))
+2806: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2807:
+2808: if kind in _DECIMAL_PRECISION:
__pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_DECIMAL_PRECISION); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_11, __pyx_t_1, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 2808, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
2809: # Build from a string so the scale (and its trailing zeros) is
2810: # preserved: `Decimal(unscaled) / 10**scale` would normalise it away.
+2811: decimal_cls = Decimal
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_Decimal); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2811, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_decimal_cls = __pyx_t_1; __pyx_t_1 = 0;
+2812: scale = cd.decimal_scale
__pyx_t_25 = __pyx_v_cd.decimal_scale;
__pyx_v_scale = __pyx_t_25;
+2813: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2814: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2815: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2815, __pyx_L1_error)
+2816: continue
goto __pyx_L93_continue;
+2817: unscaled = int.from_bytes(
__pyx_t_11 = ((PyObject *)(&PyLong_Type));
__Pyx_INCREF(__pyx_t_11);
+2818: PyBytes_FromStringAndSize(
__pyx_t_7 = PyBytes_FromStringAndSize(((char const *)(__pyx_v_values + (__pyx_v_r * __pyx_v_stride))), ((Py_ssize_t)__pyx_v_stride)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
2819: <const char*>(values + r * stride), <Py_ssize_t>stride),
+2820: 'little', signed=True)
__pyx_t_21 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_11, __pyx_t_7, __pyx_mstate_global->__pyx_n_u_little, Py_True};
#if CYTHON_VECTORCALL
__pyx_t_16 = __pyx_mstate_global->__pyx_tuple[14];
if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2817, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_16);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_signed};
__pyx_t_16 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2817, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_bytes, __pyx_callargs+__pyx_t_21, (3-__pyx_t_21) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_16);
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2817, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_unscaled, __pyx_t_1);
__pyx_t_1 = 0;
+2821: out.append(decimal_cls(f'{unscaled}e{-scale}'))
__pyx_t_16 = NULL;
__Pyx_INCREF(__pyx_v_decimal_cls);
__pyx_t_7 = __pyx_v_decimal_cls;
__pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_unscaled, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2821, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_4 = __Pyx_PyUnicode_From_int((-__pyx_v_scale), 0, ' ', 'd'); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2821, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8[0] = __pyx_t_11;
__pyx_t_8[1] = __pyx_mstate_global->__pyx_n_u_e;
__pyx_t_8[2] = __pyx_t_4;
__pyx_t_9 = 1;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[0]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[2]);
#endif
__pyx_t_10 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[0]);
#endif
__pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10);
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2821, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_21 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_16 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_16);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_16);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_21 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_16, __pyx_t_5};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_21, (2-__pyx_t_21) | (__pyx_t_21*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2821, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2821, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_L93_continue:;
}
+2822: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2823:
+2824: if kind == <int>qwp_reader_column_kind_geohash:
__pyx_t_2 = (__pyx_v_kind == ((int)qwp_reader_column_kind_geohash));
if (__pyx_t_2) {
/* … */
}
+2825: bits = cd.geohash_precision_bits
__pyx_t_26 = __pyx_v_cd.geohash_precision_bits;
__pyx_v_bits = __pyx_t_26;
+2826: if stride < 1 or stride > 8 or bits < 1 or bits > 60:
__pyx_t_3 = (__pyx_v_stride < 1);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L98_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_stride > 8);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L98_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_bits < 1);
if (!__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L98_bool_binop_done;
}
__pyx_t_3 = (__pyx_v_bits > 60);
__pyx_t_2 = __pyx_t_3;
__pyx_L98_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+2827: raise QuestDBError(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2827, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+2828: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
+2829: f'column {col_name!r}: corrupt geohash column (stride '
__pyx_t_16 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_col_name), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 2829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); /* … */ __pyx_t_9 = 58; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[3]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_27[5]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_27[1]); #endif __pyx_t_17 = __Pyx_PyUnicode_Join(__pyx_t_27, 7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_7); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_4, __pyx_t_17}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2827, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2827, __pyx_L1_error)
+2830: f'{stride}, precision {bits} bits)')
__pyx_t_11 = __Pyx_PyUnicode_From_size_t(__pyx_v_stride, 0, ' ', 'd'); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_18 = __Pyx_PyUnicode_From_int(__pyx_v_bits, 0, ' ', 'd'); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 2830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_27[0] = __pyx_mstate_global->__pyx_kp_u_column_3; __pyx_t_27[1] = __pyx_t_16; __pyx_t_27[2] = __pyx_mstate_global->__pyx_kp_u_corrupt_geohash_column_stride; __pyx_t_27[3] = __pyx_t_11; __pyx_t_27[4] = __pyx_mstate_global->__pyx_kp_u_precision_2; __pyx_t_27[5] = __pyx_t_18; __pyx_t_27[6] = __pyx_mstate_global->__pyx_kp_u_bits_2;
+2831: for r in range(row_count):
__pyx_t_12 = __pyx_v_row_count;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_r = __pyx_t_14;
+2832: if _cell_is_null(validity, r):
__pyx_t_2 = __pyx_f_7questdb_7_client__cell_is_null(__pyx_v_validity, __pyx_v_r);
if (__pyx_t_2) {
/* … */
}
+2833: out.append(None)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, Py_None); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2833, __pyx_L1_error)
+2834: continue
goto __pyx_L102_continue;
+2835: u64 = 0
__pyx_v_u64 = 0;
+2836: memcpy(&u64, values + r * stride, stride)
(void)(memcpy((&__pyx_v_u64), (__pyx_v_values + (__pyx_v_r * __pyx_v_stride)), __pyx_v_stride));
+2837: out.append(_geohash_text(u64, bits))
__pyx_t_1 = __pyx_f_7questdb_7_client__geohash_text(__pyx_v_u64, __pyx_v_bits); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 2837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_L102_continue:; }
+2838: return out
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_out);
__pyx_r = __pyx_v_out;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
2839:
+2840: raise QuestDBError(
__pyx_t_5 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17);
+2841: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2841, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2842: 'row egress does not support column kind 0x{:02X} yet; use '
+2843: 'to_arrow() / to_pandas() for this result'.format(kind))
__pyx_t_18 = __pyx_mstate_global->__pyx_kp_u_row_egress_does_not_support_colu; __Pyx_INCREF(__pyx_t_18); __pyx_t_11 = __Pyx_PyLong_From_int(__pyx_v_kind); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_18, __pyx_t_11}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2843, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_4))) __PYX_ERR(1, 2843, __pyx_L1_error) __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_17))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_17); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_17); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_17, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_17, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2840, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2840, __pyx_L1_error)
2844:
2845:
+2846: cdef list _row_batch_decode(
static PyObject *__pyx_f_7questdb_7_client__row_batch_decode(struct qwp_reader_batch const *__pyx_v_batch, PyObject *__pyx_v_col_names, PyObject *__pyx_v_col_kinds, struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_symbols, PyObject *__pyx_v_np) {
questdb_error *__pyx_v_err;
struct qwp_reader_symbol_dict __pyx_v_sd;
struct qwp_reader_symbol_dict const *__pyx_v_sd_ptr;
size_t __pyx_v_row_count;
size_t __pyx_v_n_cols;
size_t __pyx_v_col_idx;
PyObject *__pyx_v_columns = NULL;
CYTHON_UNUSED size_t __pyx_8genexpr6__pyx_v__;
size_t __pyx_8genexpr7__pyx_v_col_idx;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._row_batch_decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_columns);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2847: const qwp_reader_batch* batch,
2848: list col_names,
2849: list col_kinds,
2850: _SymbolStrings symbols,
2851: object np):
2852: """Decode a whole batch into a list of row tuples.
2853:
2854: Must run while `batch` is still the cursor's current batch, i.e. under
2855: the caller's lock and pin, before the next
2856: `qwp_reader_cursor_next_batch`.
2857: """
+2858: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2859: cdef qwp_reader_symbol_dict sd
+2860: cdef const qwp_reader_symbol_dict* sd_ptr = NULL
__pyx_v_sd_ptr = NULL;
+2861: cdef size_t row_count = qwp_reader_batch_row_count(batch)
__pyx_v_row_count = qwp_reader_batch_row_count(__pyx_v_batch);
+2862: cdef size_t n_cols = <size_t>len(col_names)
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2862, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyList_GET_SIZE(__pyx_v_col_names); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2862, __pyx_L1_error)
__pyx_v_n_cols = ((size_t)__pyx_t_1);
2863: cdef size_t col_idx
2864:
+2865: if row_count == 0:
__pyx_t_2 = (__pyx_v_row_count == 0);
if (__pyx_t_2) {
/* … */
}
+2866: return []
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_3); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
+2867: if n_cols == 0:
__pyx_t_2 = (__pyx_v_n_cols == 0);
if (__pyx_t_2) {
/* … */
}
2868: # A batch with rows but no columns cannot be expressed as tuples of
2869: # column values; emit empty tuples so the row count still shows.
+2870: return [() for _ in range(row_count)]
{ /* enter inner scope */
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2870, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __pyx_v_row_count;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_8genexpr6__pyx_v__ = __pyx_t_6;
if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple))) __PYX_ERR(1, 2870, __pyx_L1_error)
}
} /* exit inner scope */
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_3);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
2871:
+2872: for col_idx in range(n_cols):
__pyx_t_4 = __pyx_v_n_cols;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_col_idx = __pyx_t_6;
+2873: if col_kinds[col_idx] == <int>qwp_reader_column_kind_symbol:
if (unlikely(__pyx_v_col_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2873, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2873, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_7 = __Pyx_PyLong_From_int(((int)qwp_reader_column_kind_symbol)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2873, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_int(__pyx_t_3, __pyx_t_7, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 2873, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (__pyx_t_2) {
/* … */
}
}
__pyx_L8_break:;
+2874: _reader_check(
__pyx_t_8 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_symbol_dict(__pyx_v_batch, (&__pyx_v_sd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_symbol_dict); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 2874, __pyx_L1_error)
2875: qwp_reader_batch_symbol_dict(batch, &sd, &err), &err,
2876: 'qwp_reader_batch_symbol_dict')
+2877: symbols._reserve(sd.entry_count)
__pyx_t_8 = ((struct __pyx_vtabstruct_7questdb_7_client__SymbolStrings *)__pyx_v_symbols->__pyx_vtab)->_reserve(__pyx_v_symbols, __pyx_v_sd.entry_count); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 2877, __pyx_L1_error)
+2878: sd_ptr = &sd
__pyx_v_sd_ptr = (&__pyx_v_sd);
+2879: break
goto __pyx_L8_break;
2880:
+2881: columns = [
{ /* enter inner scope */
__pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2881, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
+2882: _row_column_values(
__pyx_t_9 = __pyx_f_7questdb_7_client__row_column_values(__pyx_v_batch, __pyx_8genexpr7__pyx_v_col_idx, ((PyObject*)__pyx_t_3), ((int)__pyx_t_8), __pyx_v_row_count, __pyx_v_sd_ptr, __pyx_v_symbols, __pyx_v_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_9); if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_7, __pyx_t_9))) __PYX_ERR(1, 2881, __pyx_L1_error) __pyx_t_9 = 0; } } /* exit inner scope */ __pyx_v_columns = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
+2883: batch, col_idx, col_names[col_idx], <int>col_kinds[col_idx],
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2883, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_col_names, __pyx_8genexpr7__pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("str", __pyx_t_3))) __PYX_ERR(1, 2883, __pyx_L1_error)
if (unlikely(__pyx_v_col_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2883, __pyx_L1_error)
}
__pyx_t_9 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_8genexpr7__pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_8 = __Pyx_PyLong_As_int(__pyx_t_9); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2883, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2884: row_count, sd_ptr, symbols, np)
+2885: for col_idx in range(n_cols)
__pyx_t_4 = __pyx_v_n_cols;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_8genexpr7__pyx_v_col_idx = __pyx_t_6;
2886: ]
2887: # `zip` builds the tuples in C; building them row-by-row in Python is
2888: # measurably slower for the same result.
+2889: return list(zip(*columns))
__pyx_t_7 = PySequence_Tuple(__pyx_v_columns); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PySequence_ListKeepNew(__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_7); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_7 = 0; goto __pyx_L0;
2890:
2891:
+2892: cdef tuple _open_row_stream(_CursorHandle handle):
static PyObject *__pyx_f_7questdb_7_client__open_row_stream(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle) {
struct qwp_reader_cursor *__pyx_v_cursor;
questdb_error *__pyx_v_err;
struct qwp_reader_batch const *__pyx_v_batch;
int __pyx_v_seen_seq;
PyObject *__pyx_v_col_names = 0;
PyObject *__pyx_v_col_kinds = 0;
PyObject *__pyx_v_col_scales = 0;
PyObject *__pyx_v_col_precision = 0;
int __pyx_v_have_schema;
int __pyx_v_terminal;
PyObject *__pyx_v_np = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_columns = NULL;
PyObject *__pyx_v_rows_iter = NULL;
Py_ssize_t __pyx_8genexpr8__pyx_v_i;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_AddTraceback("questdb._client._open_row_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_col_names);
__Pyx_XDECREF(__pyx_v_col_kinds);
__Pyx_XDECREF(__pyx_v_col_scales);
__Pyx_XDECREF(__pyx_v_col_precision);
__Pyx_XDECREF(__pyx_v_np);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_columns);
__Pyx_XDECREF(__pyx_v_rows_iter);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_12generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
2893: """Start a row stream: returns ``(columns, row_iterator)``.
2894:
2895: Batches are pulled up to the first one carrying rows, so the column list
2896: is known before any row is consumed — a DB-API caller needs
2897: `description` before `fetchall`. That batch is left undecoded on the
2898: cursor as the handle's `_pending_batch` until the iterator's first step,
2899: so a schema probe neither pays for the rows nor fails on their values.
2900: A result with no rows at all (a `LIMIT 0` probe, an empty SELECT) is
2901: read through to its terminal, so the connection goes back to the pool
2902: even if the caller never iterates.
2903: """
2904: cdef qwp_reader_cursor* cursor
+2905: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
2906: cdef const qwp_reader_batch* batch
2907: cdef int seen_seq
+2908: cdef list col_names = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2909: cdef list col_kinds = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2909, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_kinds = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2910: cdef list col_scales = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_scales = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2911: cdef list col_precision = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_precision = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2912: cdef bint have_schema = False
__pyx_v_have_schema = 0;
+2913: cdef bint terminal = False
__pyx_v_terminal = 0;
+2914: import numpy as np
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2914, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_np = __pyx_t_1; __pyx_t_1 = 0;
2915:
+2916: if handle is None or not handle._is_live():
__pyx_t_4 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_is_live(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 2916, __pyx_L1_error)
__pyx_t_5 = (!__pyx_t_4);
__pyx_t_3 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+2917: raise QuestDBError(QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2917, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 2917, __pyx_L1_error)
+2918: seen_seq = handle._reset_sequence()
__pyx_t_11 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 2918, __pyx_L1_error)
__pyx_v_seen_seq = __pyx_t_11;
2919:
+2920: try:
{
/*try:*/ {
/* … */
}
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_12, __pyx_t_13);
goto __pyx_L1_error;
__pyx_L10_try_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_12, __pyx_t_13);
goto __pyx_L0;
}
+2921: while True:
while (1) {
+2922: with handle._lock:
/*with:*/ {
__pyx_t_14 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 2922, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_7 = NULL;
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2922, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2922, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
goto __pyx_L27_try_end;
__pyx_L20_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._open_row_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_19, &__pyx_t_6) < 0) __PYX_ERR(1, 2922, __pyx_L22_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_6);
{
PyObject* __pyx_temp[3] = {__pyx_t_1, __pyx_t_19, __pyx_t_6};
__pyx_t_9 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2922, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_9);
}
__pyx_t_27 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_9, NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_27)) __PYX_ERR(1, 2922, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_27);
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_27);
__Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0;
if (__pyx_t_3 < (0)) __PYX_ERR(1, 2922, __pyx_L22_except_error)
__pyx_t_5 = (!__pyx_t_3);
if (unlikely(__pyx_t_5)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_19, __pyx_t_6);
__pyx_t_1 = 0; __pyx_t_19 = 0; __pyx_t_6 = 0;
__PYX_ERR(1, 2922, __pyx_L22_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L21_exception_handled;
}
__pyx_L22_except_error:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L6_error;
__pyx_L25_try_break:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L16_break;
__pyx_L26_try_continue:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L15_continue;
__pyx_L21_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
__pyx_L27_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_14) {
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2922, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
}
goto __pyx_L19;
}
__pyx_L15_continue: {
if (__pyx_t_14) {
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2922, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
}
goto __pyx_L12_continue;
}
__pyx_L16_break: {
if (__pyx_t_14) {
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2922, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
}
goto __pyx_L13_break;
}
__pyx_L19:;
}
goto __pyx_L54;
__pyx_L14_error:;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L6_error;
__pyx_L54:;
}
+2923: cursor = handle._cursor
__pyx_t_18 = __pyx_v_handle->_cursor;
__pyx_v_cursor = __pyx_t_18;
+2924: if cursor == NULL:
__pyx_t_3 = (__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+2925: raise QuestDBError(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2925, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_7);
+2926: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2926, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2926, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2925, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2925, __pyx_L20_error)
+2927: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L33;
}
__pyx_L33:;
}
}
+2928: batch = qwp_reader_cursor_next_batch(cursor, &err)
__pyx_v_batch = qwp_reader_cursor_next_batch(__pyx_v_cursor, (&__pyx_v_err));
}
+2929: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_pin(__pyx_v_handle);
+2930: try:
/*try:*/ {
+2931: if handle._reset_seq != seen_seq:
__pyx_t_3 = (__pyx_v_handle->_reset_seq != __pyx_v_seen_seq);
if (__pyx_t_3) {
/* … */
}
2932: # Mid-query failover before any row was handed out:
2933: # the replay restarts at batch 0.
+2934: seen_seq = handle._reset_seq
__pyx_t_11 = __pyx_v_handle->_reset_seq;
__pyx_v_seen_seq = __pyx_t_11;
+2935: have_schema = False
__pyx_v_have_schema = 0;
+2936: col_names = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2936, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_names, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2937: col_kinds = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2937, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_kinds, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2938: col_scales = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2938, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_scales, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2939: col_precision = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2939, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_precision, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+2940: if batch == NULL and err == NULL:
__pyx_t_5 = (__pyx_v_batch == NULL);
if (__pyx_t_5) {
} else {
__pyx_t_3 = __pyx_t_5;
goto __pyx_L41_bool_binop_done;
}
__pyx_t_5 = (__pyx_v_err == NULL);
__pyx_t_3 = __pyx_t_5;
__pyx_L41_bool_binop_done:;
if (__pyx_t_3) {
/* … */
}
+2941: continue
goto __pyx_L34_continue;
+2942: if batch == NULL:
__pyx_t_3 = (__pyx_v_batch == NULL);
if (__pyx_t_3) {
/* … */
}
+2943: if err != NULL:
__pyx_t_3 = (__pyx_v_err != NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+2944: raise _reader_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2944, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 2944, __pyx_L37_error)
2945: # A non-SELECT ships no RESULT_BATCH: no schema, no
2946: # rows; `exec_done` carries the outcome.
+2947: terminal = True
__pyx_v_terminal = 1;
+2948: break
goto __pyx_L35_break;
+2949: if not have_schema:
__pyx_t_3 = (!__pyx_v_have_schema);
if (__pyx_t_3) {
/* … */
}
+2950: col_names, col_kinds, col_scales, col_precision, _ = (
if (!(likely(PyList_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_7))) __PYX_ERR(1, 2950, __pyx_L37_error) if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_8))) __PYX_ERR(1, 2950, __pyx_L37_error) if (!(likely(PyList_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_9))) __PYX_ERR(1, 2950, __pyx_L37_error) if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_6))) __PYX_ERR(1, 2950, __pyx_L37_error) __Pyx_DECREF_SET(__pyx_v_col_names, ((PyObject*)__pyx_t_7)); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_col_kinds, ((PyObject*)__pyx_t_8)); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_col_scales, ((PyObject*)__pyx_t_9)); __pyx_t_9 = 0; __Pyx_DECREF_SET(__pyx_v_col_precision, ((PyObject*)__pyx_t_6)); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v__, __pyx_t_19); __pyx_t_19 = 0;
+2951: _numpy_extract_meta(batch))
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_extract_meta(__pyx_v_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2951, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 5)) { if (size > 5) __Pyx_RaiseTooManyValuesError(5); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 2950, __pyx_L37_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2); __Pyx_INCREF(__pyx_t_9); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __Pyx_INCREF(__pyx_t_6); __pyx_t_19 = PyTuple_GET_ITEM(sequence, 4); __Pyx_INCREF(__pyx_t_19); #else { Py_ssize_t i; PyObject** temps[5] = {&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_6,&__pyx_t_19}; for (i=0; i < 5; i++) { PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(1, 2950, __pyx_L37_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 2950, __pyx_L37_error) }
+2952: have_schema = True
__pyx_v_have_schema = 1;
+2953: if qwp_reader_batch_row_count(batch) == 0:
__pyx_t_3 = (qwp_reader_batch_row_count(__pyx_v_batch) == 0);
if (__pyx_t_3) {
/* … */
}
+2954: continue
goto __pyx_L34_continue;
+2955: handle._pending_batch = batch
__pyx_v_handle->_pending_batch = __pyx_v_batch;
}
2956: finally:
+2957: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L38;
}
__pyx_L37_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_25, &__pyx_t_26, &__pyx_t_27);
if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_25);
__Pyx_XGOTREF(__pyx_t_26);
__Pyx_XGOTREF(__pyx_t_27);
__pyx_t_11 = __pyx_lineno; __pyx_t_20 = __pyx_clineno; __pyx_t_21 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_25);
__Pyx_XGIVEREF(__pyx_t_26);
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_ExceptionReset(__pyx_t_25, __pyx_t_26, __pyx_t_27);
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ErrRestore(__pyx_t_22, __pyx_t_23, __pyx_t_24);
__pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_20; __pyx_filename = __pyx_t_21;
goto __pyx_L20_error;
}
__pyx_L34_continue: {
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L26_try_continue;
}
__pyx_L35_break: {
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L25_try_break;
}
__pyx_L38:;
}
+2958: break
goto __pyx_L13_break;
__pyx_L12_continue:;
}
__pyx_L13_break:;
2959:
+2960: columns = [
{ /* enter inner scope */
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2960, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
+2961: (col_names[i],
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2961, __pyx_L6_error)
}
__pyx_t_19 = __Pyx_GetItemInt_List(__pyx_v_col_names, __pyx_8genexpr8__pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 2961, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_19);
/* … */
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2961, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_19);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_19) != (0)) __PYX_ERR(1, 2961, __pyx_L6_error);
__Pyx_GIVEREF(__pyx_t_8);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8) != (0)) __PYX_ERR(1, 2961, __pyx_L6_error);
__pyx_t_19 = 0;
__pyx_t_8 = 0;
__Pyx_GIVEREF(__pyx_t_9);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_6, __pyx_t_9))) __PYX_ERR(1, 2960, __pyx_L6_error)
__pyx_t_9 = 0;
}
} /* exit inner scope */
__pyx_v_columns = ((PyObject*)__pyx_t_6);
__pyx_t_6 = 0;
+2962: _questdb_type_name(
__pyx_t_8 = __pyx_f_7questdb_7_client__questdb_type_name(((int)__pyx_t_20), __pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2962, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+2963: <int>col_kinds[i], col_scales[i], col_precision[i]))
if (unlikely(__pyx_v_col_kinds == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2963, __pyx_L6_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_col_kinds, __pyx_8genexpr8__pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2963, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_20 = __Pyx_PyLong_As_int(__pyx_t_1); if (unlikely((__pyx_t_20 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2963, __pyx_L6_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(__pyx_v_col_scales == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2963, __pyx_L6_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_col_scales, __pyx_8genexpr8__pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2963, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(__pyx_v_col_precision == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 2963, __pyx_L6_error)
}
__pyx_t_9 = __Pyx_GetItemInt_List(__pyx_v_col_precision, __pyx_8genexpr8__pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2963, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_9);
+2964: for i in range(len(col_names))
if (unlikely(__pyx_v_col_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 2964, __pyx_L6_error)
}
__pyx_t_28 = __Pyx_PyList_GET_SIZE(__pyx_v_col_names); if (unlikely(__pyx_t_28 == ((Py_ssize_t)-1))) __PYX_ERR(1, 2964, __pyx_L6_error)
__pyx_t_29 = __pyx_t_28;
for (__pyx_t_30 = 0; __pyx_t_30 < __pyx_t_29; __pyx_t_30+=1) {
__pyx_8genexpr8__pyx_v_i = __pyx_t_30;
2965: ]
2966:
+2967: if terminal:
if (__pyx_v_terminal) {
/* … */
}
+2968: _mark_reader_drained(handle)
__pyx_t_31 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_v_handle); if (unlikely(__pyx_t_31 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 2968, __pyx_L6_error)
+2969: handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
+2970: return (columns, iter(()))
__pyx_t_6 = PyObject_GetIter(__pyx_mstate_global->__pyx_empty_tuple); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2970, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2970, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_columns); __Pyx_GIVEREF(__pyx_v_columns); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_columns) != (0)) __PYX_ERR(1, 2970, __pyx_L6_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6) != (0)) __PYX_ERR(1, 2970, __pyx_L6_error); __pyx_t_6 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_9); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_9 = 0; goto __pyx_L10_try_return;
2971:
+2972: rows_iter = _row_stream_iter(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_row_stream_iter); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2972, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_8);
+2973: handle, col_names, col_kinds, seen_seq, np)
__pyx_t_19 = __Pyx_PyLong_From_int(__pyx_v_seen_seq); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 2973, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_19); __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[6] = {__pyx_t_6, ((PyObject *)__pyx_v_handle), __pyx_v_col_names, __pyx_v_col_kinds, __pyx_t_19, __pyx_v_np}; __pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (6-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2972, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); } __pyx_v_rows_iter = __pyx_t_9; __pyx_t_9 = 0;
2974: # Prime it into its `try`, so dropping an iterator that was never
2975: # advanced still runs its `finally` and frees the cursor.
+2976: next(rows_iter)
__pyx_t_9 = __Pyx_PyIter_Next(__pyx_v_rows_iter); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2976, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+2977: return (columns, rows_iter)
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2977, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_columns); __Pyx_GIVEREF(__pyx_v_columns); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_columns) != (0)) __PYX_ERR(1, 2977, __pyx_L6_error); __Pyx_INCREF(__pyx_v_rows_iter); __Pyx_GIVEREF(__pyx_v_rows_iter); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_rows_iter) != (0)) __PYX_ERR(1, 2977, __pyx_L6_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_9); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_9 = 0; goto __pyx_L10_try_return;
+2978: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._open_row_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_19) < 0) __PYX_ERR(1, 2978, __pyx_L8_except_error)
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_19);
+2979: handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
+2980: raise
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_8, __pyx_t_19); __pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_19 = 0; __PYX_ERR(1, 2980, __pyx_L8_except_error) }
2981:
2982:
+2983: def _row_stream_iter(
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11_row_stream_iter(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_10_row_stream_iter, "Yield row tuples, starting with the handle\047s `_pending_batch`.\n\n Only the batch being handed out is held as Python rows: each decoded\n batch is dropped as soon as its rows are out, so the peak is one batch\n of row tuples plus the one being decoded.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11_row_stream_iter = {"_row_stream_iter", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11_row_stream_iter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_10_row_stream_iter}; static PyObject *__pyx_pw_7questdb_7_client_11_row_stream_iter(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; PyObject *__pyx_v_col_names = 0; PyObject *__pyx_v_col_kinds = 0; int __pyx_v_seen_seq; PyObject *__pyx_v_np = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_row_stream_iter (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,&__pyx_mstate_global->__pyx_n_u_col_names,&__pyx_mstate_global->__pyx_n_u_col_kinds,&__pyx_mstate_global->__pyx_n_u_seen_seq,&__pyx_mstate_global->__pyx_n_u_np,0}; PyObject* values[5] = {0,0,0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 2983, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 5: values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(1, 2983, __pyx_L3_error) CYTHON_FALLTHROUGH; case 4: values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(1, 2983, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 2983, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 2983, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2983, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_row_stream_iter", 0) < (0)) __PYX_ERR(1, 2983, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 5; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_row_stream_iter", 1, 5, 5, i); __PYX_ERR(1, 2983, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 5)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 2983, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 2983, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 2983, __pyx_L3_error) values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(1, 2983, __pyx_L3_error) values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(1, 2983, __pyx_L3_error) } __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)values[0]); __pyx_v_col_names = ((PyObject*)values[1]); __pyx_v_col_kinds = ((PyObject*)values[2]); __pyx_v_seen_seq = __Pyx_PyLong_As_int(values[3]); if (unlikely((__pyx_v_seen_seq == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2987, __pyx_L3_error) __pyx_v_np = values[4]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_row_stream_iter", 1, 5, 5, __pyx_nargs); __PYX_ERR(1, 2983, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle, 0, "handle", 0))) __PYX_ERR(1, 2984, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_col_names), (&PyList_Type), 1, "col_names", 1))) __PYX_ERR(1, 2985, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_col_kinds), (&PyList_Type), 1, "col_kinds", 1))) __PYX_ERR(1, 2986, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_10_row_stream_iter(__pyx_self, __pyx_v_handle, __pyx_v_col_names, __pyx_v_col_kinds, __pyx_v_seen_seq, __pyx_v_np); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_10_row_stream_iter(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle, PyObject *__pyx_v_col_names, PyObject *__pyx_v_col_kinds, int __pyx_v_seen_seq, PyObject *__pyx_v_np) { struct __pyx_obj_7questdb_7_client___pyx_scope_struct_4__row_stream_iter *__pyx_cur_scope; PyObject *__pyx_r = NULL; __pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_4__row_stream_iter *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_4__row_stream_iter(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_4__row_stream_iter, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_4__row_stream_iter *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 2983, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_handle = __pyx_v_handle; __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_handle); __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_handle); __pyx_cur_scope->__pyx_v_col_names = __pyx_v_col_names; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_col_names); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_col_names); __pyx_cur_scope->__pyx_v_col_kinds = __pyx_v_col_kinds; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_col_kinds); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_col_kinds); __pyx_cur_scope->__pyx_v_seen_seq = __pyx_v_seen_seq; __pyx_cur_scope->__pyx_v_np = __pyx_v_np; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_np); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_np); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_12generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_row_stream_iter, __pyx_mstate_global->__pyx_n_u_row_stream_iter, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 2983, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("questdb._client._row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7questdb_7_client_12generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_row_stream_iter", 0); __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); __PYX_ERR(1, 2983, __pyx_L1_error) } /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_14); __Pyx_XDECREF(__pyx_t_15); __Pyx_XDECREF(__pyx_t_27); if (__Pyx_PyErr_Occurred()) { __Pyx_Generator_Replace_StopIteration(0); __Pyx_AddTraceback("_row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename); } __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11_row_stream_iter, 0, __pyx_mstate_global->__pyx_n_u_row_stream_iter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 2983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_row_stream_iter, __pyx_t_17) < (0)) __PYX_ERR(1, 2983, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; /* … */ struct __pyx_obj_7questdb_7_client___pyx_scope_struct_4__row_stream_iter { PyObject_HEAD struct qwp_reader_batch const *__pyx_v_batch; PyObject *__pyx_v_col_kinds; PyObject *__pyx_v_col_names; struct qwp_reader_cursor *__pyx_v_cursor; questdb_error *__pyx_v_err; struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle; PyObject *__pyx_v_np; PyObject *__pyx_v_row; PyObject *__pyx_v_rows; int __pyx_v_seen_seq; struct __pyx_obj_7questdb_7_client__SymbolStrings *__pyx_v_symbols; PyObject *__pyx_t_0; PyObject *__pyx_t_1; PyObject *__pyx_t_2; PyObject *__pyx_t_3; Py_ssize_t __pyx_t_4; };
2984: _CursorHandle handle not None,
2985: list col_names,
2986: list col_kinds,
2987: int seen_seq,
2988: object np):
2989: """Yield row tuples, starting with the handle's `_pending_batch`.
2990:
2991: Only the batch being handed out is held as Python rows: each decoded
2992: batch is dropped as soon as its rows are out, so the peak is one batch
2993: of row tuples plus the one being decoded.
2994: """
2995: cdef qwp_reader_cursor* cursor
+2996: cdef questdb_error* err = NULL
__pyx_cur_scope->__pyx_v_err = NULL;
2997: cdef const qwp_reader_batch* batch
+2998: cdef _SymbolStrings symbols = _SymbolStrings()
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__SymbolStrings, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2998, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__Pyx_GIVEREF((PyObject *)__pyx_t_1);
__pyx_cur_scope->__pyx_v_symbols = ((struct __pyx_obj_7questdb_7_client__SymbolStrings *)__pyx_t_1);
__pyx_t_1 = 0;
2999: cdef list rows
+3000: try:
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L5_error;
__pyx_L11_try_return:;
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
goto __pyx_L4_return;
__pyx_L12_try_end:;
}
}
+3001: yield None
__Pyx_INCREF(Py_None); __pyx_r = Py_None; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L13_resume_from_yield:; __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 3001, __pyx_L7_error)
+3002: with handle._lock:
/*with:*/ {
__pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3002, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_2 = NULL;
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3002, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_3 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3002, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
goto __pyx_L23_try_end;
__pyx_L18_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_15) < 0) __PYX_ERR(1, 3002, __pyx_L20_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_15);
{
PyObject* __pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_t_15};
__pyx_t_8 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3002, __pyx_L20_except_error)
__Pyx_GOTREF(__pyx_t_8);
}
__pyx_t_24 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_24)) __PYX_ERR(1, 3002, __pyx_L20_except_error)
__Pyx_GOTREF(__pyx_t_24);
__pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_24);
__Pyx_DECREF(__pyx_t_24); __pyx_t_24 = 0;
if (__pyx_t_13 < (0)) __PYX_ERR(1, 3002, __pyx_L20_except_error)
__pyx_t_25 = (!__pyx_t_13);
if (unlikely(__pyx_t_25)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_15);
__pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_15 = 0;
__PYX_ERR(1, 3002, __pyx_L20_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
goto __pyx_L19_exception_handled;
}
__pyx_L20_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L7_error;
__pyx_L22_try_return:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
goto __pyx_L15_return;
__pyx_L19_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
__pyx_L23_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_7) {
__pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3002, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
}
goto __pyx_L17;
}
__pyx_L15_return: {
__pyx_t_11 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_7) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3002, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_r = __pyx_t_11;
__pyx_t_11 = 0;
goto __pyx_L11_try_return;
}
__pyx_L17:;
}
goto __pyx_L34;
__pyx_L14_error:;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L7_error;
__pyx_L34:;
}
+3003: batch = handle._pending_batch
__pyx_t_12 = __pyx_cur_scope->__pyx_v_handle->_pending_batch;
__pyx_cur_scope->__pyx_v_batch = __pyx_t_12;
+3004: handle._pending_batch = NULL
__pyx_cur_scope->__pyx_v_handle->_pending_batch = NULL;
+3005: if handle._cursor == NULL:
__pyx_t_13 = (__pyx_cur_scope->__pyx_v_handle->_cursor == NULL);
if (unlikely(__pyx_t_13)) {
/* … */
}
+3006: raise QuestDBError(
__pyx_t_8 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3006, __pyx_L18_error)
__Pyx_GOTREF(__pyx_t_2);
+3007: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3007, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3007, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_8); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_15, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3006, __pyx_L18_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3006, __pyx_L18_error)
+3008: if handle._cancelled:
if (__pyx_cur_scope->__pyx_v_handle->_cancelled) {
/* … */
}
+3009: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L22_try_return;
+3010: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_pin(__pyx_cur_scope->__pyx_v_handle);
+3011: try:
/*try:*/ {
+3012: rows = _row_batch_decode(
__pyx_t_1 = __pyx_f_7questdb_7_client__row_batch_decode(__pyx_cur_scope->__pyx_v_batch, __pyx_cur_scope->__pyx_v_col_names, __pyx_cur_scope->__pyx_v_col_kinds, __pyx_cur_scope->__pyx_v_symbols, __pyx_cur_scope->__pyx_v_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3012, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_rows = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; }
3013: batch, col_names, col_kinds, symbols, np)
3014: finally:
+3015: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_cur_scope->__pyx_v_handle);
goto __pyx_L28;
}
__pyx_L27_error:;
/*exception exit:*/{
__Pyx_PyThreadState_assign
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24);
if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_19);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_cur_scope->__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21);
__pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0;
__pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L18_error;
}
__pyx_L28:;
}
+3016: while True:
while (1) {
3017: # Read without the lock: a stale value delays the verdict by one
3018: # row. A cancelled cursor already sits at its terminal.
+3019: for row in rows:
if (unlikely(!__pyx_cur_scope->__pyx_v_rows)) { __Pyx_RaiseUnboundLocalError("rows"); __PYX_ERR(1, 3019, __pyx_L7_error) }
if (unlikely(__pyx_cur_scope->__pyx_v_rows == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
__PYX_ERR(1, 3019, __pyx_L7_error)
}
__pyx_t_15 = __pyx_cur_scope->__pyx_v_rows; __Pyx_INCREF(__pyx_t_15);
__pyx_t_26 = 0;
for (;;) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_15);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3019, __pyx_L7_error)
#endif
if (__pyx_t_26 >= __pyx_temp) break;
}
__pyx_t_2 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_15, __pyx_t_26, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_26;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3019, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_row);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_row, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
+3020: if handle._cursor == NULL:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_handle->_cursor == NULL);
if (unlikely(__pyx_t_25)) {
/* … */
}
+3021: raise QuestDBError(
__pyx_t_1 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3021, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_8);
+3022: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3022, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_27)) __PYX_ERR(1, 3022, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_27); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_1); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_t_27, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3021, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 3021, __pyx_L7_error)
+3023: if handle._cancelled:
if (__pyx_cur_scope->__pyx_v_handle->_cancelled) {
/* … */
}
+3024: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
goto __pyx_L11_try_return;
+3025: yield row
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_row); __pyx_r = __pyx_cur_scope->__pyx_v_row; __Pyx_XGIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_t_0 = __pyx_t_4; __Pyx_XGIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; __Pyx_XGIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_t_15); __pyx_cur_scope->__pyx_t_3 = __pyx_t_15; __pyx_cur_scope->__pyx_t_4 = __pyx_t_26; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 2; return __pyx_r; __pyx_L41_resume_from_yield:; __pyx_t_4 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_4); __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; __pyx_cur_scope->__pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_t_5); __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; __pyx_cur_scope->__pyx_t_2 = 0; __Pyx_XGOTREF(__pyx_t_6); __pyx_t_15 = __pyx_cur_scope->__pyx_t_3; __pyx_cur_scope->__pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_t_15); __pyx_t_26 = __pyx_cur_scope->__pyx_t_4; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 3025, __pyx_L7_error)
+3026: rows = None
__Pyx_INCREF(Py_None); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_rows); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rows, ((PyObject*)Py_None)); __Pyx_GIVEREF(Py_None);
+3027: with handle._lock:
/*with:*/ {
__pyx_t_7 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3027, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_2 = NULL;
__pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3027, __pyx_L43_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_3 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3027, __pyx_L43_error)
__Pyx_GOTREF(__pyx_t_15);
}
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L56_try_end;
__pyx_L49_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_1, &__pyx_t_27) < 0) __PYX_ERR(1, 3027, __pyx_L51_except_error)
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_27);
{
PyObject* __pyx_temp[3] = {__pyx_t_15, __pyx_t_1, __pyx_t_27};
__pyx_t_2 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3027, __pyx_L51_except_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_19 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 3027, __pyx_L51_except_error)
__Pyx_GOTREF(__pyx_t_19);
__pyx_t_25 = __Pyx_PyObject_IsTrue(__pyx_t_19);
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
if (__pyx_t_25 < (0)) __PYX_ERR(1, 3027, __pyx_L51_except_error)
__pyx_t_13 = (!__pyx_t_25);
if (unlikely(__pyx_t_13)) {
__Pyx_GIVEREF(__pyx_t_15);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_ErrRestoreWithState(__pyx_t_15, __pyx_t_1, __pyx_t_27);
__pyx_t_15 = 0; __pyx_t_1 = 0; __pyx_t_27 = 0;
__PYX_ERR(1, 3027, __pyx_L51_except_error)
}
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
goto __pyx_L50_exception_handled;
}
__pyx_L51_except_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
goto __pyx_L7_error;
__pyx_L53_try_return:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
goto __pyx_L46_return;
__pyx_L50_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_10, __pyx_t_9);
__pyx_L56_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_7) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3027, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L48;
}
__pyx_L46_return: {
__pyx_t_9 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_7) {
__pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3027, __pyx_L7_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
}
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L11_try_return;
}
__pyx_L48:;
}
goto __pyx_L80;
__pyx_L43_error:;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L7_error;
__pyx_L80:;
}
}
+3028: cursor = handle._cursor
__pyx_t_28 = __pyx_cur_scope->__pyx_v_handle->_cursor;
__pyx_cur_scope->__pyx_v_cursor = __pyx_t_28;
+3029: if cursor == NULL:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_25)) {
/* … */
}
+3030: raise QuestDBError(
__pyx_t_8 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3030, __pyx_L49_error)
__Pyx_GOTREF(__pyx_t_2);
+3031: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_27, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_27)) __PYX_ERR(1, 3031, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_27); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_27, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3031, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_8); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_1, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3030, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_15); } __Pyx_Raise(__pyx_t_15, 0, 0, 0); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __PYX_ERR(1, 3030, __pyx_L49_error)
+3032: if handle._cancelled:
if (__pyx_cur_scope->__pyx_v_handle->_cancelled) {
/* … */
}
+3033: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L53_try_return;
+3034: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L63;
}
__pyx_L63:;
}
}
+3035: batch = qwp_reader_cursor_next_batch(cursor, &err)
__pyx_cur_scope->__pyx_v_batch = qwp_reader_cursor_next_batch(__pyx_cur_scope->__pyx_v_cursor, (&__pyx_cur_scope->__pyx_v_err));
}
+3036: if handle._reset_seq != seen_seq:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_handle->_reset_seq != __pyx_cur_scope->__pyx_v_seen_seq);
if (__pyx_t_25) {
/* … */
}
3037: # Rows may already be out the door, so a replay from
3038: # batch 0 would duplicate them. Streaming cannot take
3039: # them back: surface a clean, catchable error (the same
3040: # contract as the Arrow stream).
+3041: if err != NULL:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_err != NULL);
if (__pyx_t_25) {
/* … */
}
+3042: questdb_error_free(err)
questdb_error_free(__pyx_cur_scope->__pyx_v_err);
+3043: err = NULL
__pyx_cur_scope->__pyx_v_err = NULL;
+3044: raise QuestDBError(
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3044, __pyx_L49_error)
__Pyx_GOTREF(__pyx_t_1);
+3045: QuestDBErrorCode.FailoverWouldDuplicate,
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3045, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_27 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate); if (unlikely(!__pyx_t_27)) __PYX_ERR(1, 3045, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_27); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_27, __pyx_mstate_global->__pyx_kp_u_mid_query_failover_would_duplica_2}; __pyx_t_15 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_27); __pyx_t_27 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3044, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_15); } __Pyx_Raise(__pyx_t_15, 0, 0, 0); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __PYX_ERR(1, 3044, __pyx_L49_error)
3046: 'mid-query failover would duplicate already-'
3047: 'delivered rows; re-issue the query')
+3048: if batch == NULL:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_batch == NULL);
if (__pyx_t_25) {
/* … */
}
+3049: if err != NULL:
__pyx_t_25 = (__pyx_cur_scope->__pyx_v_err != NULL);
if (unlikely(__pyx_t_25)) {
/* … */
}
+3050: raise _reader_err_to_py(err)
__pyx_t_15 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_cur_scope->__pyx_v_err); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3050, __pyx_L49_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_Raise(__pyx_t_15, 0, 0, 0); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __PYX_ERR(1, 3050, __pyx_L49_error)
+3051: _mark_reader_drained(handle)
__pyx_t_29 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_cur_scope->__pyx_v_handle); if (unlikely(__pyx_t_29 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 3051, __pyx_L49_error)
+3052: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L53_try_return;
+3053: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_pin(__pyx_cur_scope->__pyx_v_handle);
+3054: try:
/*try:*/ {
+3055: rows = _row_batch_decode(
__pyx_t_15 = __pyx_f_7questdb_7_client__row_batch_decode(__pyx_cur_scope->__pyx_v_batch, __pyx_cur_scope->__pyx_v_col_names, __pyx_cur_scope->__pyx_v_col_kinds, __pyx_cur_scope->__pyx_v_symbols, __pyx_cur_scope->__pyx_v_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3055, __pyx_L71_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_rows); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_rows, ((PyObject*)__pyx_t_15)); __Pyx_GIVEREF(__pyx_t_15); __pyx_t_15 = 0; }
3056: batch, col_names, col_kinds, symbols, np)
3057: finally:
+3058: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_cur_scope->__pyx_v_handle);
goto __pyx_L72;
}
__pyx_L71_error:;
/*exception exit:*/{
__Pyx_PyThreadState_assign
__pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19);
if ( unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_23, &__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_22);
__Pyx_XGOTREF(__pyx_t_21);
__Pyx_XGOTREF(__pyx_t_20);
__Pyx_XGOTREF(__pyx_t_19);
__pyx_t_17 = __pyx_lineno; __pyx_t_16 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_cur_scope->__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_21);
__Pyx_XGIVEREF(__pyx_t_20);
__Pyx_XGIVEREF(__pyx_t_19);
__Pyx_ExceptionReset(__pyx_t_21, __pyx_t_20, __pyx_t_19);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_22);
__Pyx_ErrRestore(__pyx_t_24, __pyx_t_23, __pyx_t_22);
__pyx_t_24 = 0; __pyx_t_23 = 0; __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0;
__pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_16; __pyx_filename = __pyx_t_18;
goto __pyx_L49_error;
}
__pyx_L72:;
}
+3059: except BaseException:
__pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_16) { __Pyx_AddTraceback("questdb._client._row_stream_iter", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_27, &__pyx_t_1, &__pyx_t_15) < 0) __PYX_ERR(1, 3059, __pyx_L9_except_error) __Pyx_XGOTREF(__pyx_t_27); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_15);
+3060: handle._rows_cut_short = True
__pyx_cur_scope->__pyx_v_handle->_rows_cut_short = 1;
+3061: raise
__Pyx_GIVEREF(__pyx_t_27); __Pyx_GIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestoreWithState(__pyx_t_27, __pyx_t_1, __pyx_t_15); __pyx_t_27 = 0; __pyx_t_1 = 0; __pyx_t_15 = 0; __PYX_ERR(1, 3061, __pyx_L9_except_error) } goto __pyx_L9_except_error;
3062: finally:
+3063: handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_handle);
goto __pyx_L6;
}
__pyx_L5_error:;
/*exception exit:*/{
__Pyx_PyThreadState_assign
__pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_27); __pyx_t_27 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_7, &__pyx_t_9, &__pyx_t_10);
if ( unlikely(__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0)) __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_5);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_7);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_10);
__pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_10);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_9, __pyx_t_10);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ErrRestore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
__pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
__pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18;
goto __pyx_L1_error;
}
__pyx_L4_return: {
__pyx_t_10 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_cur_scope->__pyx_v_handle->__pyx_vtab)->_free(__pyx_cur_scope->__pyx_v_handle);
__pyx_r = __pyx_t_10;
__pyx_t_10 = 0;
goto __pyx_L0;
}
__pyx_L6:;
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
3064:
3065:
+3066: cdef object _numpy_frame_from_cursor(_CursorHandle handle):
static PyObject *__pyx_f_7questdb_7_client__numpy_frame_from_cursor(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle) {
PyObject *__pyx_v_np = NULL;
PyObject *__pyx_v_pd = NULL;
struct qwp_reader_cursor *__pyx_v_cursor;
questdb_error *__pyx_v_err;
struct qwp_reader_batch const *__pyx_v_batch;
struct qwp_reader_symbol_dict __pyx_v_sd;
size_t __pyx_v_n_cols;
size_t __pyx_v_row_count;
size_t __pyx_v_col_idx;
size_t __pyx_v_prev_dict_n;
int __pyx_v_first;
PyObject *__pyx_v_pinned_meta = 0;
PyObject *__pyx_v_pinned_names_b = 0;
int __pyx_v_has_symbol;
int __pyx_v_seen_seq;
PyObject *__pyx_v_col_names = NULL;
PyObject *__pyx_v_col_kinds = NULL;
PyObject *__pyx_v_col_scales = NULL;
PyObject *__pyx_v_col_precision = NULL;
PyObject *__pyx_v_col_chunks = NULL;
PyObject *__pyx_v_col_masks = NULL;
PyObject *__pyx_v_symbol_categories = NULL;
PyObject *__pyx_v_batch_chunks = NULL;
PyObject *__pyx_v_batch_masks = NULL;
CYTHON_UNUSED size_t __pyx_8genexpr9__pyx_v__;
CYTHON_UNUSED size_t __pyx_9genexpr10__pyx_v__;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client._numpy_frame_from_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_np);
__Pyx_XDECREF(__pyx_v_pd);
__Pyx_XDECREF(__pyx_v_pinned_meta);
__Pyx_XDECREF(__pyx_v_pinned_names_b);
__Pyx_XDECREF(__pyx_v_col_names);
__Pyx_XDECREF(__pyx_v_col_kinds);
__Pyx_XDECREF(__pyx_v_col_scales);
__Pyx_XDECREF(__pyx_v_col_precision);
__Pyx_XDECREF(__pyx_v_col_chunks);
__Pyx_XDECREF(__pyx_v_col_masks);
__Pyx_XDECREF(__pyx_v_symbol_categories);
__Pyx_XDECREF(__pyx_v_batch_chunks);
__Pyx_XDECREF(__pyx_v_batch_masks);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3067: import numpy as np
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3067, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_np = __pyx_t_1; __pyx_t_1 = 0;
+3068: import pandas as pd
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pandas_2, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3068, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pd = __pyx_t_1; __pyx_t_1 = 0;
3069: cdef qwp_reader_cursor* cursor
+3070: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
3071: cdef const qwp_reader_batch* batch
3072: cdef qwp_reader_symbol_dict sd
+3073: cdef size_t n_cols = 0
__pyx_v_n_cols = 0;
+3074: cdef size_t row_count = 0
__pyx_v_row_count = 0;
3075: cdef size_t col_idx
+3076: cdef size_t prev_dict_n = 0
__pyx_v_prev_dict_n = 0;
+3077: cdef bint first = True
__pyx_v_first = 1;
+3078: cdef tuple pinned_meta = None
__Pyx_INCREF(Py_None);
__pyx_v_pinned_meta = ((PyObject*)Py_None);
+3079: cdef list pinned_names_b = None
__Pyx_INCREF(Py_None);
__pyx_v_pinned_names_b = ((PyObject*)Py_None);
+3080: cdef bint has_symbol = False
__pyx_v_has_symbol = 0;
3081: cdef int seen_seq
3082:
+3083: if handle is None or not handle._is_live():
__pyx_t_4 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_4) {
} else {
__pyx_t_3 = __pyx_t_4;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_is_live(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3083, __pyx_L1_error)
__pyx_t_5 = (!__pyx_t_4);
__pyx_t_3 = __pyx_t_5;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_3)) {
/* … */
}
+3084: raise QuestDBError(QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3084, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3084, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3084, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
assert(__pyx_t_6);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_9, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3084, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 3084, __pyx_L1_error)
+3085: seen_seq = handle._reset_sequence()
__pyx_t_11 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3085, __pyx_L1_error)
__pyx_v_seen_seq = __pyx_t_11;
3086:
+3087: col_names = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_names = __pyx_t_1; __pyx_t_1 = 0;
+3088: col_kinds = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3088, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_kinds = __pyx_t_1; __pyx_t_1 = 0;
+3089: col_scales = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3089, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_scales = __pyx_t_1; __pyx_t_1 = 0;
+3090: col_precision = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_precision = __pyx_t_1; __pyx_t_1 = 0;
+3091: col_chunks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_chunks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3092: col_masks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_col_masks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3093: symbol_categories = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_symbol_categories = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
3094:
+3095: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_12, __pyx_t_13);
goto __pyx_L1_error;
__pyx_L11_try_end:;
}
+3096: while True:
while (1) {
+3097: with handle._lock:
/*with:*/ {
__pyx_t_14 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3097, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_7 = NULL;
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3097, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3097, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
goto __pyx_L27_try_end;
__pyx_L20_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._numpy_frame_from_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_6) < 0) __PYX_ERR(1, 3097, __pyx_L22_except_error)
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_6);
{
PyObject* __pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6};
__pyx_t_7 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3097, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_29 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_7, NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_29)) __PYX_ERR(1, 3097, __pyx_L22_except_error)
__Pyx_GOTREF(__pyx_t_29);
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_29);
__Pyx_DECREF(__pyx_t_29); __pyx_t_29 = 0;
if (__pyx_t_3 < (0)) __PYX_ERR(1, 3097, __pyx_L22_except_error)
__pyx_t_5 = (!__pyx_t_3);
if (unlikely(__pyx_t_5)) {
__Pyx_GIVEREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_8, __pyx_t_6);
__pyx_t_9 = 0; __pyx_t_8 = 0; __pyx_t_6 = 0;
__PYX_ERR(1, 3097, __pyx_L22_except_error)
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L21_exception_handled;
}
__pyx_L22_except_error:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L6_error;
__pyx_L25_try_break:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
goto __pyx_L16_break;
__pyx_L21_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_15);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_ExceptionReset(__pyx_t_15, __pyx_t_16, __pyx_t_17);
__pyx_L27_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_14) {
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3097, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
}
goto __pyx_L19;
}
__pyx_L16_break: {
if (__pyx_t_14) {
__pyx_t_17 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3097, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_17);
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
}
goto __pyx_L13_break;
}
__pyx_L19:;
}
goto __pyx_L56;
__pyx_L14_error:;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
goto __pyx_L6_error;
__pyx_L56:;
}
+3098: cursor = handle._cursor
__pyx_t_18 = __pyx_v_handle->_cursor;
__pyx_v_cursor = __pyx_t_18;
+3099: if cursor == NULL:
__pyx_t_3 = (__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+3100: raise QuestDBError(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3100, __pyx_L20_error)
__Pyx_GOTREF(__pyx_t_7);
+3101: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3101, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3101, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_7, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_8, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3100, __pyx_L20_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3100, __pyx_L20_error)
+3102: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L33;
}
__pyx_L33:;
}
}
+3103: batch = qwp_reader_cursor_next_batch(cursor, &err)
__pyx_v_batch = qwp_reader_cursor_next_batch(__pyx_v_cursor, (&__pyx_v_err));
}
+3104: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_pin(__pyx_v_handle);
+3105: try:
/*try:*/ {
+3106: if handle._reset_seq != seen_seq:
__pyx_t_3 = (__pyx_v_handle->_reset_seq != __pyx_v_seen_seq);
if (__pyx_t_3) {
/* … */
}
3107: # Mid-query failover replayed from batch-0: discard
3108: # the pre-failover accumulation and the schema.
+3109: seen_seq = handle._reset_seq
__pyx_t_11 = __pyx_v_handle->_reset_seq;
__pyx_v_seen_seq = __pyx_t_11;
+3110: first = True
__pyx_v_first = 1;
+3111: prev_dict_n = 0
__pyx_v_prev_dict_n = 0;
+3112: has_symbol = False
__pyx_v_has_symbol = 0;
+3113: col_chunks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3113, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_chunks, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+3114: col_masks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3114, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_col_masks, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+3115: symbol_categories = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3115, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_symbol_categories, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+3116: if batch == NULL:
__pyx_t_3 = (__pyx_v_batch == NULL);
if (__pyx_t_3) {
/* … */
}
+3117: if err != NULL:
__pyx_t_3 = (__pyx_v_err != NULL);
if (unlikely(__pyx_t_3)) {
/* … */
}
+3118: raise _reader_err_to_py(err)
__pyx_t_1 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3118, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3118, __pyx_L37_error)
+3119: break
goto __pyx_L35_break;
+3120: row_count = qwp_reader_batch_row_count(batch)
__pyx_v_row_count = qwp_reader_batch_row_count(__pyx_v_batch);
+3121: if first:
if (__pyx_v_first) {
/* … */
goto __pyx_L42;
}
+3122: pinned_meta = _numpy_extract_meta(batch)
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_extract_meta(__pyx_v_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3122, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_pinned_meta, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+3123: pinned_names_b = _numpy_pinned_name_bytes(pinned_meta)
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_pinned_name_bytes(__pyx_v_pinned_meta); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3123, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_pinned_names_b, ((PyObject*)__pyx_t_1)); __pyx_t_1 = 0;
+3124: (col_names, col_kinds, col_scales, col_precision,
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 3124, __pyx_L37_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_col_names, __pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_col_kinds, __pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_col_scales, __pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_col_precision, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_has_symbol = __pyx_t_3;
+3125: has_symbol) = pinned_meta
if (likely(__pyx_v_pinned_meta != Py_None)) {
PyObject* sequence = __pyx_v_pinned_meta;
Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence);
if (unlikely(size != 5)) {
if (size > 5) __Pyx_RaiseTooManyValuesError(5);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(1, 3124, __pyx_L37_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 3);
__Pyx_INCREF(__pyx_t_9);
__pyx_t_6 = PyTuple_GET_ITEM(sequence, 4);
__Pyx_INCREF(__pyx_t_6);
#else
{
Py_ssize_t i;
PyObject** temps[5] = {&__pyx_t_1,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_6};
for (i=0; i < 5; i++) {
PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(1, 3124, __pyx_L37_error)
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
}
#endif
} else {
__Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3124, __pyx_L37_error)
}
+3126: n_cols = <size_t>len(col_names)
__pyx_t_19 = PyObject_Length(__pyx_v_col_names); if (unlikely(__pyx_t_19 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3126, __pyx_L37_error) __pyx_v_n_cols = ((size_t)__pyx_t_19);
+3127: col_chunks = [[] for _ in range(n_cols)]
{ /* enter inner scope */
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3127, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = __pyx_v_n_cols;
__pyx_t_20 = __pyx_t_10;
for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
__pyx_8genexpr9__pyx_v__ = __pyx_t_21;
__pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3127, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_9);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_6, __pyx_t_9))) __PYX_ERR(1, 3127, __pyx_L37_error)
__pyx_t_9 = 0;
}
} /* exit inner scope */
__Pyx_DECREF_SET(__pyx_v_col_chunks, ((PyObject*)__pyx_t_6));
__pyx_t_6 = 0;
+3128: col_masks = [[] for _ in range(n_cols)]
{ /* enter inner scope */
__pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3128, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_10 = __pyx_v_n_cols;
__pyx_t_20 = __pyx_t_10;
for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
__pyx_9genexpr10__pyx_v__ = __pyx_t_21;
__pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3128, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GIVEREF(__pyx_t_9);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_6, __pyx_t_9))) __PYX_ERR(1, 3128, __pyx_L37_error)
__pyx_t_9 = 0;
}
} /* exit inner scope */
__Pyx_DECREF_SET(__pyx_v_col_masks, ((PyObject*)__pyx_t_6));
__pyx_t_6 = 0;
+3129: first = False
__pyx_v_first = 0;
3130: else:
+3131: _numpy_check_meta_pinned(
/*else*/ {
/* … */
__pyx_t_6 = __pyx_f_7questdb_7_client__numpy_check_meta_pinned(__pyx_v_pinned_meta, __pyx_v_pinned_names_b, __pyx_v_batch); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3131, __pyx_L37_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__pyx_L42:;
3132: pinned_meta, pinned_names_b, batch)
+3133: if has_symbol:
if (__pyx_v_has_symbol) {
/* … */
}
+3134: _reader_check(
__pyx_t_11 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_symbol_dict(__pyx_v_batch, (&__pyx_v_sd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_symbol_dict); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 3134, __pyx_L37_error)
3135: qwp_reader_batch_symbol_dict(batch, &sd, &err),
3136: &err, 'qwp_reader_batch_symbol_dict')
+3137: if sd.entry_count > prev_dict_n:
__pyx_t_3 = (__pyx_v_sd.entry_count > __pyx_v_prev_dict_n);
if (__pyx_t_3) {
/* … */
}
+3138: _symbol_categories_extend(
__pyx_f_7questdb_7_client__symbol_categories_extend(__pyx_v_symbol_categories, (&__pyx_v_sd), __pyx_v_prev_dict_n); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3138, __pyx_L37_error)
3139: symbol_categories, &sd, prev_dict_n)
+3140: prev_dict_n = sd.entry_count
__pyx_t_10 = __pyx_v_sd.entry_count;
__pyx_v_prev_dict_n = __pyx_t_10;
+3141: batch_chunks, batch_masks = _numpy_batch_columns(
__pyx_t_9 = __pyx_f_7questdb_7_client__numpy_batch_columns(__pyx_v_batch, ((PyObject*)__pyx_t_6), __pyx_v_n_cols, __pyx_v_row_count, __pyx_v_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3141, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(__pyx_t_9 != Py_None)) { PyObject* sequence = __pyx_t_9; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 3141, __pyx_L37_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3141, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3141, __pyx_L37_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3141, __pyx_L37_error) } __Pyx_XDECREF_SET(__pyx_v_batch_chunks, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_batch_masks, __pyx_t_8); __pyx_t_8 = 0; }
+3142: batch, col_kinds, n_cols, row_count, np)
__pyx_t_6 = __pyx_v_col_kinds;
__Pyx_INCREF(__pyx_t_6);
if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_6))) __PYX_ERR(1, 3142, __pyx_L37_error)
3143: finally:
+3144: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L38;
}
__pyx_L37_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_27, &__pyx_t_28, &__pyx_t_29);
if ( unlikely(__Pyx_GetException(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26) < 0)) __Pyx_ErrFetch(&__pyx_t_24, &__pyx_t_25, &__pyx_t_26);
__Pyx_XGOTREF(__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_25);
__Pyx_XGOTREF(__pyx_t_26);
__Pyx_XGOTREF(__pyx_t_27);
__Pyx_XGOTREF(__pyx_t_28);
__Pyx_XGOTREF(__pyx_t_29);
__pyx_t_11 = __pyx_lineno; __pyx_t_22 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_XGIVEREF(__pyx_t_28);
__Pyx_XGIVEREF(__pyx_t_29);
__Pyx_ExceptionReset(__pyx_t_27, __pyx_t_28, __pyx_t_29);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_25);
__Pyx_XGIVEREF(__pyx_t_26);
__Pyx_ErrRestore(__pyx_t_24, __pyx_t_25, __pyx_t_26);
__pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0; __pyx_t_29 = 0;
__pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_22; __pyx_filename = __pyx_t_23;
goto __pyx_L20_error;
}
__pyx_L35_break: {
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L25_try_break;
}
__pyx_L38:;
}
+3145: for col_idx in range(n_cols):
__pyx_t_10 = __pyx_v_n_cols;
__pyx_t_20 = __pyx_t_10;
for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
__pyx_v_col_idx = __pyx_t_21;
+3146: col_chunks[col_idx].append(batch_chunks[col_idx])
__pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_col_chunks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3146, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(!__pyx_v_batch_chunks)) { __Pyx_RaiseUnboundLocalError("batch_chunks"); __PYX_ERR(1, 3146, __pyx_L6_error) } __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_batch_chunks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3146, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_30 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_8); if (unlikely(__pyx_t_30 == ((int)-1))) __PYX_ERR(1, 3146, __pyx_L6_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3147: col_masks[col_idx].append(batch_masks[col_idx])
__pyx_t_8 = __Pyx_GetItemInt_List(__pyx_v_col_masks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3147, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(!__pyx_v_batch_masks)) { __Pyx_RaiseUnboundLocalError("batch_masks"); __PYX_ERR(1, 3147, __pyx_L6_error) } __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_batch_masks, __pyx_v_col_idx, size_t, 0, __Pyx_PyLong_FromSize_t, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3147, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_30 = __Pyx_PyObject_Append(__pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_30 == ((int)-1))) __PYX_ERR(1, 3147, __pyx_L6_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __pyx_L13_break:;
+3148: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._numpy_frame_from_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(1, 3148, __pyx_L8_except_error)
__Pyx_XGOTREF(__pyx_t_6);
__Pyx_XGOTREF(__pyx_t_8);
__Pyx_XGOTREF(__pyx_t_9);
+3149: handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
+3150: raise
__Pyx_GIVEREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestoreWithState(__pyx_t_6, __pyx_t_8, __pyx_t_9); __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __PYX_ERR(1, 3150, __pyx_L8_except_error) }
3151:
+3152: try:
/*try:*/ {
+3153: _mark_reader_drained(handle)
__pyx_t_31 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_v_handle); if (unlikely(__pyx_t_31 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 3153, __pyx_L62_error)
}
3154: finally:
+3155: handle._free()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
goto __pyx_L63;
}
__pyx_L62_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_2 = 0; __pyx_t_14 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_14, &__pyx_t_17, &__pyx_t_16);
if ( unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_12, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_14);
__Pyx_XGOTREF(__pyx_t_17);
__Pyx_XGOTREF(__pyx_t_16);
__pyx_t_22 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_23 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
}
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_17);
__Pyx_XGIVEREF(__pyx_t_16);
__Pyx_ExceptionReset(__pyx_t_14, __pyx_t_17, __pyx_t_16);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_13, __pyx_t_12, __pyx_t_2);
__pyx_t_13 = 0; __pyx_t_12 = 0; __pyx_t_2 = 0; __pyx_t_14 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0;
__pyx_lineno = __pyx_t_22; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_23;
goto __pyx_L1_error;
}
__pyx_L63:;
}
3156:
+3157: if first:
if (__pyx_v_first) {
/* … */
}
+3158: return pd.DataFrame()
__pyx_t_8 = __pyx_v_pd;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_DataFrame, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3158, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_9;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_9 = 0;
goto __pyx_L0;
+3159: return _numpy_assemble_frame(
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_assemble_frame(((PyObject*)__pyx_t_9), ((PyObject*)__pyx_t_8), ((PyObject*)__pyx_t_6), ((PyObject*)__pyx_t_7), __pyx_v_col_chunks, __pyx_v_symbol_categories, __pyx_v_np, __pyx_v_pd, __pyx_v_col_masks, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+3160: col_names, col_kinds, col_scales, col_precision,
__pyx_t_9 = __pyx_v_col_names; __Pyx_INCREF(__pyx_t_9); if (!(likely(PyList_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_9))) __PYX_ERR(1, 3160, __pyx_L1_error) __pyx_t_8 = __pyx_v_col_kinds; __Pyx_INCREF(__pyx_t_8); if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_8))) __PYX_ERR(1, 3160, __pyx_L1_error) __pyx_t_6 = __pyx_v_col_scales; __Pyx_INCREF(__pyx_t_6); if (!(likely(PyList_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_6))) __PYX_ERR(1, 3160, __pyx_L1_error) __pyx_t_7 = __pyx_v_col_precision; __Pyx_INCREF(__pyx_t_7); if (!(likely(PyList_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_7))) __PYX_ERR(1, 3160, __pyx_L1_error)
3161: col_chunks, symbol_categories, np, pd, col_masks)
3162:
3163:
+3164: cdef class _PolarsSymbolRegistry:
struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry {
PyObject_HEAD
PyObject *pl;
PyObject *cats;
PyObject *base;
PyObject *pinned;
Py_ssize_t n;
int cat_to;
};
3165: """A polars ``Categories`` shared by every SYMBOL column on the same
3166: (append-only) connection dictionary — interned once and grown as the dict
3167: grows, so a QWP code is its own physical categorical code and casts straight
3168: into a ``Categorical`` with no per-row remap (the Rust ``SymbolRegistry``
3169: analog). The interned dictionary is pinned in ``base`` to stop polars'
3170: auto-GC mapping from dropping it between calls."""
3171: cdef object pl
3172: cdef object cats
3173: cdef object base
3174: cdef object pinned
3175: cdef Py_ssize_t n
3176: cdef bint cat_to
3177:
+3178: def __cinit__(self, object pl):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_pl = 0;
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pl,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3178, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3178, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 3178, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, i); __PYX_ERR(1, 3178, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3178, __pyx_L3_error)
}
__pyx_v_pl = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3178, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry___cinit__(((struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *)__pyx_v_self), __pyx_v_pl);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry___cinit__(struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *__pyx_v_self, PyObject *__pyx_v_pl) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3179: self.pl = pl
__Pyx_INCREF(__pyx_v_pl); __Pyx_GIVEREF(__pyx_v_pl); __Pyx_GOTREF(__pyx_v_self->pl); __Pyx_DECREF(__pyx_v_self->pl); __pyx_v_self->pl = __pyx_v_pl;
+3180: self.cats = pl.Categories.random('questdb_symbol', physical=pl.UInt32)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_Categories); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_UInt32); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_mstate_global->__pyx_n_u_questdb_symbol, __pyx_t_4}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[18]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_physical}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_random, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->cats); __Pyx_DECREF(__pyx_v_self->cats); __pyx_v_self->cats = __pyx_t_1; __pyx_t_1 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_physical}; __pyx_mstate_global->__pyx_tuple[18] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[18])) __PYX_ERR(1, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[18]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[18]);
+3181: self.base = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->base); __Pyx_DECREF(__pyx_v_self->base); __pyx_v_self->base = Py_None;
+3182: self.pinned = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->pinned); __Pyx_DECREF(__pyx_v_self->pinned); __pyx_v_self->pinned = Py_None;
+3183: self.n = 0
__pyx_v_self->n = 0;
3184: # polars >= 1.43 deprecates the physical-code `.cast(Categorical)` in
3185: # favour of `.cat.to(Categorical)`, which older polars lacks.
+3186: self.cat_to = hasattr(pl.Series([], dtype=pl.UInt32).cat, 'to')
__pyx_t_3 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_UInt32); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_4}; #if CYTHON_VECTORCALL __pyx_t_2 = __pyx_mstate_global->__pyx_tuple[4]; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_INCREF(__pyx_t_2); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype}; __pyx_t_2 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_Series, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_cat); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_HasAttr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_to); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(1, 3186, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->cat_to = __pyx_t_7;
3187:
+3188: def accepts(self, object cats_arrow):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_3accepts(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_21_PolarsSymbolRegistry_3accepts = {"accepts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_3accepts, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_3accepts(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_cats_arrow = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("accepts (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cats_arrow,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3188, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3188, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "accepts", 0) < (0)) __PYX_ERR(1, 3188, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("accepts", 1, 1, 1, i); __PYX_ERR(1, 3188, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3188, __pyx_L3_error)
}
__pyx_v_cats_arrow = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("accepts", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3188, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.accepts", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry_2accepts(((struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *)__pyx_v_self), __pyx_v_cats_arrow);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry_2accepts(struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *__pyx_v_self, PyObject *__pyx_v_cats_arrow) {
Py_ssize_t __pyx_v_m;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.accepts", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_21_PolarsSymbolRegistry_3accepts, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PolarsSymbolRegistry_accepts, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry, __pyx_mstate_global->__pyx_n_u_accepts, __pyx_t_17) < (0)) __PYX_ERR(1, 3188, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3189: # True if this registry's Categories maps `cats_arrow`'s codes
3190: # correctly: the smaller of (pinned, cats_arrow) must be a prefix of the
3191: # larger. The connection dict is append-only, so columns sharing it only
3192: # ever differ by a growth suffix; a column-local dict fails the check and
3193: # gets its own registry. `equals` short-circuits on the shared buffer.
3194: cdef Py_ssize_t m
+3195: if self.pinned is None:
__pyx_t_1 = (__pyx_v_self->pinned == Py_None);
if (__pyx_t_1) {
/* … */
}
+3196: return True
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(Py_True);
__pyx_r = Py_True;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+3197: m = len(cats_arrow)
__pyx_t_2 = PyObject_Length(__pyx_v_cats_arrow); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3197, __pyx_L1_error) __pyx_v_m = __pyx_t_2;
+3198: if m <= self.n:
__pyx_t_1 = (__pyx_v_m <= __pyx_v_self->n);
if (__pyx_t_1) {
/* … */
}
+3199: return self.pinned.slice(0, m).equals(cats_arrow)
__pyx_t_6 = __pyx_v_self->pinned;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_7 = PyLong_FromSsize_t(__pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_mstate_global->__pyx_int_0, __pyx_t_7};
__pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_slice, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
}
__pyx_t_4 = __pyx_t_5;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_cats_arrow};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_equals, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_3;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
+3200: return cats_arrow.slice(0, self.n).equals(self.pinned)
__pyx_t_7 = __pyx_v_cats_arrow; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = PyLong_FromSsize_t(__pyx_v_self->n); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_mstate_global->__pyx_int_0, __pyx_t_6}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_slice, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_self->pinned}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_equals, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
3201:
+3202: def column(self, object name, object codes, object cats_arrow):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_5column(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_21_PolarsSymbolRegistry_5column = {"column", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_5column, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_21_PolarsSymbolRegistry_5column(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_name = 0;
PyObject *__pyx_v_codes = 0;
PyObject *__pyx_v_cats_arrow = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("column (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name,&__pyx_mstate_global->__pyx_n_u_codes,&__pyx_mstate_global->__pyx_n_u_cats_arrow,0};
PyObject* values[3] = {0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3202, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 3202, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3202, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3202, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "column", 0) < (0)) __PYX_ERR(1, 3202, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("column", 1, 3, 3, i); __PYX_ERR(1, 3202, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3202, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3202, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 3202, __pyx_L3_error)
}
__pyx_v_name = values[0];
__pyx_v_codes = values[1];
__pyx_v_cats_arrow = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("column", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 3202, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.column", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry_4column(((struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *)__pyx_v_self), __pyx_v_name, __pyx_v_codes, __pyx_v_cats_arrow);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_21_PolarsSymbolRegistry_4column(struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_codes, PyObject *__pyx_v_cats_arrow) {
PyObject *__pyx_v_pl = 0;
PyObject *__pyx_r = NULL;
__Pyx_INCREF(__pyx_v_codes);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._PolarsSymbolRegistry.column", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_pl);
__Pyx_XDECREF(__pyx_v_codes);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_21_PolarsSymbolRegistry_5column, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_PolarsSymbolRegistry_column, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3202, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17);
#endif
if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry, __pyx_mstate_global->__pyx_n_u_column_2, __pyx_t_17) < (0)) __PYX_ERR(1, 3202, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+3203: cdef object pl = self.pl
__pyx_t_1 = __pyx_v_self->pl;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_pl = __pyx_t_1;
__pyx_t_1 = 0;
+3204: if cats_arrow is not None and len(cats_arrow) > self.n:
__pyx_t_3 = (__pyx_v_cats_arrow != Py_None);
if (__pyx_t_3) {
} else {
__pyx_t_2 = __pyx_t_3;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_4 = PyObject_Length(__pyx_v_cats_arrow); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3204, __pyx_L1_error)
__pyx_t_3 = (__pyx_t_4 > __pyx_v_self->n);
__pyx_t_2 = __pyx_t_3;
__pyx_L4_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
+3205: self.base = pl.Series(
__pyx_t_5 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_5);
/* … */
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->base);
__Pyx_DECREF(__pyx_v_self->base);
__pyx_v_self->base = __pyx_t_1;
__pyx_t_1 = 0;
+3206: pl.from_arrow(cats_arrow), dtype=pl.Categorical(self.cats))
__pyx_t_7 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_cats_arrow};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
/* … */
__pyx_t_9 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_9);
/* … */
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_self->cats};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Categorical, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3206, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_7};
#if CYTHON_VECTORCALL
__pyx_t_9 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3205, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_9);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_9 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_Series, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3205, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
+3207: self.pinned = cats_arrow
__Pyx_INCREF(__pyx_v_cats_arrow); __Pyx_GIVEREF(__pyx_v_cats_arrow); __Pyx_GOTREF(__pyx_v_self->pinned); __Pyx_DECREF(__pyx_v_self->pinned); __pyx_v_self->pinned = __pyx_v_cats_arrow;
+3208: self.n = len(cats_arrow)
__pyx_t_4 = PyObject_Length(__pyx_v_cats_arrow); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3208, __pyx_L1_error) __pyx_v_self->n = __pyx_t_4;
+3209: codes = codes.cast(pl.UInt32)
__pyx_t_9 = __pyx_v_codes; __Pyx_INCREF(__pyx_t_9); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_UInt32); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_7}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF_SET(__pyx_v_codes, __pyx_t_1); __pyx_t_1 = 0;
+3210: if self.cat_to:
if (__pyx_v_self->cat_to) {
/* … */
}
+3211: return codes.cat.to(pl.Categorical(self.cats)).alias(name)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_codes, __pyx_mstate_global->__pyx_n_u_cat); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_11 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_11); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_self->cats}; __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Categorical, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10}; __pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_to, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } __pyx_t_7 = __pyx_t_9; __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_name}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_alias, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+3212: return codes.cast(pl.Categorical(self.cats)).alias(name)
__pyx_t_5 = __pyx_v_codes; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_self->cats}; __pyx_t_10 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Categorical, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); } __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_10}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __pyx_t_9 = __pyx_t_7; __Pyx_INCREF(__pyx_t_9); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_name}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_alias, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
3213:
3214:
+3215: cdef tuple _polars_dict_codes_cats(object col, object pl):
static PyObject *__pyx_f_7questdb_7_client__polars_dict_codes_cats(PyObject *__pyx_v_col, PyObject *__pyx_v_pl) {
PyObject *__pyx_v_chunks = 0;
PyObject *__pyx_v_parts = 0;
PyObject *__pyx_v_ch = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("questdb._client._polars_dict_codes_cats", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_chunks);
__Pyx_XDECREF(__pyx_v_parts);
__Pyx_XDECREF(__pyx_v_ch);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3216: # col: a pyarrow ChunkedArray of dictionary type, one chunk per wire batch.
3217: # The dict is append-only and shared across the query — the Rust egress
3218: # attaches the full active connection dict to every batch and only ever grows
3219: # it (see `SymbolValuesCache` in c-questdb-client), and `Table.from_batches`
3220: # keeps the chunks in emission order — so the last chunk's dictionary is the
3221: # largest and covers every (global, stable) code. Returns (polars Series of
3222: # the dict indices with nulls preserved via Arrow validity, the full
3223: # dictionary values array). The indices flow straight from Arrow to polars
3224: # (no numpy round-trip, no -1 sentinel).
+3225: cdef list chunks = col.chunks
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_col, __pyx_mstate_global->__pyx_n_u_chunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 3225, __pyx_L1_error) __pyx_v_chunks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3226: cdef list parts = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3226, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_parts = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
3227: cdef object ch
+3228: if not chunks:
if (__pyx_v_chunks == Py_None) __pyx_t_2 = 0;
else
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_chunks);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 3228, __pyx_L1_error)
__pyx_t_2 = (__pyx_temp != 0);
}
__pyx_t_3 = (!__pyx_t_2);
if (__pyx_t_3) {
/* … */
}
+3229: return (pl.Series([], dtype=pl.UInt32), None)
__pyx_t_4 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_UInt32); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_t_6};
#if CYTHON_VECTORCALL
__pyx_t_8 = __pyx_mstate_global->__pyx_tuple[4];
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_8);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_dtype};
__pyx_t_8 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1);
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_Series, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3229, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GIVEREF(__pyx_t_1);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 3229, __pyx_L1_error);
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
if (__Pyx_PyTuple_SET_ITEM(__pyx_t_8, 1, Py_None) != (0)) __PYX_ERR(1, 3229, __pyx_L1_error);
__pyx_t_1 = 0;
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject*)__pyx_t_8);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_8 = 0;
goto __pyx_L0;
+3230: for ch in chunks:
if (unlikely(__pyx_v_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
__PYX_ERR(1, 3230, __pyx_L1_error)
}
__pyx_t_8 = __pyx_v_chunks; __Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = 0;
for (;;) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3230, __pyx_L1_error)
#endif
if (__pyx_t_9 >= __pyx_temp) break;
}
__pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_8, __pyx_t_9, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_9;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3230, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_ch, __pyx_t_1);
__pyx_t_1 = 0;
/* … */
}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3231: parts.append(pl.from_arrow(ch.indices))
__pyx_t_6 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ch, __pyx_mstate_global->__pyx_n_u_indices); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3231, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_parts, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 3231, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3232: return (pl.concat(parts) if len(parts) > 1 else parts[0],
__pyx_t_9 = __Pyx_PyList_GET_SIZE(__pyx_v_parts); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3232, __pyx_L1_error) __pyx_t_3 = (__pyx_t_9 > 1); if (__pyx_t_3) { __pyx_t_5 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_parts}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_concat, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_8 = __pyx_t_1; __pyx_t_1 = 0; } else { __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_parts, 0, long, 1, __Pyx_PyLong_From_long, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __pyx_t_1; __pyx_t_1 = 0; } /* … */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8) != (0)) __PYX_ERR(1, 3232, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_5); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5) != (0)) __PYX_ERR(1, 3232, __pyx_L1_error); __pyx_t_8 = 0; __pyx_t_5 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+3233: chunks[-1].dictionary)
if (unlikely(__pyx_v_chunks == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3233, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_chunks, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_dictionary); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3233, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3234:
3235:
+3236: cdef object _cast_to_string_view(object col, object svt, object pa, object pc):
static PyObject *__pyx_f_7questdb_7_client__cast_to_string_view(PyObject *__pyx_v_col, PyObject *__pyx_v_svt, PyObject *__pyx_v_pa, PyObject *__pyx_v_pc) {
PyObject *__pyx_v_chunks = 0;
PyObject *__pyx_v_empty = 0;
PyObject *__pyx_v_ch = 0;
PyObject *__pyx_v_view = 0;
PyObject *__pyx_v_bufs = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("questdb._client._cast_to_string_view", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_chunks);
__Pyx_XDECREF(__pyx_v_empty);
__Pyx_XDECREF(__pyx_v_ch);
__Pyx_XDECREF(__pyx_v_view);
__Pyx_XDECREF(__pyx_v_bufs);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_23_polars_nonsymbol_frame_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
3237: # Cast a Utf8 / LargeUtf8 ChunkedArray to Arrow ``string_view``, repairing the
3238: # null trailing variadic data buffer that pyarrow's cast leaves behind for a
3239: # chunk whose every value is inline (<= 12 bytes). The null buffer validates
3240: # fine in-process, but the Arrow C-Data-Interface exporter dereferences it
3241: # unconditionally — so it crashes (SIGSEGV) the moment polars re-exports the
3242: # column across the C-ABI. Swapping the null for a shared 0-length buffer is
3243: # zero-copy and makes the export safe. A natively built string_view already
3244: # uses an empty (non-null) buffer here, so only the cast output needs fixing.
+3245: cdef list chunks = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_chunks = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3246: cdef object empty = None
__Pyx_INCREF(Py_None);
__pyx_v_empty = Py_None;
3247: cdef object ch, view, bufs
+3248: for ch in col.chunks:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_col, __pyx_mstate_global->__pyx_n_u_chunks); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3248, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3248, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_3; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3248, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3)); #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3); #endif ++__pyx_t_3; } if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3248, __pyx_L1_error) } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 3248, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_ch, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3249: view = pc.cast(ch, svt)
__pyx_t_5 = __pyx_v_pc;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_ch, __pyx_v_svt};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_view, __pyx_t_1);
__pyx_t_1 = 0;
+3250: bufs = view.buffers()
__pyx_t_5 = __pyx_v_view;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_buffers, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3250, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_XDECREF_SET(__pyx_v_bufs, __pyx_t_1);
__pyx_t_1 = 0;
+3251: if bufs and bufs[-1] is None:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_bufs); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 3251, __pyx_L1_error) if (__pyx_t_8) { } else { __pyx_t_7 = __pyx_t_8; goto __pyx_L6_bool_binop_done; } __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_bufs, -1L, long, 1, __Pyx_PyLong_From_long, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __pyx_t_8; __pyx_L6_bool_binop_done:; if (__pyx_t_7) { /* … */ }
+3252: if empty is None:
__pyx_t_7 = (__pyx_v_empty == Py_None);
if (__pyx_t_7) {
/* … */
}
+3253: empty = pa.allocate_buffer(0)
__pyx_t_5 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_int_0};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_allocate_buffer, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3253, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF_SET(__pyx_v_empty, __pyx_t_1);
__pyx_t_1 = 0;
+3254: view = pa.Array.from_buffers(
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Array); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = __pyx_t_9; __Pyx_INCREF(__pyx_t_5); /* … */ { PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_null_count, __pyx_mstate_global->__pyx_n_u_offset}; __pyx_mstate_global->__pyx_tuple[19] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[19])) __PYX_ERR(1, 3254, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[19]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[19]);
+3255: svt, len(view), bufs[:-1] + [empty],
__pyx_t_10 = PyObject_Length(__pyx_v_view); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3255, __pyx_L1_error) __pyx_t_11 = PyLong_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetSlice(__pyx_v_bufs, 0, -1L, NULL, NULL, &__pyx_mstate_global->__pyx_slice[1], 0, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyList_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 3255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_INCREF(__pyx_v_empty); __Pyx_GIVEREF(__pyx_v_empty); if (__Pyx_PyList_SET_ITEM(__pyx_t_13, 0, __pyx_v_empty) != (0)) __PYX_ERR(1, 3255, __pyx_L1_error); __pyx_t_14 = PyNumber_Add(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; /* … */ __pyx_mstate_global->__pyx_slice[1] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_neg_1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[1])) __PYX_ERR(1, 3255, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[1]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[1]);
+3256: null_count=view.null_count, offset=view.offset)
__pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_view, __pyx_mstate_global->__pyx_n_u_null_count); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 3256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_view, __pyx_mstate_global->__pyx_n_u_offset); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_6 = 0; { PyObject *__pyx_callargs[6] = {__pyx_t_5, __pyx_v_svt, __pyx_t_11, __pyx_t_14, __pyx_t_13, __pyx_t_12}; #if CYTHON_VECTORCALL __pyx_t_15 = __pyx_mstate_global->__pyx_tuple[19]; if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3254, __pyx_L1_error) __Pyx_INCREF(__pyx_t_15); #else { PyObject *__pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_null_count, __pyx_mstate_global->__pyx_n_u_offset}; __pyx_t_15 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+4, 2); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); } #endif __pyx_t_1 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_from_buffers, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_15); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF_SET(__pyx_v_view, __pyx_t_1); __pyx_t_1 = 0;
+3257: chunks.append(view)
__pyx_t_16 = __Pyx_PyList_Append(__pyx_v_chunks, __pyx_v_view); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(1, 3257, __pyx_L1_error)
+3258: return pa.chunked_array(chunks, type=svt)
__pyx_t_1 = __pyx_v_pa; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_1, __pyx_v_chunks, __pyx_v_svt}; #if CYTHON_VECTORCALL __pyx_t_9 = __pyx_mstate_global->__pyx_tuple[10]; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3258, __pyx_L1_error) __Pyx_INCREF(__pyx_t_9); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_type}; __pyx_t_9 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+2, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); } #endif __pyx_t_2 = __Pyx_Object_VectorcallMethodKwds((PyObject*)__pyx_mstate_global->__pyx_n_u_chunked_array, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
3259:
3260:
+3261: cdef object _polars_nonsymbol_frame(
static PyObject *__pyx_f_7questdb_7_client__polars_nonsymbol_frame(PyObject *__pyx_v_table, PyObject *__pyx_v_nd_idx, PyObject *__pyx_v_pl, PyObject *__pyx_v_pa) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame *__pyx_cur_scope;
PyObject *__pyx_v_tbl = 0;
PyObject *__pyx_v_types = 0;
PyObject *__pyx_v_sv = 0;
PyObject *__pyx_v_svt = 0;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_v_pc = NULL;
PyObject *__pyx_gb_7questdb_7_client_23_polars_nonsymbol_frame_2generator5 = 0;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 3261, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_pa = __pyx_v_pa;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_pa);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_pa);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_17);
__Pyx_AddTraceback("questdb._client._polars_nonsymbol_frame", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_tbl);
__Pyx_XDECREF(__pyx_v_types);
__Pyx_XDECREF(__pyx_v_sv);
__Pyx_XDECREF(__pyx_v_svt);
__Pyx_XDECREF(__pyx_v_pc);
__Pyx_XDECREF(__pyx_gb_7questdb_7_client_23_polars_nonsymbol_frame_2generator5);
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame {
PyObject_HEAD
PyObject *__pyx_v_pa;
};
3262: object table, list nd_idx, object pl, object pa):
3263: # `pl.from_arrow` for the non-SYMBOL columns. Utf8 / LargeUtf8 columns are
3264: # first cast to Arrow `string_view` (when pyarrow exposes it) so polars
3265: # adopts the byte/view buffers zero-copy — its `String` dtype *is* the view
3266: # ("German strings") layout — instead of rebuilding the view from the offset
3267: # layout. Fixed-width columns are already adopted zero-copy.
+3268: if not nd_idx:
if (__pyx_v_nd_idx == Py_None) __pyx_t_1 = 0;
else
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_nd_idx);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 3268, __pyx_L1_error)
__pyx_t_1 = (__pyx_temp != 0);
}
__pyx_t_2 = (!__pyx_t_1);
if (__pyx_t_2) {
/* … */
}
+3269: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+3270: cdef object tbl = table.select(nd_idx)
__pyx_t_4 = __pyx_v_table; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_nd_idx}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_select, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_tbl = __pyx_t_3; __pyx_t_3 = 0;
+3271: cdef object types = tbl.schema.types
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_tbl, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_types = __pyx_t_4; __pyx_t_4 = 0;
+3272: cdef object sv = getattr(pa, 'string_view', None)
__pyx_t_4 = __pyx_cur_scope->__pyx_v_pa; __Pyx_INCREF(__pyx_t_4); __pyx_t_3 = __Pyx_GetAttr3(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_string_view, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_sv = __pyx_t_3; __pyx_t_3 = 0;
3273: cdef object svt
3274: cdef Py_ssize_t j
+3275: if sv is not None and any(
__pyx_t_1 = (__pyx_v_sv != Py_None);
if (__pyx_t_1) {
} else {
__pyx_t_2 = __pyx_t_1;
goto __pyx_L5_bool_binop_done;
}
/* … */
if (__pyx_t_2) {
/* … */
}
+3276: pa.types.is_string(t) or pa.types.is_large_string(t) for t in types):
static PyObject *__pyx_pf_7questdb_7_client_23_polars_nonsymbol_frame_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_6_genexpr *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_6_genexpr(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_6_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_6_genexpr *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 3276, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame *) __pyx_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
__pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_23_polars_nonsymbol_frame_2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_polars_nonsymbol_frame_locals_g, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._polars_nonsymbol_frame.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_23_polars_nonsymbol_frame_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("genexpr", 0);
__pyx_L3_first_run:;
if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 3276, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(1, 3276, __pyx_L1_error) }
if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
__pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = 0;
__pyx_t_3 = NULL;
} else {
__pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3276, __pyx_L1_error)
}
for (;;) {
if (likely(!__pyx_t_3)) {
if (likely(PyList_CheckExact(__pyx_t_1))) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3276, __pyx_L1_error)
#endif
if (__pyx_t_2 >= __pyx_temp) break;
}
__pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_2, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_2;
} else {
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3276, __pyx_L1_error)
#endif
if (__pyx_t_2 >= __pyx_temp) break;
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
#else
__pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
#endif
++__pyx_t_2;
}
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3276, __pyx_L1_error)
} else {
__pyx_t_4 = __pyx_t_3(__pyx_t_1);
if (unlikely(!__pyx_t_4)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 3276, __pyx_L1_error)
PyErr_Clear();
}
break;
}
}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_t);
__Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_t, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa)) { __Pyx_RaiseClosureNameError("pa"); __PYX_ERR(1, 3276, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_6 = __pyx_t_7;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_cur_scope->__pyx_v_t};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!__pyx_t_9) {
} else {
__pyx_t_5 = __pyx_t_9;
goto __pyx_L7_bool_binop_done;
}
if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa)) { __Pyx_RaiseClosureNameError("pa"); __PYX_ERR(1, 3276, __pyx_L1_error) }
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_t};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = __pyx_t_9;
__pyx_L7_bool_binop_done:;
if (__pyx_t_5) {
/* … */
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(Py_True);
__pyx_r = Py_True;
}
__Pyx_XDECREF(__pyx_temp);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
/* … */
}
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*else*/ {
/* … */
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(Py_False);
__pyx_r = Py_False;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
}
CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_3 = __pyx_pf_7questdb_7_client_23_polars_nonsymbol_frame_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_Generator_GetInlinedResult(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 3276, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_t_1;
__pyx_L5_bool_binop_done:;
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_6_genexpr {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_5___pyx_f_7questdb_7_client__polars_nonsymbol_frame *__pyx_outer_scope;
PyObject *__pyx_genexpr_arg_0;
PyObject *__pyx_v_t;
};
+3277: import pyarrow.compute as pc
__pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow_compute, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3277, __pyx_L1_error) __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_compute); Py_DECREF(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3277, __pyx_L1_error) __pyx_t_6 = __pyx_t_7; __pyx_t_4 = __pyx_t_6; __Pyx_GOTREF(__pyx_t_4); __pyx_v_pc = __pyx_t_4; __pyx_t_4 = 0;
+3278: svt = sv()
__pyx_t_3 = NULL;
__Pyx_INCREF(__pyx_v_sv);
__pyx_t_8 = __pyx_v_sv;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3278, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_v_svt = __pyx_t_4;
__pyx_t_4 = 0;
+3279: for j in range(len(types)):
__pyx_t_9 = PyObject_Length(__pyx_v_types); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3279, __pyx_L1_error) __pyx_t_10 = __pyx_t_9; for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) { __pyx_v_j = __pyx_t_11;
+3280: if pa.types.is_string(types[j]) or pa.types.is_large_string(types[j]):
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __pyx_t_3; __Pyx_INCREF(__pyx_t_8); __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_types, __pyx_v_j, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_12}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L10_bool_binop_done; } __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __pyx_t_12; __Pyx_INCREF(__pyx_t_3); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_types, __pyx_v_j, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_8}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_large_string, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 3280, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L10_bool_binop_done:; if (__pyx_t_2) { /* … */ } }
+3281: tbl = tbl.set_column(
__pyx_t_12 = __pyx_v_tbl;
__Pyx_INCREF(__pyx_t_12);
+3282: j, tbl.schema.field(j).with_type(svt),
__pyx_t_8 = PyLong_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_tbl, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 3282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_16); __pyx_t_15 = __pyx_t_16; __Pyx_INCREF(__pyx_t_15); __pyx_t_17 = PyLong_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_15, __pyx_t_17}; __pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); } __pyx_t_13 = __pyx_t_14; __Pyx_INCREF(__pyx_t_13); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_svt}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_with_type, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); }
+3283: _cast_to_string_view(tbl.column(j), svt, pa, pc))
__pyx_t_13 = __pyx_v_tbl;
__Pyx_INCREF(__pyx_t_13);
__pyx_t_16 = PyLong_FromSsize_t(__pyx_v_j); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 3283, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_16);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_t_16};
__pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_column_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3283, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_14);
}
__pyx_t_16 = __pyx_cur_scope->__pyx_v_pa;
__Pyx_INCREF(__pyx_t_16);
__pyx_t_13 = __pyx_f_7questdb_7_client__cast_to_string_view(__pyx_t_14, __pyx_v_svt, __pyx_t_16, __pyx_v_pc); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 3283, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_12, __pyx_t_8, __pyx_t_3, __pyx_t_13};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_set_column, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3281, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF_SET(__pyx_v_tbl, __pyx_t_4);
__pyx_t_4 = 0;
+3284: return pl.from_arrow(tbl)
__pyx_t_13 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_13); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_tbl}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
3285:
3286:
+3287: cdef object _polars_dataframe_hybrid(
static PyObject *__pyx_f_7questdb_7_client__polars_dataframe_hybrid(PyObject *__pyx_v_table, PyObject *__pyx_v_pl, PyObject *__pyx_v_pa, PyObject *__pyx_v_registries) {
PyObject *__pyx_v_types = 0;
PyObject *__pyx_v_is_dict = 0;
PyObject *__pyx_v_names = 0;
PyObject *__pyx_v_nd_idx = 0;
PyObject *__pyx_v_nd = NULL;
PyObject *__pyx_v_cols = 0;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_codes = 0;
PyObject *__pyx_v_cats = 0;
PyObject *__pyx_v_reg = 0;
PyObject *__pyx_v_shared = 0;
PyObject *__pyx_9genexpr12__pyx_v_t = NULL;
Py_ssize_t __pyx_9genexpr13__pyx_v_i;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._polars_dataframe_hybrid", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_types);
__Pyx_XDECREF(__pyx_v_is_dict);
__Pyx_XDECREF(__pyx_v_names);
__Pyx_XDECREF(__pyx_v_nd_idx);
__Pyx_XDECREF(__pyx_v_nd);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_codes);
__Pyx_XDECREF(__pyx_v_cats);
__Pyx_XDECREF(__pyx_v_reg);
__Pyx_XDECREF(__pyx_v_shared);
__Pyx_XDECREF(__pyx_9genexpr12__pyx_v_t);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3288: object table, object pl, object pa, dict registries):
3289: # SYMBOL (dictionary) columns are built from codes + dict via a `Categories`
3290: # registry (low CPU, no per-row remap); every other column keeps its exact
3291: # `pl.from_arrow` dtype. One shared registry (key -1) serves every column on
3292: # the connection dict — interned once, not per column — and falls back to a
3293: # per-column registry for a column-local dict. `registries` persists across
3294: # batches so a streaming `iter_polars` stitches via one `Categories`.
+3295: cdef list types = table.schema.types
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(1, 3295, __pyx_L1_error) __pyx_v_types = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+3296: cdef list is_dict = [pa.types.is_dictionary(t) for t in types]
{ /* enter inner scope */
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3296, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_v_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not iterable");
__PYX_ERR(1, 3296, __pyx_L5_error)
}
__pyx_t_1 = __pyx_v_types; __Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = 0;
for (;;) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3296, __pyx_L5_error)
#endif
if (__pyx_t_3 >= __pyx_temp) break;
}
__pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_3;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3296, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF_SET(__pyx_9genexpr12__pyx_v_t, __pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3296, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_5 = __pyx_t_6;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_9genexpr12__pyx_v_t};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3296, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_GIVEREF(__pyx_t_4);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_2, __pyx_t_4))) __PYX_ERR(1, 3296, __pyx_L5_error)
__pyx_t_4 = 0;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_9genexpr12__pyx_v_t); __pyx_9genexpr12__pyx_v_t = 0;
goto __pyx_L9_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_9genexpr12__pyx_v_t); __pyx_9genexpr12__pyx_v_t = 0;
goto __pyx_L1_error;
__pyx_L9_exit_scope:;
} /* exit inner scope */
__pyx_v_is_dict = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
+3297: if not any(is_dict):
__pyx_t_1 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_is_dict};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_any, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3297, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 3297, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_9 = (!__pyx_t_8);
if (__pyx_t_9) {
/* … */
}
+3298: return pl.from_arrow(table)
__pyx_t_1 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_table};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3298, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_2;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_2 = 0;
goto __pyx_L0;
+3299: cdef list names = table.column_names
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_column_names); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_2))) __PYX_ERR(1, 3299, __pyx_L1_error) __pyx_v_names = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+3300: cdef list nd_idx = [i for i in range(len(types)) if not is_dict[i]]
{ /* enter inner scope */
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(__pyx_v_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 3300, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_v_types); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3300, __pyx_L1_error)
__pyx_t_10 = __pyx_t_3;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_9genexpr13__pyx_v_i = __pyx_t_11;
__pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_is_dict, __pyx_9genexpr13__pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 3300, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_8 = (!__pyx_t_9);
if (__pyx_t_8) {
__pyx_t_1 = PyLong_FromSsize_t(__pyx_9genexpr13__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3300, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_2, __pyx_t_1))) __PYX_ERR(1, 3300, __pyx_L1_error)
__pyx_t_1 = 0;
}
}
} /* exit inner scope */
__pyx_v_nd_idx = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
+3301: nd = _polars_nonsymbol_frame(table, nd_idx, pl, pa)
__pyx_t_2 = __pyx_f_7questdb_7_client__polars_nonsymbol_frame(__pyx_v_table, __pyx_v_nd_idx, __pyx_v_pl, __pyx_v_pa); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_nd = __pyx_t_2; __pyx_t_2 = 0;
+3302: cdef list cols = []
__pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_cols = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
3303: cdef Py_ssize_t i
3304: cdef object codes, cats, reg
+3305: cdef object shared = registries.get(-1)
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(1, 3305, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_registries, __pyx_mstate_global->__pyx_int_neg_1, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3305, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_shared = __pyx_t_2;
__pyx_t_2 = 0;
+3306: for i in range(len(types)):
if (unlikely(__pyx_v_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 3306, __pyx_L1_error)
}
__pyx_t_3 = __Pyx_PyList_GET_SIZE(__pyx_v_types); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3306, __pyx_L1_error)
__pyx_t_10 = __pyx_t_3;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+3307: if is_dict[i]:
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_is_dict, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 3307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L16; }
+3308: codes, cats = _polars_dict_codes_cats(table.column(i), pl)
__pyx_t_1 = __pyx_v_table;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_4};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_column_2, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_4 = __pyx_f_7questdb_7_client__polars_dict_codes_cats(__pyx_t_2, __pyx_v_pl); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (likely(__pyx_t_4 != Py_None)) {
PyObject* sequence = __pyx_t_4;
Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(1, 3308, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_2);
__pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
__Pyx_INCREF(__pyx_t_1);
#else
__pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3308, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
} else {
__Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3308, __pyx_L1_error)
}
__Pyx_XDECREF_SET(__pyx_v_codes, __pyx_t_2);
__pyx_t_2 = 0;
__Pyx_XDECREF_SET(__pyx_v_cats, __pyx_t_1);
__pyx_t_1 = 0;
+3309: if shared is None:
__pyx_t_8 = (__pyx_v_shared == Py_None);
if (__pyx_t_8) {
/* … */
}
+3310: shared = _PolarsSymbolRegistry(pl)
__pyx_t_1 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_pl};
__pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3310, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_4);
}
__Pyx_DECREF_SET(__pyx_v_shared, ((PyObject *)__pyx_t_4));
__pyx_t_4 = 0;
+3311: registries[-1] = shared
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3311, __pyx_L1_error)
}
if (unlikely((PyDict_SetItem(__pyx_v_registries, __pyx_mstate_global->__pyx_int_neg_1, __pyx_v_shared) < 0))) __PYX_ERR(1, 3311, __pyx_L1_error)
+3312: if shared.accepts(cats):
__pyx_t_1 = __pyx_v_shared;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_cats};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_accepts, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3312, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 3312, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_8) {
/* … */
goto __pyx_L18;
}
+3313: reg = shared
__Pyx_INCREF(__pyx_v_shared); __Pyx_XDECREF_SET(__pyx_v_reg, __pyx_v_shared);
3314: else:
+3315: reg = registries.get(i)
/*else*/ {
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(1, 3315, __pyx_L1_error)
}
__pyx_t_4 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3315, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_registries, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3315, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_reg, __pyx_t_1);
__pyx_t_1 = 0;
+3316: if reg is None:
__pyx_t_8 = (__pyx_v_reg == Py_None);
if (__pyx_t_8) {
/* … */
}
}
__pyx_L18:;
+3317: reg = _PolarsSymbolRegistry(pl)
__pyx_t_4 = NULL;
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_pl};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3317, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_1);
}
__Pyx_DECREF_SET(__pyx_v_reg, ((PyObject *)__pyx_t_1));
__pyx_t_1 = 0;
+3318: registries[i] = reg
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3318, __pyx_L1_error)
}
__pyx_t_1 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3318, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely((PyDict_SetItem(__pyx_v_registries, __pyx_t_1, __pyx_v_reg) < 0))) __PYX_ERR(1, 3318, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3319: cols.append(reg.column(names[i], codes, cats))
__pyx_t_4 = __pyx_v_reg;
__Pyx_INCREF(__pyx_t_4);
if (unlikely(__pyx_v_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3319, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_GetItemInt_List(__pyx_v_names, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3319, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_t_2, __pyx_v_codes, __pyx_v_cats};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_column_2, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3319, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_12 = __Pyx_PyList_Append(__pyx_v_cols, __pyx_t_1); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(1, 3319, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3320: else:
+3321: cols.append(nd.get_column(names[i]))
/*else*/ {
__pyx_t_2 = __pyx_v_nd;
__Pyx_INCREF(__pyx_t_2);
if (unlikely(__pyx_v_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3321, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_GetItemInt_List(__pyx_v_names, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_column, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3321, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_12 = __Pyx_PyList_Append(__pyx_v_cols, __pyx_t_1); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(1, 3321, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
__pyx_L16:;
}
+3322: return pl.DataFrame(cols)
__pyx_t_4 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_cols}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_DataFrame, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
3323:
3324:
+3325: cdef str _polars_fallback_warning(object exc):
static PyObject *__pyx_f_7questdb_7_client__polars_fallback_warning(PyObject *__pyx_v_exc) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._polars_fallback_warning", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3326: return (
+3327: 'The polars Categorical fast path failed '
__pyx_t_4 = 191; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3[3]); #endif __pyx_t_5 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_5 |= __Pyx_PyUnicode_KIND_04(__pyx_t_3[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_3[3]); #endif __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_6); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_6 = 0; goto __pyx_L0;
+3328: f'({type(exc).__name__}: {exc}); the frame was built with '
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_exc)), __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_The_polars_Categorical_fast_path; __pyx_t_3[1] = __pyx_t_2; __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_3[3] = __pyx_t_1; __pyx_t_3[4] = __pyx_mstate_global->__pyx_kp_u_the_frame_was_built_with_polars;
3329: '`polars.from_arrow` instead, which is slower. Please report this '
3330: 'at https://github.com/questdb/py-questdb-client/issues.')
3331:
3332:
+3333: cdef object _polars_hybrid_fallback(object table, object pl, object exc):
static PyObject *__pyx_f_7questdb_7_client__polars_hybrid_fallback(PyObject *__pyx_v_table, PyObject *__pyx_v_pl, PyObject *__pyx_v_exc) {
PyObject *__pyx_v_frame = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._polars_hybrid_fallback", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_frame);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3334: # polars marks the `Categories` API as unstable, so a new release can
3335: # break the hybrid path. `pl.from_arrow` gives the same values, only
3336: # slower, so fall back, but do not hide the failure.
3337: # cdef frames and this module's def entry points are invisible to the
3338: # warnings stack walker, so level 1 is already the user's call.
+3339: frame = pl.from_arrow(table)
__pyx_t_2 = __pyx_v_pl; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_table}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_frame = __pyx_t_1; __pyx_t_1 = 0;
+3340: warnings.warn(_polars_fallback_warning(exc), RuntimeWarning, stacklevel=1)
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_f_7questdb_7_client__polars_fallback_warning(__pyx_v_exc); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_4, ((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), __pyx_mstate_global->__pyx_int_1}; #if CYTHON_VECTORCALL __pyx_t_6 = __pyx_mstate_global->__pyx_tuple[20]; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_INCREF(__pyx_t_6); #else { PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_stacklevel}; __pyx_t_6 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); } #endif __pyx_t_1 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_stacklevel}; __pyx_mstate_global->__pyx_tuple[20] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[20])) __PYX_ERR(1, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[20]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[20]);
+3341: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3342:
3343:
+3344: cdef tuple _polars_frame_with_registry_cats(
static PyObject *__pyx_f_7questdb_7_client__polars_frame_with_registry_cats(PyObject *__pyx_v_frame, PyObject *__pyx_v_table, PyObject *__pyx_v_pl, PyObject *__pyx_v_pa, PyObject *__pyx_v_registries) {
PyObject *__pyx_v_types = 0;
PyObject *__pyx_v_names = 0;
PyObject *__pyx_v_exprs = 0;
Py_ssize_t __pyx_v_i;
struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *__pyx_v_reg = 0;
PyObject *__pyx_v_exc = NULL;
PyObject *__pyx_r = NULL;
__Pyx_INCREF(__pyx_v_frame);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("questdb._client._polars_frame_with_registry_cats", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_types);
__Pyx_XDECREF(__pyx_v_names);
__Pyx_XDECREF(__pyx_v_exprs);
__Pyx_XDECREF((PyObject *)__pyx_v_reg);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XDECREF(__pyx_v_frame);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3345: object frame, object table, object pl, object pa, dict registries):
3346: # Give a `pl.from_arrow` frame the registry `Categories` of the hybrid
3347: # frames that `iter_polars` yielded before it, so that `pl.concat` still
3348: # stitches. Without a registry, every frame is a plain Categorical.
3349: # Returns `(frame, exc)`: `exc` is the cast failure, or None.
3350: cdef list types
3351: cdef list names
+3352: cdef list exprs = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_exprs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
3353: cdef Py_ssize_t i
3354: cdef _PolarsSymbolRegistry reg
+3355: if not registries:
if (__pyx_v_registries == Py_None) __pyx_t_2 = 0;
else
{
Py_ssize_t __pyx_temp = __Pyx_PyDict_GET_SIZE(__pyx_v_registries);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 3355, __pyx_L1_error)
__pyx_t_2 = (__pyx_temp != 0);
}
__pyx_t_3 = (!__pyx_t_2);
if (__pyx_t_3) {
/* … */
}
+3356: return (frame, None)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_frame); __Pyx_GIVEREF(__pyx_v_frame); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_frame) != (0)) __PYX_ERR(1, 3356, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None) != (0)) __PYX_ERR(1, 3356, __pyx_L1_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_1); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+3357: types = table.schema.types
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_4))) __PYX_ERR(1, 3357, __pyx_L1_error) __pyx_v_types = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+3358: names = table.column_names
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_column_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(PyList_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_4))) __PYX_ERR(1, 3358, __pyx_L1_error) __pyx_v_names = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+3359: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L9_try_end;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L1_error;
__pyx_L7_except_return:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
goto __pyx_L0;
__pyx_L9_try_end:;
}
+3360: for i in range(len(types)):
if (unlikely(__pyx_v_types == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 3360, __pyx_L4_error)
}
__pyx_t_8 = __Pyx_PyList_GET_SIZE(__pyx_v_types); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3360, __pyx_L4_error)
__pyx_t_9 = __pyx_t_8;
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
+3361: if pa.types.is_dictionary(types[i]):
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_types); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3361, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __pyx_t_11; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_v_types == Py_None)) { PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable"); __PYX_ERR(1, 3361, __pyx_L4_error) } __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_types, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3361, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_12}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_is_dictionary, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3361, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 3361, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_3) { /* … */ } }
+3362: reg = registries.get(i) or registries.get(-1)
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(1, 3362, __pyx_L4_error)
}
__pyx_t_11 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3362, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyDict_GetItemDefault(__pyx_v_registries, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3362, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 3362, __pyx_L4_error)
if (!__pyx_t_3) {
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
} else {
if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry))))) __PYX_ERR(1, 3362, __pyx_L4_error)
__Pyx_INCREF(__pyx_t_12);
__pyx_t_4 = __pyx_t_12;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L13_bool_binop_done;
}
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(1, 3362, __pyx_L4_error)
}
__pyx_t_12 = __Pyx_PyDict_GetItemDefault(__pyx_v_registries, __pyx_mstate_global->__pyx_int_neg_1, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3362, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsSymbolRegistry))))) __PYX_ERR(1, 3362, __pyx_L4_error)
__Pyx_INCREF(__pyx_t_12);
__pyx_t_4 = __pyx_t_12;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_L13_bool_binop_done:;
__Pyx_XDECREF_SET(__pyx_v_reg, ((struct __pyx_obj_7questdb_7_client__PolarsSymbolRegistry *)__pyx_t_4));
__pyx_t_4 = 0;
+3363: if reg is not None:
__pyx_t_3 = (((PyObject *)__pyx_v_reg) != Py_None);
if (__pyx_t_3) {
/* … */
}
+3364: exprs.append(
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_exprs, __pyx_t_4); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 3364, __pyx_L4_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3365: pl.col(names[i]).cast(pl.Categorical(reg.cats)))
__pyx_t_1 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_1);
if (unlikely(__pyx_v_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3365, __pyx_L4_error)
}
__pyx_t_14 = __Pyx_GetItemInt_List(__pyx_v_names, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3365, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_14};
__pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_col, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3365, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
}
__pyx_t_12 = __pyx_t_11;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_1 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_reg->cats};
__pyx_t_14 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_Categorical, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3365, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_14);
}
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_t_14};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cast, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3365, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
}
+3366: if exprs:
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_exprs);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 3366, __pyx_L4_error)
__pyx_t_3 = (__pyx_temp != 0);
}
if (__pyx_t_3) {
/* … */
}
+3367: frame = frame.with_columns(exprs)
__pyx_t_11 = __pyx_v_frame;
__Pyx_INCREF(__pyx_t_11);
__pyx_t_13 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_v_exprs};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_with_columns, __pyx_callargs+__pyx_t_13, (2-__pyx_t_13) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3367, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
__pyx_t_4 = 0;
+3368: except Exception as exc:
__pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_16) { __Pyx_AddTraceback("questdb._client._polars_frame_with_registry_cats", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_11, &__pyx_t_14) < 0) __PYX_ERR(1, 3368, __pyx_L6_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_t_11); __pyx_v_exc = __pyx_t_11; /*try:*/ { /* … */ /*finally:*/ { __pyx_L22_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_ExceptionSwap(&__pyx_t_22, &__pyx_t_23, &__pyx_t_24); if ( unlikely(__Pyx_GetException(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21) < 0)) __Pyx_ErrFetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __Pyx_XGOTREF(__pyx_t_23); __Pyx_XGOTREF(__pyx_t_24); __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_22); __Pyx_XGIVEREF(__pyx_t_23); __Pyx_XGIVEREF(__pyx_t_24); __Pyx_ExceptionReset(__pyx_t_22, __pyx_t_23, __pyx_t_24); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_ErrRestore(__pyx_t_19, __pyx_t_20, __pyx_t_21); __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L6_except_error; } __pyx_L21_return: { __pyx_t_25 = __pyx_r; __pyx_r = 0; __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; __pyx_r = __pyx_t_25; __pyx_t_25 = 0; goto __pyx_L7_except_return; } } } goto __pyx_L6_except_error;
3369: # The cast uses the `Categories` API that the fallback works
3370: # around, so it can fail the same way. Keep the values, stop
3371: # casting, and let the caller warn: `pl.concat` with the earlier
3372: # frames fails.
+3373: registries.clear()
if (unlikely(__pyx_v_registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "clear");
__PYX_ERR(1, 3373, __pyx_L22_error)
}
__pyx_t_15 = __Pyx_PyDict_Clear(__pyx_v_registries); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(1, 3373, __pyx_L22_error)
+3374: return (frame, exc)
__pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3374, __pyx_L22_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_frame); __Pyx_GIVEREF(__pyx_v_frame); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_frame) != (0)) __PYX_ERR(1, 3374, __pyx_L22_error); __Pyx_INCREF(__pyx_v_exc); __Pyx_GIVEREF(__pyx_v_exc); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_exc) != (0)) __PYX_ERR(1, 3374, __pyx_L22_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_12); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; goto __pyx_L21_return; }
+3375: return (frame, None)
__pyx_t_14 = PyTuple_New(2); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 3375, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_INCREF(__pyx_v_frame); __Pyx_GIVEREF(__pyx_v_frame); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_v_frame) != (0)) __PYX_ERR(1, 3375, __pyx_L1_error); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_14, 1, Py_None) != (0)) __PYX_ERR(1, 3375, __pyx_L1_error); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_14); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_14 = 0; goto __pyx_L0;
3376:
3377:
+3378: cdef class _PolarsBatchIter:
struct __pyx_obj_7questdb_7_client__PolarsBatchIter {
PyObject_HEAD
PyObject *reader;
PyObject *pl;
PyObject *pa;
PyObject *registries;
int use_hybrid;
int hybrid_yielded;
PyObject *pending;
};
3379: """Streaming `polars.DataFrame` per result batch. Holds the per-symbol
3380: `Categories` registries so every batch's Categoricals share one identity
3381: and `pl.concat` stitches cleanly."""
3382: cdef object reader
3383: cdef object pl
3384: cdef object pa
3385: cdef dict registries
3386: cdef bint use_hybrid
3387: cdef bint hybrid_yielded
3388: # A built frame whose warning raised (`-W error`): the next call
3389: # returns it, so that no batch is lost.
3390: cdef object pending
3391:
+3392: def __cinit__(self, _CursorHandle handle, object pl, object pa):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_16_PolarsBatchIter_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_16_PolarsBatchIter_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0;
PyObject *__pyx_v_pl = 0;
PyObject *__pyx_v_pa = 0;
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,&__pyx_mstate_global->__pyx_n_u_pl,&__pyx_mstate_global->__pyx_n_u_pa,0};
PyObject* values[3] = {0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3392, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 3392, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3392, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3392, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 3392, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, i); __PYX_ERR(1, 3392, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3392, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3392, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 3392, __pyx_L3_error)
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)values[0]);
__pyx_v_pl = values[1];
__pyx_v_pa = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 3392, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._PolarsBatchIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle, 1, "handle", 0))) __PYX_ERR(1, 3392, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_16_PolarsBatchIter___cinit__(((struct __pyx_obj_7questdb_7_client__PolarsBatchIter *)__pyx_v_self), __pyx_v_handle, __pyx_v_pl, __pyx_v_pa);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = -1;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__pyx_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_16_PolarsBatchIter___cinit__(struct __pyx_obj_7questdb_7_client__PolarsBatchIter *__pyx_v_self, struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle, PyObject *__pyx_v_pl, PyObject *__pyx_v_pa) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._PolarsBatchIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3393: self.reader = _build_record_batch_reader(handle)
__pyx_t_1 = __pyx_f_7questdb_7_client__build_record_batch_reader(__pyx_v_handle, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3393, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->reader); __Pyx_DECREF(__pyx_v_self->reader); __pyx_v_self->reader = __pyx_t_1; __pyx_t_1 = 0;
+3394: self.pl = pl
__Pyx_INCREF(__pyx_v_pl); __Pyx_GIVEREF(__pyx_v_pl); __Pyx_GOTREF(__pyx_v_self->pl); __Pyx_DECREF(__pyx_v_self->pl); __pyx_v_self->pl = __pyx_v_pl;
+3395: self.pa = pa
__Pyx_INCREF(__pyx_v_pa); __Pyx_GIVEREF(__pyx_v_pa); __Pyx_GOTREF(__pyx_v_self->pa); __Pyx_DECREF(__pyx_v_self->pa); __pyx_v_self->pa = __pyx_v_pa;
+3396: self.registries = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->registries); __Pyx_DECREF(__pyx_v_self->registries); __pyx_v_self->registries = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3397: self.use_hybrid = getattr(pl, 'Categories', None) is not None
__pyx_t_1 = __Pyx_GetAttr3(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_Categories, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_self->use_hybrid = __pyx_t_2;
+3398: self.hybrid_yielded = False
__pyx_v_self->hybrid_yielded = 0;
+3399: self.pending = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->pending); __Pyx_DECREF(__pyx_v_self->pending); __pyx_v_self->pending = Py_None;
3400:
+3401: def __iter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_16_PolarsBatchIter_3__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_16_PolarsBatchIter_3__iter__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_16_PolarsBatchIter_2__iter__(((struct __pyx_obj_7questdb_7_client__PolarsBatchIter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_16_PolarsBatchIter_2__iter__(struct __pyx_obj_7questdb_7_client__PolarsBatchIter *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3402: return self
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_self);
__pyx_r = ((PyObject *)__pyx_v_self);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3403:
+3404: def __next__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_16_PolarsBatchIter_5__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_16_PolarsBatchIter_5__next__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_16_PolarsBatchIter_4__next__(((struct __pyx_obj_7questdb_7_client__PolarsBatchIter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_16_PolarsBatchIter_4__next__(struct __pyx_obj_7questdb_7_client__PolarsBatchIter *__pyx_v_self) {
PyObject *__pyx_v_msgs = 0;
PyObject *__pyx_v_frame = NULL;
PyObject *__pyx_v_batch = NULL;
PyObject *__pyx_v_table = NULL;
PyObject *__pyx_v_exc = NULL;
PyObject *__pyx_v_cast_exc = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._PolarsBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_msgs);
__Pyx_XDECREF(__pyx_v_frame);
__Pyx_XDECREF(__pyx_v_batch);
__Pyx_XDECREF(__pyx_v_table);
__Pyx_XDECREF(__pyx_v_exc);
__Pyx_XDECREF(__pyx_v_cast_exc);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3405: cdef list msgs = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3405, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_msgs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3406: frame = self.pending
__pyx_t_1 = __pyx_v_self->pending;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_frame = __pyx_t_1;
__pyx_t_1 = 0;
+3407: if frame is not None:
__pyx_t_2 = (__pyx_v_frame != Py_None);
if (__pyx_t_2) {
/* … */
}
+3408: self.pending = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->pending); __Pyx_DECREF(__pyx_v_self->pending); __pyx_v_self->pending = Py_None;
+3409: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+3410: batch = next(self.reader)
__pyx_t_1 = __pyx_v_self->reader; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyIter_Next(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_batch = __pyx_t_3; __pyx_t_3 = 0;
+3411: table = self.pa.Table.from_batches([batch])
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_batch); __Pyx_GIVEREF(__pyx_v_batch); if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_batch) != (0)) __PYX_ERR(1, 3411, __pyx_L1_error); __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_5}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_table = __pyx_t_3; __pyx_t_3 = 0;
+3412: if self.use_hybrid:
if (__pyx_v_self->use_hybrid) {
/* … */
goto __pyx_L4;
}
+3413: try:
{
/*try:*/ {
/* … */
}
/* … */
__pyx_L7_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L8_except_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L0;
__pyx_L6_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
}
+3414: frame = _polars_dataframe_hybrid(
__pyx_t_1 = __pyx_f_7questdb_7_client__polars_dataframe_hybrid(__pyx_v_table, __pyx_t_3, __pyx_t_4, ((PyObject*)__pyx_t_5)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3414, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1); __pyx_t_1 = 0;
+3415: table, self.pl, self.pa, self.registries)
__pyx_t_3 = __pyx_v_self->pl;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = __pyx_v_self->pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = __pyx_v_self->registries;
__Pyx_INCREF(__pyx_t_5);
+3416: except Exception as exc:
__pyx_t_10 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_10) { __Pyx_AddTraceback("questdb._client._PolarsBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(1, 3416, __pyx_L7_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_v_exc = __pyx_t_5; /*try:*/ { /* … */ /*finally:*/ { /*normal exit:*/{ __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; goto __pyx_L17; } __pyx_L16_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20); if ( unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __pyx_t_10 = __pyx_lineno; __pyx_t_13 = __pyx_clineno; __pyx_t_14 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_XGIVEREF(__pyx_t_20); __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17); __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_13; __pyx_filename = __pyx_t_14; goto __pyx_L7_except_error; } __pyx_L17:; } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6_exception_handled; } goto __pyx_L7_except_error;
3417: # One warning per iterator: the remaining batches take the
3418: # fallback too, cast to the registries' `Categories`, so
3419: # every yielded frame has the same dtypes.
+3420: self.use_hybrid = False
__pyx_v_self->use_hybrid = 0;
+3421: if not self.hybrid_yielded:
__pyx_t_2 = (!__pyx_v_self->hybrid_yielded);
if (__pyx_t_2) {
/* … */
}
3422: # No yielded frame uses the registries: plain frames
3423: # stitch, and the cast would only cost a string remap.
+3424: self.registries.clear()
if (unlikely(__pyx_v_self->registries == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "clear");
__PYX_ERR(1, 3424, __pyx_L16_error)
}
__pyx_t_11 = __Pyx_PyDict_Clear(__pyx_v_self->registries); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 3424, __pyx_L16_error)
+3425: msgs.append(_polars_fallback_warning(exc))
__pyx_t_3 = __pyx_f_7questdb_7_client__polars_fallback_warning(__pyx_v_exc); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3425, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyList_Append(__pyx_v_msgs, __pyx_t_3); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 3425, __pyx_L16_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3426: frame = self.pl.from_arrow(table)
__pyx_t_12 = __pyx_v_self->pl;
__Pyx_INCREF(__pyx_t_12);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_12, __pyx_v_table};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3426, __pyx_L16_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_3);
__pyx_t_3 = 0;
}
3427: else:
+3428: self.hybrid_yielded = True
/*else:*/ {
__pyx_v_self->hybrid_yielded = 1;
+3429: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L8_except_return;
}
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
3430: else:
+3431: frame = self.pl.from_arrow(table)
/*else*/ {
__pyx_t_5 = __pyx_v_self->pl;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_table};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3431, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_4);
__pyx_t_4 = 0;
}
__pyx_L4:;
+3432: frame, cast_exc = _polars_frame_with_registry_cats(
__pyx_t_3 = __pyx_f_7questdb_7_client__polars_frame_with_registry_cats(__pyx_v_frame, __pyx_v_table, __pyx_t_4, __pyx_t_5, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 3432, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3432, __pyx_L1_error) } __Pyx_DECREF_SET(__pyx_v_frame, __pyx_t_1); __pyx_t_1 = 0; __pyx_v_cast_exc = __pyx_t_5; __pyx_t_5 = 0;
+3433: frame, table, self.pl, self.pa, self.registries)
__pyx_t_4 = __pyx_v_self->pl; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = __pyx_v_self->pa; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = __pyx_v_self->registries; __Pyx_INCREF(__pyx_t_1);
+3434: if cast_exc is not None:
__pyx_t_2 = (__pyx_v_cast_exc != Py_None);
if (__pyx_t_2) {
/* … */
}
+3435: msgs.append(
__pyx_t_11 = __Pyx_PyList_Append(__pyx_v_msgs, __pyx_t_1); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 3435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3436: 'The cast to the Categories of the frames before failed '
__pyx_t_22 = 250;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_22 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[1]) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_21[3]);
#endif
__pyx_t_13 = 0;
#if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH
__pyx_t_13 |= __Pyx_PyUnicode_KIND_04(__pyx_t_21[1]) | __Pyx_PyUnicode_KIND_04(__pyx_t_21[3]);
#endif
__pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_21, 5, __pyx_t_22, __pyx_t_13);
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3437: f'({type(cast_exc).__name__}: {cast_exc}); this frame and '
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_cast_exc)), __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_cast_exc, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_21[0] = __pyx_mstate_global->__pyx_kp_u_The_cast_to_the_Categories_of_th; __pyx_t_21[1] = __pyx_t_5; __pyx_t_21[2] = __pyx_mstate_global->__pyx_kp_u__2; __pyx_t_21[3] = __pyx_t_3; __pyx_t_21[4] = __pyx_mstate_global->__pyx_kp_u_this_frame_and_the_following_on;
3438: 'the following ones have a plain Categorical dtype, so '
3439: '`polars.concat` with the frames before fails. Please '
3440: 'report this at '
3441: 'https://github.com/questdb/py-questdb-client/issues.')
3442: # One warning, after the frame is built: under `-W error` the
3443: # warning raises, and the frame must not be lost with it.
+3444: if msgs:
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_v_msgs);
if (unlikely(((!CYTHON_ASSUME_SAFE_SIZE) && __pyx_temp < 0))) __PYX_ERR(1, 3444, __pyx_L1_error)
__pyx_t_2 = (__pyx_temp != 0);
}
if (__pyx_t_2) {
/* … */
}
+3445: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L30_try_end;
__pyx_L25_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/* … */
__pyx_L27_except_error:;
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_ExceptionReset(__pyx_t_9, __pyx_t_8, __pyx_t_7);
goto __pyx_L1_error;
__pyx_L30_try_end:;
}
+3446: warnings.warn(' '.join(msgs), RuntimeWarning, stacklevel=1)
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__19, __pyx_v_msgs); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_5, ((PyObject *)(((PyTypeObject*)PyExc_RuntimeWarning))), __pyx_mstate_global->__pyx_int_1};
#if CYTHON_VECTORCALL
__pyx_t_12 = __pyx_mstate_global->__pyx_tuple[20];
if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_INCREF(__pyx_t_12);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_stacklevel};
__pyx_t_12 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_12);
}
#endif
__pyx_t_1 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_12);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3446, __pyx_L25_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3447: except BaseException:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_13) { __Pyx_AddTraceback("questdb._client._PolarsBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_12) < 0) __PYX_ERR(1, 3447, __pyx_L27_except_error) __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_12);
+3448: self.pending = frame
__Pyx_INCREF(__pyx_v_frame); __Pyx_GIVEREF(__pyx_v_frame); __Pyx_GOTREF(__pyx_v_self->pending); __Pyx_DECREF(__pyx_v_self->pending); __pyx_v_self->pending = __pyx_v_frame;
+3449: raise
__Pyx_GIVEREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_12); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_12 = 0; __PYX_ERR(1, 3449, __pyx_L27_except_error) } goto __pyx_L27_except_error;
+3450: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3451:
3452:
+3453: cdef class _NumpyBatchIter:
struct __pyx_obj_7questdb_7_client__NumpyBatchIter {
PyObject_HEAD
struct __pyx_obj_7questdb_7_client__CursorHandle *handle;
PyObject *np;
PyObject *pd;
PyObject *col_names;
PyObject *col_kinds;
PyObject *col_scales;
PyObject *col_precision;
PyObject *claim;
PyObject *pinned_meta;
PyObject *pinned_names_b;
int first;
int has_symbol;
int done;
size_t prev_dict_n;
PyObject *symbol_categories;
PyObject *symbol_dtype;
int seen_seq;
int delivered;
};
3454: cdef _CursorHandle handle
3455: cdef object np
3456: cdef object pd
3457: cdef list col_names
3458: cdef list col_kinds
3459: cdef list col_scales
3460: cdef list col_precision
3461: cdef object claim
3462: cdef tuple pinned_meta
3463: cdef list pinned_names_b
3464: cdef bint first
3465: cdef bint has_symbol
3466: cdef bint done
3467: cdef size_t prev_dict_n
3468: cdef list symbol_categories
3469: cdef object symbol_dtype
3470: cdef int seen_seq
3471: cdef bint delivered
3472:
+3473: def __cinit__(self, _CursorHandle handle):
/* Python wrapper */
static int __pyx_pw_7questdb_7_client_15_NumpyBatchIter_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static int __pyx_pw_7questdb_7_client_15_NumpyBatchIter_1__cinit__(PyObject *__pyx_v_self,
#if CYTHON_VECTORCALL_TPNEW
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0;
#if !CYTHON_VECTORCALL_TPNEW
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL_TPNEW
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL_TPNEW(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_handle,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL_TPNEW(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3473, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3473, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 3473, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, i); __PYX_ERR(1, 3473, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL_TPNEW(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3473, __pyx_L3_error)
}
__pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)values[0]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3473, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client._NumpyBatchIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_handle), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle, 1, "handle", 0))) __PYX_ERR(1, 3473, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_15_NumpyBatchIter___cinit__(((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)__pyx_v_self), __pyx_v_handle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = -1;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__pyx_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_7questdb_7_client_15_NumpyBatchIter___cinit__(struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_self, struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle) {
PyObject *__pyx_v_np = NULL;
PyObject *__pyx_v_pd = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client._NumpyBatchIter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_np);
__Pyx_XDECREF(__pyx_v_pd);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3474: import numpy as np
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3474, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_np = __pyx_t_1; __pyx_t_1 = 0;
+3475: import pandas as pd
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pandas_2, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3475, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pd = __pyx_t_1; __pyx_t_1 = 0;
+3476: self.handle = handle
__Pyx_INCREF((PyObject *)__pyx_v_handle); __Pyx_GIVEREF((PyObject *)__pyx_v_handle); __Pyx_GOTREF((PyObject *)__pyx_v_self->handle); __Pyx_DECREF((PyObject *)__pyx_v_self->handle); __pyx_v_self->handle = __pyx_v_handle;
+3477: self.np = np
__Pyx_INCREF(__pyx_v_np); __Pyx_GIVEREF(__pyx_v_np); __Pyx_GOTREF(__pyx_v_self->np); __Pyx_DECREF(__pyx_v_self->np); __pyx_v_self->np = __pyx_v_np;
+3478: self.pd = pd
__Pyx_INCREF(__pyx_v_pd); __Pyx_GIVEREF(__pyx_v_pd); __Pyx_GOTREF(__pyx_v_self->pd); __Pyx_DECREF(__pyx_v_self->pd); __pyx_v_self->pd = __pyx_v_pd;
+3479: self.col_names = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->col_names); __Pyx_DECREF(__pyx_v_self->col_names); __pyx_v_self->col_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3480: self.col_kinds = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->col_kinds); __Pyx_DECREF(__pyx_v_self->col_kinds); __pyx_v_self->col_kinds = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3481: self.col_scales = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->col_scales); __Pyx_DECREF(__pyx_v_self->col_scales); __pyx_v_self->col_scales = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3482: self.col_precision = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->col_precision); __Pyx_DECREF(__pyx_v_self->col_precision); __pyx_v_self->col_precision = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3483: self.claim = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->claim); __Pyx_DECREF(__pyx_v_self->claim); __pyx_v_self->claim = Py_None;
+3484: self.first = True
__pyx_v_self->first = 1;
+3485: self.has_symbol = False
__pyx_v_self->has_symbol = 0;
+3486: self.done = False
__pyx_v_self->done = 0;
+3487: self.prev_dict_n = 0
__pyx_v_self->prev_dict_n = 0;
+3488: self.symbol_categories = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->symbol_categories); __Pyx_DECREF(__pyx_v_self->symbol_categories); __pyx_v_self->symbol_categories = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3489: self.symbol_dtype = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->symbol_dtype); __Pyx_DECREF(__pyx_v_self->symbol_dtype); __pyx_v_self->symbol_dtype = Py_None;
+3490: self.seen_seq = (
__pyx_v_self->seen_seq = __pyx_t_3;
+3491: handle._reset_sequence() if handle is not None else 0)
__pyx_t_4 = (((PyObject *)__pyx_v_handle) != Py_None);
if (__pyx_t_4) {
__pyx_t_5 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_reset_sequence(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3491, __pyx_L1_error)
__pyx_t_3 = __pyx_t_5;
} else {
__pyx_t_3 = 0;
}
+3492: self.delivered = False
__pyx_v_self->delivered = 0;
3493:
+3494: def __iter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_15_NumpyBatchIter_3__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_15_NumpyBatchIter_3__iter__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_15_NumpyBatchIter_2__iter__(((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_15_NumpyBatchIter_2__iter__(struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3495: return self
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_self);
__pyx_r = ((PyObject *)__pyx_v_self);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3496:
+3497: def __next__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_15_NumpyBatchIter_5__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7questdb_7_client_15_NumpyBatchIter_5__next__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_r = __pyx_pf_7questdb_7_client_15_NumpyBatchIter_4__next__(((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_15_NumpyBatchIter_4__next__(struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_self) {
struct qwp_reader_cursor *__pyx_v_cursor;
questdb_error *__pyx_v_err;
struct qwp_reader_batch const *__pyx_v_batch;
struct qwp_reader_symbol_dict __pyx_v_sd;
size_t __pyx_v_row_count;
size_t __pyx_v_n_cols;
PyObject *__pyx_v_batch_chunks = NULL;
PyObject *__pyx_v_batch_masks = NULL;
PyObject *__pyx_v_col_chunks = NULL;
PyObject *__pyx_v_col_masks = NULL;
PyObject *__pyx_v_frame = NULL;
PyObject *__pyx_9genexpr14__pyx_v_c = NULL;
PyObject *__pyx_9genexpr15__pyx_v_m = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_XDECREF(__pyx_t_16);
__Pyx_XDECREF(__pyx_t_19);
__Pyx_XDECREF(__pyx_t_30);
__Pyx_XDECREF(__pyx_t_31);
__Pyx_XDECREF(__pyx_t_32);
__Pyx_XDECREF(__pyx_t_33);
if (!__pyx_error_without_exception) {
__Pyx_AddTraceback("questdb._client._NumpyBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_batch_chunks);
__Pyx_XDECREF(__pyx_v_batch_masks);
__Pyx_XDECREF(__pyx_v_col_chunks);
__Pyx_XDECREF(__pyx_v_col_masks);
__Pyx_XDECREF(__pyx_v_frame);
__Pyx_XDECREF(__pyx_9genexpr14__pyx_v_c);
__Pyx_XDECREF(__pyx_9genexpr15__pyx_v_m);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3498: cdef qwp_reader_cursor* cursor
+3499: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
3500: cdef const qwp_reader_batch* batch
3501: cdef qwp_reader_symbol_dict sd
3502: cdef size_t row_count
3503: cdef size_t n_cols
+3504: if self.done or self.handle is None:
if (!__pyx_v_self->done) {
} else {
__pyx_t_1 = __pyx_v_self->done;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (((PyObject *)__pyx_v_self->handle) == Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+3505: raise StopIteration
__pyx_error_without_exception = 1;
__PYX_ERR(1, 3505, __pyx_L1_error)
+3506: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L11_try_end;
__pyx_L6_error:;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_30); __pyx_t_30 = 0;
__Pyx_XDECREF(__pyx_t_31); __pyx_t_31 = 0;
__Pyx_XDECREF(__pyx_t_32); __pyx_t_32 = 0;
__Pyx_XDECREF(__pyx_t_33); __pyx_t_33 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L8_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L11_try_end:;
}
+3507: with self.handle._lock:
/*with:*/ {
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3507, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = NULL;
__pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3507, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_9))) {
__pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
assert(__pyx_t_8);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
__pyx_t_10 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
__pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_10, (1-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3507, __pyx_L12_error)
__Pyx_GOTREF(__pyx_t_7);
}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
goto __pyx_L21_try_end;
__pyx_L16_error:;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client._NumpyBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(1, 3507, __pyx_L18_except_error)
__Pyx_XGOTREF(__pyx_t_15);
__Pyx_XGOTREF(__pyx_t_9);
__Pyx_XGOTREF(__pyx_t_8);
{
PyObject* __pyx_temp[3] = {__pyx_t_15, __pyx_t_9, __pyx_t_8};
__pyx_t_19 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 3507, __pyx_L18_except_error)
__Pyx_GOTREF(__pyx_t_19);
}
__pyx_t_28 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_19, NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
if (unlikely(!__pyx_t_28)) __PYX_ERR(1, 3507, __pyx_L18_except_error)
__Pyx_GOTREF(__pyx_t_28);
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_28);
__Pyx_DECREF(__pyx_t_28); __pyx_t_28 = 0;
if (__pyx_t_1 < (0)) __PYX_ERR(1, 3507, __pyx_L18_except_error)
__pyx_t_2 = (!__pyx_t_1);
if (unlikely(__pyx_t_2)) {
__Pyx_GIVEREF(__pyx_t_15);
__Pyx_GIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ErrRestoreWithState(__pyx_t_15, __pyx_t_9, __pyx_t_8);
__pyx_t_15 = 0; __pyx_t_9 = 0; __pyx_t_8 = 0;
__PYX_ERR(1, 3507, __pyx_L18_except_error)
}
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L17_exception_handled;
}
__pyx_L18_except_error:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
goto __pyx_L6_error;
__pyx_L17_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_11);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
__pyx_L21_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_6) {
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 3507, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
}
goto __pyx_L15;
}
__pyx_L15:;
}
goto __pyx_L42;
__pyx_L12_error:;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L6_error;
__pyx_L42:;
}
+3508: cursor = self.handle._cursor
__pyx_t_14 = __pyx_v_self->handle->_cursor;
__pyx_v_cursor = __pyx_t_14;
+3509: if cursor == NULL:
__pyx_t_1 = (__pyx_v_cursor == NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3510: raise QuestDBError(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3510, __pyx_L16_error)
__Pyx_GOTREF(__pyx_t_8);
+3511: QuestDBErrorCode.InvalidApiCall, 'cursor is closed')
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3511, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 3511, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_16, __pyx_mstate_global->__pyx_kp_u_cursor_is_closed}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3510, __pyx_L16_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(1, 3510, __pyx_L16_error)
+3512: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L25;
}
__pyx_L25:;
}
}
+3513: batch = qwp_reader_cursor_next_batch(cursor, &err)
__pyx_v_batch = qwp_reader_cursor_next_batch(__pyx_v_cursor, (&__pyx_v_err));
}
+3514: self.handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->handle->__pyx_vtab)->_pin(__pyx_v_self->handle);
+3515: try:
/*try:*/ {
+3516: if self.handle._reset_seq != self.seen_seq:
__pyx_t_1 = (__pyx_v_self->handle->_reset_seq != __pyx_v_self->seen_seq);
if (__pyx_t_1) {
/* … */
}
+3517: if self.delivered:
if (__pyx_v_self->delivered) {
/* … */
}
3518: # The replayed batch-0 would duplicate batches
3519: # already yielded.
+3520: self.done = True
__pyx_v_self->done = 1;
+3521: if err != NULL:
__pyx_t_1 = (__pyx_v_err != NULL);
if (__pyx_t_1) {
/* … */
}
+3522: questdb_error_free(err)
questdb_error_free(__pyx_v_err);
+3523: err = NULL
__pyx_v_err = NULL;
+3524: raise QuestDBError(
__pyx_t_8 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_16, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 3524, __pyx_L27_error)
__Pyx_GOTREF(__pyx_t_16);
+3525: QuestDBErrorCode.FailoverWouldDuplicate,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3525, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_FailoverWouldDuplicate); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3525, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_16))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_16); assert(__pyx_t_8); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_16); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_16, __pyx__function); __pyx_t_10 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_t_15, __pyx_mstate_global->__pyx_kp_u_mid_query_failover_would_duplica}; __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_16, __pyx_callargs+__pyx_t_10, (3-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3524, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(1, 3524, __pyx_L27_error)
3526: 'mid-query failover would duplicate already-'
3527: 'delivered batches; re-issue the query')
3528: # Pre-delivery failover replays batch-0: the replayed
3529: # stream restarts its dictionary at entry 0, so drop
3530: # the accumulated schema and categories.
+3531: self.seen_seq = self.handle._reset_seq
__pyx_t_17 = __pyx_v_self->handle->_reset_seq;
__pyx_v_self->seen_seq = __pyx_t_17;
+3532: self.first = True
__pyx_v_self->first = 1;
+3533: self.claim = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->claim); __Pyx_DECREF(__pyx_v_self->claim); __pyx_v_self->claim = Py_None;
+3534: self.has_symbol = False
__pyx_v_self->has_symbol = 0;
+3535: self.prev_dict_n = 0
__pyx_v_self->prev_dict_n = 0;
+3536: self.symbol_categories = []
__pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3536, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->symbol_categories); __Pyx_DECREF(__pyx_v_self->symbol_categories); __pyx_v_self->symbol_categories = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
+3537: self.symbol_dtype = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_self->symbol_dtype); __Pyx_DECREF(__pyx_v_self->symbol_dtype); __pyx_v_self->symbol_dtype = Py_None;
+3538: if batch == NULL:
__pyx_t_1 = (__pyx_v_batch == NULL);
if (__pyx_t_1) {
/* … */
}
+3539: self.done = True
__pyx_v_self->done = 1;
+3540: if err != NULL:
__pyx_t_1 = (__pyx_v_err != NULL);
if (unlikely(__pyx_t_1)) {
/* … */
}
+3541: raise _reader_err_to_py(err)
__pyx_t_7 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3541, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(1, 3541, __pyx_L27_error)
+3542: _mark_reader_drained(self.handle)
__pyx_t_7 = ((PyObject *)__pyx_v_self->handle);
__Pyx_INCREF(__pyx_t_7);
__pyx_t_18 = __pyx_f_7questdb_7_client__mark_reader_drained(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_7)); if (unlikely(__pyx_t_18 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 3542, __pyx_L27_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3543: raise StopIteration
__Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_StopIteration))), 0, 0, 0); __PYX_ERR(1, 3543, __pyx_L27_error)
+3544: row_count = qwp_reader_batch_row_count(batch)
__pyx_v_row_count = qwp_reader_batch_row_count(__pyx_v_batch);
+3545: if self.first:
if (__pyx_v_self->first) {
/* … */
goto __pyx_L34;
}
+3546: self.pinned_meta = _numpy_extract_meta(batch)
__pyx_t_7 = __pyx_f_7questdb_7_client__numpy_extract_meta(__pyx_v_batch); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3546, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->pinned_meta); __Pyx_DECREF(__pyx_v_self->pinned_meta); __pyx_v_self->pinned_meta = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
+3547: self.pinned_names_b = _numpy_pinned_name_bytes(
__pyx_t_16 = __pyx_f_7questdb_7_client__numpy_pinned_name_bytes(((PyObject*)__pyx_t_7)); if (unlikely(!__pyx_t_16)) __PYX_ERR(1, 3547, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_16); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_16); __Pyx_GOTREF(__pyx_v_self->pinned_names_b); __Pyx_DECREF(__pyx_v_self->pinned_names_b); __pyx_v_self->pinned_names_b = ((PyObject*)__pyx_t_16); __pyx_t_16 = 0;
+3548: self.pinned_meta)
__pyx_t_7 = __pyx_v_self->pinned_meta;
__Pyx_INCREF(__pyx_t_7);
+3549: (self.col_names, self.col_kinds, self.col_scales,
if (!(likely(PyList_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_7))) __PYX_ERR(1, 3549, __pyx_L27_error) if (!(likely(PyList_CheckExact(__pyx_t_15))||((__pyx_t_15) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_15))) __PYX_ERR(1, 3549, __pyx_L27_error) if (!(likely(PyList_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_8))) __PYX_ERR(1, 3549, __pyx_L27_error) if (!(likely(PyList_CheckExact(__pyx_t_9))||((__pyx_t_9) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_9))) __PYX_ERR(1, 3549, __pyx_L27_error) __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_19); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 3549, __pyx_L27_error) __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->col_names); __Pyx_DECREF(__pyx_v_self->col_names); __pyx_v_self->col_names = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_15); __Pyx_GOTREF(__pyx_v_self->col_kinds); __Pyx_DECREF(__pyx_v_self->col_kinds); __pyx_v_self->col_kinds = ((PyObject*)__pyx_t_15); __pyx_t_15 = 0; __Pyx_GIVEREF(__pyx_t_8); __Pyx_GOTREF(__pyx_v_self->col_scales); __Pyx_DECREF(__pyx_v_self->col_scales); __pyx_v_self->col_scales = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
+3550: self.col_precision, self.has_symbol) = \
__Pyx_GIVEREF(__pyx_t_9); __Pyx_GOTREF(__pyx_v_self->col_precision); __Pyx_DECREF(__pyx_v_self->col_precision); __pyx_v_self->col_precision = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0; __pyx_v_self->has_symbol = __pyx_t_1;
+3551: self.pinned_meta
__pyx_t_16 = __pyx_v_self->pinned_meta;
__Pyx_INCREF(__pyx_t_16);
if (likely(__pyx_t_16 != Py_None)) {
PyObject* sequence = __pyx_t_16;
Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence);
if (unlikely(size != 5)) {
if (size > 5) __Pyx_RaiseTooManyValuesError(5);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(1, 3549, __pyx_L27_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_7 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_7);
__pyx_t_15 = PyTuple_GET_ITEM(sequence, 1);
__Pyx_INCREF(__pyx_t_15);
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 2);
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 3);
__Pyx_INCREF(__pyx_t_9);
__pyx_t_19 = PyTuple_GET_ITEM(sequence, 4);
__Pyx_INCREF(__pyx_t_19);
#else
{
Py_ssize_t i;
PyObject** temps[5] = {&__pyx_t_7,&__pyx_t_15,&__pyx_t_8,&__pyx_t_9,&__pyx_t_19};
for (i=0; i < 5; i++) {
PyObject* item = __Pyx_PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(1, 3549, __pyx_L27_error)
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
}
#endif
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
} else {
__Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3549, __pyx_L27_error)
}
+3552: self.claim = _numpy_roundtrip_claim(
__pyx_t_15 = __pyx_f_7questdb_7_client__numpy_roundtrip_claim(((PyObject*)__pyx_t_16), ((PyObject*)__pyx_t_19), ((PyObject*)__pyx_t_9), ((PyObject*)__pyx_t_8)); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3552, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_15); __Pyx_GOTREF(__pyx_v_self->claim); __Pyx_DECREF(__pyx_v_self->claim); __pyx_v_self->claim = __pyx_t_15; __pyx_t_15 = 0;
+3553: self.col_names, self.col_kinds,
__pyx_t_16 = __pyx_v_self->col_names;
__Pyx_INCREF(__pyx_t_16);
__pyx_t_19 = __pyx_v_self->col_kinds;
__Pyx_INCREF(__pyx_t_19);
+3554: self.col_scales, self.col_precision)
__pyx_t_9 = __pyx_v_self->col_scales;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_8 = __pyx_v_self->col_precision;
__Pyx_INCREF(__pyx_t_8);
+3555: self.first = False
__pyx_v_self->first = 0;
3556: else:
+3557: _numpy_check_meta_pinned(
/*else*/ {
/* … */
__pyx_t_9 = __pyx_f_7questdb_7_client__numpy_check_meta_pinned(((PyObject*)__pyx_t_15), ((PyObject*)__pyx_t_8), __pyx_v_batch); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3557, __pyx_L27_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__pyx_L34:;
+3558: self.pinned_meta, self.pinned_names_b, batch)
__pyx_t_15 = __pyx_v_self->pinned_meta;
__Pyx_INCREF(__pyx_t_15);
__pyx_t_8 = __pyx_v_self->pinned_names_b;
__Pyx_INCREF(__pyx_t_8);
+3559: n_cols = <size_t>len(self.col_names)
__pyx_t_9 = __pyx_v_self->col_names;
__Pyx_INCREF(__pyx_t_9);
if (unlikely(__pyx_t_9 == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 3559, __pyx_L27_error)
}
__pyx_t_20 = __Pyx_PyList_GET_SIZE(__pyx_t_9); if (unlikely(__pyx_t_20 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3559, __pyx_L27_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_n_cols = ((size_t)__pyx_t_20);
+3560: if self.has_symbol:
if (__pyx_v_self->has_symbol) {
/* … */
}
+3561: _reader_check(
__pyx_t_17 = __pyx_f_7questdb_7_client__reader_check(qwp_reader_batch_symbol_dict(__pyx_v_batch, (&__pyx_v_sd), (&__pyx_v_err)), (&__pyx_v_err), __pyx_mstate_global->__pyx_n_u_qwp_reader_batch_symbol_dict); if (unlikely(__pyx_t_17 == ((int)-1))) __PYX_ERR(1, 3561, __pyx_L27_error)
3562: qwp_reader_batch_symbol_dict(batch, &sd, &err),
3563: &err, 'qwp_reader_batch_symbol_dict')
+3564: if sd.entry_count > self.prev_dict_n:
__pyx_t_1 = (__pyx_v_sd.entry_count > __pyx_v_self->prev_dict_n);
if (__pyx_t_1) {
/* … */
}
+3565: _symbol_categories_extend(
__pyx_f_7questdb_7_client__symbol_categories_extend(((PyObject*)__pyx_t_9), (&__pyx_v_sd), __pyx_v_self->prev_dict_n); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3565, __pyx_L27_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3566: self.symbol_categories, &sd,
__pyx_t_9 = __pyx_v_self->symbol_categories;
__Pyx_INCREF(__pyx_t_9);
3567: self.prev_dict_n)
+3568: self.symbol_dtype = self.pd.CategoricalDtype(
__pyx_t_8 = __pyx_v_self->pd;
__Pyx_INCREF(__pyx_t_8);
/* … */
__Pyx_GIVEREF(__pyx_t_9);
__Pyx_GOTREF(__pyx_v_self->symbol_dtype);
__Pyx_DECREF(__pyx_v_self->symbol_dtype);
__pyx_v_self->symbol_dtype = __pyx_t_9;
__pyx_t_9 = 0;
+3569: self.symbol_categories)
__pyx_t_10 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_self->symbol_categories};
__pyx_t_9 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_CategoricalDtype, __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3568, __pyx_L27_error)
__Pyx_GOTREF(__pyx_t_9);
}
+3570: self.prev_dict_n = sd.entry_count
__pyx_t_10 = __pyx_v_sd.entry_count;
__pyx_v_self->prev_dict_n = __pyx_t_10;
+3571: batch_chunks, batch_masks = _numpy_batch_columns(
__pyx_t_15 = __pyx_f_7questdb_7_client__numpy_batch_columns(__pyx_v_batch, ((PyObject*)__pyx_t_9), __pyx_v_n_cols, __pyx_v_row_count, __pyx_t_8); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3571, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (likely(__pyx_t_15 != Py_None)) { PyObject* sequence = __pyx_t_15; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 3571, __pyx_L27_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3571, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3571, __pyx_L27_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 3571, __pyx_L27_error) } __pyx_v_batch_chunks = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_batch_masks = __pyx_t_9; __pyx_t_9 = 0; }
+3572: batch, self.col_kinds, n_cols, row_count, self.np)
__pyx_t_9 = __pyx_v_self->col_kinds;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_8 = __pyx_v_self->np;
__Pyx_INCREF(__pyx_t_8);
3573: finally:
+3574: self.handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->handle->__pyx_vtab)->_unpin(__pyx_v_self->handle);
goto __pyx_L28;
}
__pyx_L27_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
__Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_ExceptionSwap(&__pyx_t_26, &__pyx_t_27, &__pyx_t_28);
if ( unlikely(__Pyx_GetException(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25) < 0)) __Pyx_ErrFetch(&__pyx_t_23, &__pyx_t_24, &__pyx_t_25);
__Pyx_XGOTREF(__pyx_t_23);
__Pyx_XGOTREF(__pyx_t_24);
__Pyx_XGOTREF(__pyx_t_25);
__Pyx_XGOTREF(__pyx_t_26);
__Pyx_XGOTREF(__pyx_t_27);
__Pyx_XGOTREF(__pyx_t_28);
__pyx_t_17 = __pyx_lineno; __pyx_t_21 = __pyx_clineno; __pyx_t_22 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->handle->__pyx_vtab)->_unpin(__pyx_v_self->handle);
}
__Pyx_XGIVEREF(__pyx_t_26);
__Pyx_XGIVEREF(__pyx_t_27);
__Pyx_XGIVEREF(__pyx_t_28);
__Pyx_ExceptionReset(__pyx_t_26, __pyx_t_27, __pyx_t_28);
__Pyx_XGIVEREF(__pyx_t_23);
__Pyx_XGIVEREF(__pyx_t_24);
__Pyx_XGIVEREF(__pyx_t_25);
__Pyx_ErrRestore(__pyx_t_23, __pyx_t_24, __pyx_t_25);
__pyx_t_23 = 0; __pyx_t_24 = 0; __pyx_t_25 = 0; __pyx_t_26 = 0; __pyx_t_27 = 0; __pyx_t_28 = 0;
__pyx_lineno = __pyx_t_17; __pyx_clineno = __pyx_t_21; __pyx_filename = __pyx_t_22;
goto __pyx_L16_error;
}
__pyx_L28:;
}
3575: # Assembly needs no cursor state, so it runs off the lock —
3576: # but inside the try, so a failure here ends the iterator and
3577: # frees the cursor like every other error path. Resuming
3578: # after it would step onto a consumed batch carrying a
3579: # half-built schema.
+3580: col_chunks = [[c] for c in batch_chunks]
{ /* enter inner scope */
__pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3580, __pyx_L45_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(!__pyx_v_batch_chunks)) { __Pyx_RaiseUnboundLocalError("batch_chunks"); __PYX_ERR(1, 3580, __pyx_L45_error) }
if (likely(PyList_CheckExact(__pyx_v_batch_chunks)) || PyTuple_CheckExact(__pyx_v_batch_chunks)) {
__pyx_t_9 = __pyx_v_batch_chunks; __Pyx_INCREF(__pyx_t_9);
__pyx_t_20 = 0;
__pyx_t_29 = NULL;
} else {
__pyx_t_20 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_batch_chunks); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3580, __pyx_L45_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_29 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_29)) __PYX_ERR(1, 3580, __pyx_L45_error)
}
for (;;) {
if (likely(!__pyx_t_29)) {
if (likely(PyList_CheckExact(__pyx_t_9))) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3580, __pyx_L45_error)
#endif
if (__pyx_t_20 >= __pyx_temp) break;
}
__pyx_t_15 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_9, __pyx_t_20, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_20;
} else {
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3580, __pyx_L45_error)
#endif
if (__pyx_t_20 >= __pyx_temp) break;
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_15 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_20));
#else
__pyx_t_15 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_20);
#endif
++__pyx_t_20;
}
if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3580, __pyx_L45_error)
} else {
__pyx_t_15 = __pyx_t_29(__pyx_t_9);
if (unlikely(!__pyx_t_15)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 3580, __pyx_L45_error)
PyErr_Clear();
}
break;
}
}
__Pyx_GOTREF(__pyx_t_15);
__Pyx_XDECREF_SET(__pyx_9genexpr14__pyx_v_c, __pyx_t_15);
__pyx_t_15 = 0;
__pyx_t_15 = PyList_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3580, __pyx_L45_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_INCREF(__pyx_9genexpr14__pyx_v_c);
__Pyx_GIVEREF(__pyx_9genexpr14__pyx_v_c);
if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_9genexpr14__pyx_v_c) != (0)) __PYX_ERR(1, 3580, __pyx_L45_error);
__Pyx_GIVEREF(__pyx_t_15);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_8, __pyx_t_15))) __PYX_ERR(1, 3580, __pyx_L45_error)
__pyx_t_15 = 0;
}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_9genexpr14__pyx_v_c); __pyx_9genexpr14__pyx_v_c = 0;
goto __pyx_L49_exit_scope;
__pyx_L45_error:;
__Pyx_XDECREF(__pyx_9genexpr14__pyx_v_c); __pyx_9genexpr14__pyx_v_c = 0;
goto __pyx_L6_error;
__pyx_L49_exit_scope:;
} /* exit inner scope */
__pyx_v_col_chunks = ((PyObject*)__pyx_t_8);
__pyx_t_8 = 0;
+3581: col_masks = [[m] for m in batch_masks]
{ /* enter inner scope */
__pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3581, __pyx_L52_error)
__Pyx_GOTREF(__pyx_t_8);
if (unlikely(!__pyx_v_batch_masks)) { __Pyx_RaiseUnboundLocalError("batch_masks"); __PYX_ERR(1, 3581, __pyx_L52_error) }
if (likely(PyList_CheckExact(__pyx_v_batch_masks)) || PyTuple_CheckExact(__pyx_v_batch_masks)) {
__pyx_t_9 = __pyx_v_batch_masks; __Pyx_INCREF(__pyx_t_9);
__pyx_t_20 = 0;
__pyx_t_29 = NULL;
} else {
__pyx_t_20 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_batch_masks); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3581, __pyx_L52_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_29 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_9); if (unlikely(!__pyx_t_29)) __PYX_ERR(1, 3581, __pyx_L52_error)
}
for (;;) {
if (likely(!__pyx_t_29)) {
if (likely(PyList_CheckExact(__pyx_t_9))) {
{
Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_9);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3581, __pyx_L52_error)
#endif
if (__pyx_t_20 >= __pyx_temp) break;
}
__pyx_t_15 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_9, __pyx_t_20, __Pyx_ReferenceSharing_OwnStrongReference);
++__pyx_t_20;
} else {
{
Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_9);
#if !CYTHON_ASSUME_SAFE_SIZE
if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 3581, __pyx_L52_error)
#endif
if (__pyx_t_20 >= __pyx_temp) break;
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_15 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_20));
#else
__pyx_t_15 = __Pyx_PySequence_ITEM(__pyx_t_9, __pyx_t_20);
#endif
++__pyx_t_20;
}
if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3581, __pyx_L52_error)
} else {
__pyx_t_15 = __pyx_t_29(__pyx_t_9);
if (unlikely(!__pyx_t_15)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 3581, __pyx_L52_error)
PyErr_Clear();
}
break;
}
}
__Pyx_GOTREF(__pyx_t_15);
__Pyx_XDECREF_SET(__pyx_9genexpr15__pyx_v_m, __pyx_t_15);
__pyx_t_15 = 0;
__pyx_t_15 = PyList_New(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 3581, __pyx_L52_error)
__Pyx_GOTREF(__pyx_t_15);
__Pyx_INCREF(__pyx_9genexpr15__pyx_v_m);
__Pyx_GIVEREF(__pyx_9genexpr15__pyx_v_m);
if (__Pyx_PyList_SET_ITEM(__pyx_t_15, 0, __pyx_9genexpr15__pyx_v_m) != (0)) __PYX_ERR(1, 3581, __pyx_L52_error);
__Pyx_GIVEREF(__pyx_t_15);
if (unlikely(__Pyx_ListComp_AppendAndDecref(__pyx_t_8, __pyx_t_15))) __PYX_ERR(1, 3581, __pyx_L52_error)
__pyx_t_15 = 0;
}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_9genexpr15__pyx_v_m); __pyx_9genexpr15__pyx_v_m = 0;
goto __pyx_L56_exit_scope;
__pyx_L52_error:;
__Pyx_XDECREF(__pyx_9genexpr15__pyx_v_m); __pyx_9genexpr15__pyx_v_m = 0;
goto __pyx_L6_error;
__pyx_L56_exit_scope:;
} /* exit inner scope */
__pyx_v_col_masks = ((PyObject*)__pyx_t_8);
__pyx_t_8 = 0;
+3582: frame = _numpy_assemble_frame(
__pyx_t_34.__pyx_n = 2;
__pyx_t_34.symbol_dtype = __pyx_t_31;
__pyx_t_34.claim = __pyx_t_32;
__pyx_t_33 = __pyx_f_7questdb_7_client__numpy_assemble_frame(((PyObject*)__pyx_t_8), ((PyObject*)__pyx_t_9), ((PyObject*)__pyx_t_15), ((PyObject*)__pyx_t_19), __pyx_v_col_chunks, ((PyObject*)__pyx_t_16), __pyx_t_7, __pyx_t_30, __pyx_v_col_masks, &__pyx_t_34); if (unlikely(!__pyx_t_33)) __PYX_ERR(1, 3582, __pyx_L6_error)
__Pyx_GOTREF(__pyx_t_33);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_30); __pyx_t_30 = 0;
__Pyx_DECREF(__pyx_t_31); __pyx_t_31 = 0;
__Pyx_DECREF(__pyx_t_32); __pyx_t_32 = 0;
__pyx_v_frame = __pyx_t_33;
__pyx_t_33 = 0;
+3583: self.col_names, self.col_kinds, self.col_scales,
__pyx_t_8 = __pyx_v_self->col_names;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = __pyx_v_self->col_kinds;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_15 = __pyx_v_self->col_scales;
__Pyx_INCREF(__pyx_t_15);
+3584: self.col_precision, col_chunks, self.symbol_categories,
__pyx_t_19 = __pyx_v_self->col_precision;
__Pyx_INCREF(__pyx_t_19);
__pyx_t_16 = __pyx_v_self->symbol_categories;
__Pyx_INCREF(__pyx_t_16);
+3585: self.np, self.pd, col_masks, symbol_dtype=self.symbol_dtype,
__pyx_t_7 = __pyx_v_self->np;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_30 = __pyx_v_self->pd;
__Pyx_INCREF(__pyx_t_30);
__pyx_t_31 = __pyx_v_self->symbol_dtype;
__Pyx_INCREF(__pyx_t_31);
+3586: claim=self.claim)
__pyx_t_32 = __pyx_v_self->claim;
__Pyx_INCREF(__pyx_t_32);
+3587: except:
/*except:*/ {
__Pyx_AddTraceback("questdb._client._NumpyBatchIter.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_33, &__pyx_t_32, &__pyx_t_31) < 0) __PYX_ERR(1, 3587, __pyx_L8_except_error)
__Pyx_XGOTREF(__pyx_t_33);
__Pyx_XGOTREF(__pyx_t_32);
__Pyx_XGOTREF(__pyx_t_31);
+3588: self.done = True
__pyx_v_self->done = 1;
+3589: self.handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->handle->__pyx_vtab)->_free(__pyx_v_self->handle);
+3590: raise
__Pyx_GIVEREF(__pyx_t_33); __Pyx_GIVEREF(__pyx_t_32); __Pyx_XGIVEREF(__pyx_t_31); __Pyx_ErrRestoreWithState(__pyx_t_33, __pyx_t_32, __pyx_t_31); __pyx_t_33 = 0; __pyx_t_32 = 0; __pyx_t_31 = 0; __PYX_ERR(1, 3590, __pyx_L8_except_error) }
+3591: self.delivered = True
__pyx_v_self->delivered = 1;
+3592: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3593:
+3594: def __dealloc__(self):
/* Python wrapper */
static void __pyx_pw_7questdb_7_client_15_NumpyBatchIter_7__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7questdb_7_client_15_NumpyBatchIter_7__dealloc__(PyObject *__pyx_v_self) {
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
__pyx_pf_7questdb_7_client_15_NumpyBatchIter_6__dealloc__(((struct __pyx_obj_7questdb_7_client__NumpyBatchIter *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
}
static void __pyx_pf_7questdb_7_client_15_NumpyBatchIter_6__dealloc__(struct __pyx_obj_7questdb_7_client__NumpyBatchIter *__pyx_v_self) {
/* … */
/* function exit code */
}
+3595: if not self.done and self.handle is not None:
__pyx_t_2 = (!__pyx_v_self->done);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (((PyObject *)__pyx_v_self->handle) != Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+3596: self.handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_self->handle->__pyx_vtab)->_free(__pyx_v_self->handle);
3597:
3598:
+3599: cdef bytes _ARROW_MD_COLUMN_TYPE = b'questdb.column_type'
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_questdb_column_type); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__ARROW_MD_COLUMN_TYPE); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__ARROW_MD_COLUMN_TYPE, __pyx_mstate_global->__pyx_kp_b_questdb_column_type); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_b_questdb_column_type);
+3600: cdef bytes _ARROW_MD_GEOHASH_BITS = b'questdb.geohash_bits'
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_b_questdb_geohash_bits); __Pyx_XGOTREF(__pyx_v_7questdb_7_client__ARROW_MD_GEOHASH_BITS); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__ARROW_MD_GEOHASH_BITS, __pyx_mstate_global->__pyx_kp_b_questdb_geohash_bits); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_b_questdb_geohash_bits);
3601:
3602:
3603: # The Rust egress spells a few kinds differently on the Arrow field than
3604: # the QWP reader reports them, so map them onto the `_KIND_NAMES`
3605: # vocabulary: `df.attrs['questdb']` then means the same thing whichever
3606: # backend built the frame.
3607: cdef dict _ARROW_KIND_ALIASES = {
+3608: 'timestamp_nanos': 'timestamp_ns',
__pyx_t_17 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_timestamp_nanos, __pyx_mstate_global->__pyx_n_u_timestamp_ns) < (0)) __PYX_ERR(1, 3608, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_decimal64, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 3608, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_decimal128, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 3608, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_decimal256, __pyx_mstate_global->__pyx_n_u_decimal) < (0)) __PYX_ERR(1, 3608, __pyx_L1_error) __Pyx_XGOTREF(__pyx_v_7questdb_7_client__ARROW_KIND_ALIASES); __Pyx_DECREF_SET(__pyx_v_7questdb_7_client__ARROW_KIND_ALIASES, ((PyObject*)__pyx_t_17)); __Pyx_GIVEREF(__pyx_t_17); __pyx_t_17 = 0;
3609: 'decimal64': 'decimal',
3610: 'decimal128': 'decimal',
3611: 'decimal256': 'decimal',
3612: }
3613:
3614:
+3615: cdef object _arrow_field_roundtrip_meta(object field):
static PyObject *__pyx_f_7questdb_7_client__arrow_field_roundtrip_meta(PyObject *__pyx_v_field) {
PyObject *__pyx_v_md = 0;
PyObject *__pyx_v_raw = 0;
PyObject *__pyx_v_bits = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_entry = 0;
PyObject *__pyx_v_kind = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("questdb._client._arrow_field_roundtrip_meta", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_md);
__Pyx_XDECREF(__pyx_v_raw);
__Pyx_XDECREF(__pyx_v_bits);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_v_kind);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3616: """One `df.attrs['questdb']['columns']` entry built from an Arrow
3617: field's QuestDB metadata, or None where the field claims no kind."""
+3618: cdef object md = field.metadata
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_md = __pyx_t_1; __pyx_t_1 = 0;
3619: cdef object raw
3620: cdef object bits
3621: cdef object scale
3622: cdef dict entry
+3623: if not md:
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_md); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 3623, __pyx_L1_error) __pyx_t_3 = (!__pyx_t_2); if (__pyx_t_3) { /* … */ }
+3624: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+3625: raw = md.get(_ARROW_MD_COLUMN_TYPE)
__pyx_t_4 = __pyx_v_md; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_7questdb_7_client__ARROW_MD_COLUMN_TYPE}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_raw = __pyx_t_1; __pyx_t_1 = 0;
+3626: if raw is None:
__pyx_t_3 = (__pyx_v_raw == Py_None);
if (__pyx_t_3) {
/* … */
}
+3627: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+3628: kind = raw.decode('utf-8', 'replace')
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_raw, __pyx_mstate_global->__pyx_n_u_decode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[5], NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_kind = __pyx_t_4; __pyx_t_4 = 0;
+3629: kind = _ARROW_KIND_ALIASES.get(kind, kind)
if (unlikely(__pyx_v_7questdb_7_client__ARROW_KIND_ALIASES == Py_None)) {
PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "get");
__PYX_ERR(1, 3629, __pyx_L1_error)
}
__pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_7questdb_7_client__ARROW_KIND_ALIASES, __pyx_v_kind, __pyx_v_kind); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3629, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_kind, __pyx_t_4);
__pyx_t_4 = 0;
+3630: entry = {'kind': kind}
__pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_kind, __pyx_v_kind) < (0)) __PYX_ERR(1, 3630, __pyx_L1_error) __pyx_v_entry = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0;
+3631: if kind == 'geohash':
__pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_geohash_2, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 3631, __pyx_L1_error) if (__pyx_t_3) { /* … */ goto __pyx_L5; }
+3632: bits = md.get(_ARROW_MD_GEOHASH_BITS)
__pyx_t_1 = __pyx_v_md;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_7questdb_7_client__ARROW_MD_GEOHASH_BITS};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3632, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
__pyx_v_bits = __pyx_t_4;
__pyx_t_4 = 0;
+3633: if bits is not None:
__pyx_t_3 = (__pyx_v_bits != Py_None);
if (__pyx_t_3) {
/* … */
}
+3634: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L12_try_end;
__pyx_L7_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L9_except_error:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L8_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
__pyx_L12_try_end:;
}
+3635: entry['precision_bits'] = int(bits)
__pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_bits); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3635, __pyx_L7_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely((PyDict_SetItem(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_precision_bits, __pyx_t_4) < 0))) __PYX_ERR(1, 3635, __pyx_L7_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3636: except ValueError:
__pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ValueError)))); if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0); goto __pyx_L8_exception_handled; } goto __pyx_L9_except_error;
3637: pass
+3638: elif kind == 'decimal':
__pyx_t_3 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_decimal, Py_EQ); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 3638, __pyx_L1_error) if (__pyx_t_3) { /* … */ } __pyx_L5:;
+3639: scale = getattr(field.type, 'scale', None)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_field, __pyx_mstate_global->__pyx_n_u_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_GetAttr3(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_scale, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_scale = __pyx_t_1; __pyx_t_1 = 0;
+3640: if scale is not None:
__pyx_t_3 = (__pyx_v_scale != Py_None);
if (__pyx_t_3) {
/* … */
}
+3641: entry['scale'] = scale
if (unlikely((PyDict_SetItem(__pyx_v_entry, __pyx_mstate_global->__pyx_n_u_scale, __pyx_v_scale) < 0))) __PYX_ERR(1, 3641, __pyx_L1_error)
+3642: return entry
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_entry);
__pyx_r = __pyx_v_entry;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3643:
3644:
+3645: cdef dict _arrow_roundtrip_columns_meta(object schema):
static PyObject *__pyx_f_7questdb_7_client__arrow_roundtrip_columns_meta(PyObject *__pyx_v_schema) {
PyObject *__pyx_v_columns_meta = 0;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_entry = 0;
PyObject *__pyx_v_names = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._arrow_roundtrip_columns_meta", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_columns_meta);
__Pyx_XDECREF(__pyx_v_entry);
__Pyx_XDECREF(__pyx_v_names);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3646: """The `columns` map of `df.attrs['questdb']`, read off the Arrow
3647: schema's QuestDB field metadata."""
+3648: cdef dict columns_meta = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_columns_meta = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
3649: cdef Py_ssize_t i
3650: cdef object entry
3651: # `schema.names` rebuilds the list and decodes every field name on
3652: # each read, so it is read once. Every column of a QuestDB result
3653: # carries type metadata, which made the old per-column read
3654: # quadratic in the column count and `iter_pandas` paid it per batch.
+3655: cdef list names = schema.names
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_schema, __pyx_mstate_global->__pyx_n_u_names); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("list", __pyx_t_1))) __PYX_ERR(1, 3655, __pyx_L1_error) __pyx_v_names = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3656: for i in range(len(names)):
if (unlikely(__pyx_v_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type \047NoneType\047 has no len()");
__PYX_ERR(1, 3656, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyList_GET_SIZE(__pyx_v_names); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 3656, __pyx_L1_error)
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+3657: entry = _arrow_field_roundtrip_meta(schema.field(i))
__pyx_t_5 = __pyx_v_schema;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_6 = PyLong_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3657, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_field, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3657, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_6 = __pyx_f_7questdb_7_client__arrow_field_roundtrip_meta(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3657, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_6);
__pyx_t_6 = 0;
+3658: if entry is not None:
__pyx_t_8 = (__pyx_v_entry != Py_None);
if (__pyx_t_8) {
/* … */
}
}
+3659: columns_meta[names[i]] = entry
if (unlikely(__pyx_v_names == Py_None)) {
PyErr_SetString(PyExc_TypeError, "\047NoneType\047 object is not subscriptable");
__PYX_ERR(1, 3659, __pyx_L1_error)
}
__pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_names, __pyx_v_i, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3659, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely((PyDict_SetItem(__pyx_v_columns_meta, __pyx_t_6, __pyx_v_entry) < 0))) __PYX_ERR(1, 3659, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+3660: return columns_meta
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_columns_meta);
__pyx_r = __pyx_v_columns_meta;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3661:
3662:
+3663: cdef object _arrow_roundtrip_claim(object schema):
static PyObject *__pyx_f_7questdb_7_client__arrow_roundtrip_claim(PyObject *__pyx_v_schema) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("questdb._client._arrow_roundtrip_claim", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3664: """The ``df.attrs['questdb']`` claim for an Arrow schema.
3665:
3666: One schema covers every batch of a stream, and the claim declines to
3667: be copied and cannot be edited, so a streaming read builds it once
3668: and hands the same claim to every batch it yields.
3669: """
+3670: return _RoundtripClaim(
__pyx_t_2 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_RoundtripClaim); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3);
+3671: {'version': _ROUNDTRIP_META_VERSION,
__pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyLong_From_int(__pyx_v_7questdb_7_client__ROUNDTRIP_META_VERSION); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_version, __pyx_t_5) < (0)) __PYX_ERR(1, 3671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3672: 'columns': _arrow_roundtrip_columns_meta(schema)})
__pyx_t_5 = __pyx_f_7questdb_7_client__arrow_roundtrip_columns_meta(__pyx_v_schema); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_columns, __pyx_t_5) < (0)) __PYX_ERR(1, 3671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_6 = 0; } #endif { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
3673:
3674:
+3675: cdef object _attach_arrow_roundtrip_attrs(object frame, object schema):
static PyObject *__pyx_f_7questdb_7_client__attach_arrow_roundtrip_attrs(PyObject *__pyx_v_frame, PyObject *__pyx_v_schema) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client._attach_arrow_roundtrip_attrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3676: """Carry the per-column QuestDB kinds into `df.attrs['questdb']`,
3677: matching what the native numpy path attaches.
3678:
3679: The kind claim rides on the Arrow *field*, while a pandas dtype holds
3680: only the *type*, so `Table.to_pandas` drops it. `attrs` is the
3681: pandas-level carrier `QuestDB.dataframe()` reads back to restore
3682: IPV4 / CHAR / GEOHASH / UUID / LONG256 columns, which are otherwise
3683: indistinguishable from their storage types on the way back in.
3684: """
+3685: frame.attrs['questdb'] = _arrow_roundtrip_claim(schema)
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_roundtrip_claim(__pyx_v_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_frame, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely((PyObject_SetItem(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_questdb, __pyx_t_1) < 0))) __PYX_ERR(1, 3685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3686: return frame
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_frame);
__pyx_r = __pyx_v_frame;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3687:
3688:
+3689: def _debug_arrow_roundtrip_columns_meta(schema):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_14_debug_arrow_roundtrip_columns_meta(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_13_debug_arrow_roundtrip_columns_meta, "Internal: the ``df.attrs[\047questdb\047][\047columns\047]`` map that the\n pyarrow-backed ``to_pandas`` / ``iter_pandas`` attach for a\n ``pyarrow.Schema``. Lets the mapping be tested without a server.\n\n Not part of the public API.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_14_debug_arrow_roundtrip_columns_meta = {"_debug_arrow_roundtrip_columns_meta", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_14_debug_arrow_roundtrip_columns_meta, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_13_debug_arrow_roundtrip_columns_meta}; static PyObject *__pyx_pw_7questdb_7_client_14_debug_arrow_roundtrip_columns_meta(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_schema = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_debug_arrow_roundtrip_columns_meta (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_schema,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3689, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3689, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_debug_arrow_roundtrip_columns_meta", 0) < (0)) __PYX_ERR(1, 3689, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_arrow_roundtrip_columns_meta", 1, 1, 1, i); __PYX_ERR(1, 3689, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3689, __pyx_L3_error) } __pyx_v_schema = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_debug_arrow_roundtrip_columns_meta", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3689, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._debug_arrow_roundtrip_columns_meta", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_13_debug_arrow_roundtrip_columns_meta(__pyx_self, __pyx_v_schema); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_13_debug_arrow_roundtrip_columns_meta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_schema) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("questdb._client._debug_arrow_roundtrip_columns_meta", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_14_debug_arrow_roundtrip_columns_meta, 0, __pyx_mstate_global->__pyx_n_u_debug_arrow_roundtrip_columns_m, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_arrow_roundtrip_columns_m, __pyx_t_17) < (0)) __PYX_ERR(1, 3689, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3690: """Internal: the ``df.attrs['questdb']['columns']`` map that the
3691: pyarrow-backed ``to_pandas`` / ``iter_pandas`` attach for a
3692: ``pyarrow.Schema``. Lets the mapping be tested without a server.
3693:
3694: Not part of the public API.
3695: """
+3696: return _arrow_roundtrip_columns_meta(schema)
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_roundtrip_columns_meta(__pyx_v_schema); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
3697:
3698:
+3699: cdef object _resolve_arrow_to_pandas_kwargs(dtype_backend, types_mapper):
static PyObject *__pyx_f_7questdb_7_client__resolve_arrow_to_pandas_kwargs(PyObject *__pyx_v_dtype_backend, PyObject *__pyx_v_types_mapper) {
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_pd = NULL;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("questdb._client._resolve_arrow_to_pandas_kwargs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_pd);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3700: kwargs = {}
__pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_kwargs = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3701: if types_mapper is not None:
__pyx_t_2 = (__pyx_v_types_mapper != Py_None);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+3702: kwargs['types_mapper'] = types_mapper
if (unlikely((PyDict_SetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_types_mapper, __pyx_v_types_mapper) < 0))) __PYX_ERR(1, 3702, __pyx_L1_error)
+3703: elif dtype_backend == 'pyarrow':
__pyx_t_2 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_dtype_backend, __pyx_mstate_global->__pyx_n_u_pyarrow, Py_EQ); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 3703, __pyx_L1_error) if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+3704: import pandas as pd
__pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pandas_2, 0, 0, NULL, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3704, __pyx_L1_error) __pyx_t_1 = __pyx_t_3; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pd = __pyx_t_1; __pyx_t_1 = 0;
+3705: if not hasattr(pd, 'ArrowDtype'):
__pyx_t_2 = __Pyx_HasAttr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_ArrowDtype); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 3705, __pyx_L1_error) __pyx_t_4 = (!__pyx_t_2); if (unlikely(__pyx_t_4)) { /* … */ }
+3706: raise ImportError(_pandas_too_old_message(
__pyx_t_5 = NULL;
/* … */
__pyx_t_6 = __pyx_f_7questdb_7_client__pandas_too_old_message(__pyx_v_pd, __pyx_mstate_global->__pyx_kp_u_dtype_backend_pyarrow); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3706, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_6};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3706, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 3706, __pyx_L1_error)
3707: pd, "`dtype_backend='pyarrow'`"))
+3708: kwargs['types_mapper'] = pd.ArrowDtype
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_ArrowDtype); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely((PyDict_SetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_types_mapper, __pyx_t_1) < 0))) __PYX_ERR(1, 3708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3709: elif dtype_backend == 'numpy_nullable':
__pyx_t_4 = __Pyx_PyObject_CompareBoolEq_object_str(__pyx_v_dtype_backend, __pyx_mstate_global->__pyx_n_u_numpy_nullable, Py_EQ); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 3709, __pyx_L1_error) if (__pyx_t_4) { /* … */ goto __pyx_L3; }
+3710: kwargs['types_mapper'] = _numpy_nullable_mapping()
__pyx_t_1 = __pyx_f_7questdb_7_client__numpy_nullable_mapping(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely((PyDict_SetItem(__pyx_v_kwargs, __pyx_mstate_global->__pyx_n_u_types_mapper, __pyx_t_1) < 0))) __PYX_ERR(1, 3710, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3711: elif dtype_backend is not None:
__pyx_t_4 = (__pyx_v_dtype_backend != Py_None);
if (unlikely(__pyx_t_4)) {
/* … */
}
__pyx_L3:;
+3712: raise ValueError(
__pyx_t_6 = NULL;
+3713: f'dtype_backend={dtype_backend!r} is invalid, '
__pyx_t_5 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_dtype_backend), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_dtype_backend; __pyx_t_8[1] = __pyx_t_5; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_is_invalid_only_pyarrow_and_num; __pyx_t_9 = 74; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]); #endif __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_11}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3712, __pyx_L1_error)
3714: 'only "pyarrow" and "numpy_nullable" are allowed')
+3715: return kwargs
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_kwargs);
__pyx_r = __pyx_v_kwargs;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3716:
3717:
+3718: def _debug_egress_pool_stats(client):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_16_debug_egress_pool_stats(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_15_debug_egress_pool_stats, "Return ``(in_use, idle)`` from the client\047s reader pool.\n\n The Rust pool doesn\047t track \"opened\" / \"reused\" as counters \342\200\224 they\n fall out of ``in_use + idle`` plus the lazy-init pattern (first\n borrow opens a connection; the idle list grows on returns; reuse\n is implicit). Tests assert reuse by checking that ``idle == 1``\n after sequential queries that each borrowed and returned. Returns\n ``None`` if the QuestDB handle is closed.\n\n Not part of the public API.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_16_debug_egress_pool_stats = {"_debug_egress_pool_stats", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_16_debug_egress_pool_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_15_debug_egress_pool_stats}; static PyObject *__pyx_pw_7questdb_7_client_16_debug_egress_pool_stats(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_client = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_debug_egress_pool_stats (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_client,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3718, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3718, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_debug_egress_pool_stats", 0) < (0)) __PYX_ERR(1, 3718, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_debug_egress_pool_stats", 1, 1, 1, i); __PYX_ERR(1, 3718, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3718, __pyx_L3_error) } __pyx_v_client = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_debug_egress_pool_stats", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3718, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client._debug_egress_pool_stats", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_15_debug_egress_pool_stats(__pyx_self, __pyx_v_client); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_15_debug_egress_pool_stats(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_client) { struct __pyx_obj_7questdb_7_client_QuestDB *__pyx_v_c = 0; struct questdb_db *__pyx_v_db; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("questdb._client._debug_egress_pool_stats", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_c); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_17 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_16_debug_egress_pool_stats, 0, __pyx_mstate_global->__pyx_n_u_debug_egress_pool_stats, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_17); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_debug_egress_pool_stats, __pyx_t_17) < (0)) __PYX_ERR(1, 3718, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3719: """Return ``(in_use, idle)`` from the client's reader pool.
3720:
3721: The Rust pool doesn't track "opened" / "reused" as counters — they
3722: fall out of ``in_use + idle`` plus the lazy-init pattern (first
3723: borrow opens a connection; the idle list grows on returns; reuse
3724: is implicit). Tests assert reuse by checking that ``idle == 1``
3725: after sequential queries that each borrowed and returned. Returns
3726: ``None`` if the QuestDB handle is closed.
3727:
3728: Not part of the public API.
3729: """
+3730: cdef QuestDB c = client
__pyx_t_1 = __pyx_v_client; __Pyx_INCREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client_QuestDB))))) __PYX_ERR(1, 3730, __pyx_L1_error) __pyx_v_c = ((struct __pyx_obj_7questdb_7_client_QuestDB *)__pyx_t_1); __pyx_t_1 = 0;
3731: cdef questdb_db* db
+3732: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L1_error;
__pyx_L6_except_return:;
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
goto __pyx_L0;
__pyx_L8_try_end:;
}
+3733: db = c._begin_db_use('_debug_egress_pool_stats')
__pyx_t_5 = ((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_c->__pyx_vtab)->_begin_db_use(__pyx_v_c, __pyx_mstate_global->__pyx_n_u_debug_egress_pool_stats, NULL); if (unlikely(__pyx_t_5 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(1, 3733, __pyx_L3_error) __pyx_v_db = __pyx_t_5;
+3734: except QuestDBError:
__Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3734, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_8); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_ErrRestore(__pyx_t_1, __pyx_t_6, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; if (__pyx_t_9) { __Pyx_ErrRestore(0,0,0);
+3735: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L6_except_return;
}
goto __pyx_L5_except_error;
+3736: try:
/*try:*/ {
3737: return (
+3738: questdb_db_dbg_reader_in_use_count(db),
__pyx_t_7 = __Pyx_PyLong_FromSize_t(questdb_db_dbg_reader_in_use_count(__pyx_v_db)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3738, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_7); /* … */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3738, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7) != (0)) __PYX_ERR(1, 3738, __pyx_L12_error); __Pyx_GIVEREF(__pyx_t_6); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6) != (0)) __PYX_ERR(1, 3738, __pyx_L12_error); __pyx_t_7 = 0; __pyx_t_6 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L11_return; }
+3739: questdb_db_dbg_reader_free_count(db))
__pyx_t_6 = __Pyx_PyLong_FromSize_t(questdb_db_dbg_reader_free_count(__pyx_v_db)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3739, __pyx_L12_error) __Pyx_GOTREF(__pyx_t_6);
3740: finally:
+3741: c._end_db_use()
/*finally:*/ {
__pyx_L12_error:;
/*exception exit:*/{
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_ExceptionSwap(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
if ( unlikely(__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0)) __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_3);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_12);
__Pyx_XGOTREF(__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_14);
__pyx_t_9 = __pyx_lineno; __pyx_t_10 = __pyx_clineno; __pyx_t_11 = __pyx_filename;
{
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_c->__pyx_vtab)->_end_db_use(__pyx_v_c, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3741, __pyx_L15_error)
}
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_ErrRestore(__pyx_t_4, __pyx_t_3, __pyx_t_2);
__pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
__pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_10; __pyx_filename = __pyx_t_11;
goto __pyx_L1_error;
__pyx_L15_error:;
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_XGIVEREF(__pyx_t_13);
__Pyx_XGIVEREF(__pyx_t_14);
__Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0;
goto __pyx_L1_error;
}
__pyx_L11_return: {
__pyx_t_14 = __pyx_r;
__pyx_r = 0;
((struct __pyx_vtabstruct_7questdb_7_client_QuestDB *)__pyx_v_c->__pyx_vtab)->_end_db_use(__pyx_v_c, NULL); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3741, __pyx_L1_error)
__pyx_r = __pyx_t_14;
__pyx_t_14 = 0;
goto __pyx_L0;
}
}
3742:
3743:
+3744: cdef bint _cursor_handle_is_live(_CursorHandle h):
static int __pyx_f_7questdb_7_client__cursor_handle_is_live(struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_h) {
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client._cursor_handle_is_live", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
return __pyx_r;
}
+3745: return h is not None and h._is_live()
__pyx_t_2 = (((PyObject *)__pyx_v_h) != Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L3_bool_binop_done;
}
__pyx_t_2 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_h->__pyx_vtab)->_is_live(__pyx_v_h); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 3745, __pyx_L1_error)
__pyx_t_1 = __pyx_t_2;
__pyx_L3_bool_binop_done:;
{
__pyx_r = __pyx_t_1;
}
goto __pyx_L0;
3746:
3747:
+3748: ExecDone = collections.namedtuple(
__pyx_t_16 = NULL; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_collections); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_namedtuple); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ { PyObject* __pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_module_2}; __pyx_mstate_global->__pyx_tuple[48] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[48])) __PYX_ERR(1, 3748, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[48]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[48]);
+3749: 'ExecDone', ['op_type', 'rows_affected'], module=__name__)
{
PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_op_type, __pyx_mstate_global->__pyx_n_u_rows_affected};
__pyx_t_4 = __Pyx_PyList_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
/* … */
__Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 3749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_19);
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[4] = {__pyx_t_16, __pyx_mstate_global->__pyx_n_u_ExecDone, __pyx_t_4, __pyx_t_19};
#if CYTHON_VECTORCALL
__pyx_t_20 = __pyx_mstate_global->__pyx_tuple[48];
if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 3748, __pyx_L1_error)
__Pyx_INCREF(__pyx_t_20);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_module_2};
__pyx_t_20 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 3748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
}
#endif
__pyx_t_17 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_18, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_20);
__Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3748, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_17);
}
if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ExecDone, __pyx_t_17) < (0)) __PYX_ERR(1, 3748, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
+3750: ExecDone.__doc__ = """A non-SELECT statement's terminal ``EXEC_DONE`` report.
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_ExecDone); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); if (__Pyx_PyObject_SetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_doc, __pyx_mstate_global->__pyx_kp_u_A_non_SELECT_statement_s_termina) < (0)) __PYX_ERR(1, 3750, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3751:
3752: Returned by :meth:`QuestDB.execute` / :meth:`PooledReader.execute` and
3753: carried on :attr:`QueryResult.exec_done`; both give ``None`` instead for a
3754: statement that streamed a result set. A named tuple:
3755: ``done = db.execute(sql)`` reads as ``done.rows_affected``.
3756: """
+3757: ExecDone.op_type.__doc__ = (
__Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_ExecDone); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_op_type); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_doc, __pyx_mstate_global->__pyx_kp_u_The_server_s_QWP_operation_type) < (0)) __PYX_ERR(1, 3757, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
3758: "The server's QWP operation-type byte, carried through as an opaque "
3759: "``int``; its values are the server's, not part of this client's API.")
+3760: ExecDone.rows_affected.__doc__ = (
__Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_ExecDone); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_rows_affected); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3760, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_doc, __pyx_mstate_global->__pyx_kp_u_The_number_of_rows_an_INSERT_or) < (0)) __PYX_ERR(1, 3760, __pyx_L1_error) __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3761: 'The number of rows an ``INSERT`` or ``UPDATE`` touched; ``0`` for a '
3762: 'statement that carries no count, such as one executed at parse time '
3763: '(``TRUNCATE``, ``RENAME TABLE``, ``SET``, ...).')
3764:
3765:
+3766: cdef bint _called_by_old_polars():
static int __pyx_f_7questdb_7_client__called_by_old_polars(void) {
PyObject *__pyx_v_pl = 0;
PyObject *__pyx_v_major = NULL;
PyObject *__pyx_v_minor = NULL;
int __pyx_r;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("questdb._client._called_by_old_polars", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_pl);
__Pyx_XDECREF(__pyx_v_major);
__Pyx_XDECREF(__pyx_v_minor);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3767: # polars before 1.32 decodes every batch of a stream with the first
3768: # batch's dictionary, so SYMBOL values come out wrong without an error.
3769: # polars calls `__arrow_c_stream__` from its own Python code
3770: # (`pycapsule_to_frame`, `Series.__init__`), and a Cython function pushes
3771: # no frame, so frame 0 is the caller. duckdb 1.5 calls it from a worker
3772: # thread with no Python frame, where `sys._getframe` raises ValueError.
+3773: cdef object pl = sys.modules.get('polars')
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_modules); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_4; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_n_u_polars}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_pl = __pyx_t_1; __pyx_t_1 = 0;
+3774: if pl is None:
__pyx_t_6 = (__pyx_v_pl == Py_None);
if (__pyx_t_6) {
/* … */
}
+3775: return False
{
__pyx_r = 0;
}
goto __pyx_L0;
+3776: try:
{
/*try:*/ {
/* … */
}
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L6_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L8_try_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L0;
__pyx_L7_except_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L0;
}
+3777: major, minor = pl.__version__.split('.')[:2]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_version_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__3}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_split, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 0, 2, NULL, NULL, &__pyx_mstate_global->__pyx_slice[2], 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 3777, __pyx_L4_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); } else { __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(sequence, 0, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyList_GET_ITEM_REF(sequence, 1, __Pyx_ReferenceSharing_SharedReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_XGOTREF(__pyx_t_4); } #else __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3777, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); index = 0; __pyx_t_1 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_4 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_3), 2) < (0)) __PYX_ERR(1, 3777, __pyx_L4_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(1, 3777, __pyx_L4_error) __pyx_L11_unpacking_done:; } __pyx_v_major = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_minor = __pyx_t_4; __pyx_t_4 = 0; /* … */ __pyx_mstate_global->__pyx_slice[2] = PySlice_New(Py_None, __pyx_mstate_global->__pyx_int_2, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[2])) __PYX_ERR(1, 3777, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[2]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[2]);
+3778: if (int(major), int(minor)) >= (1, 32):
__pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_major); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3778, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_minor); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3778, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3778, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2) != (0)) __PYX_ERR(1, 3778, __pyx_L4_error); __Pyx_GIVEREF(__pyx_t_4); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4) != (0)) __PYX_ERR(1, 3778, __pyx_L4_error); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_RichCompareBool(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[21], Py_GE); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(1, 3778, __pyx_L4_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_6) { /* … */ } /* … */ { PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_32}; __pyx_mstate_global->__pyx_tuple[21] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[21])) __PYX_ERR(1, 3778, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[21]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[21]);
+3779: return False
{
__pyx_r = 0;
}
goto __pyx_L8_try_return;
+3780: return sys._getframe(0).f_globals.get('__name__', '').startswith(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_getframe); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_5 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_12))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12);
assert(__pyx_t_3);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_12);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_12, __pyx__function);
__pyx_t_5 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_int_0};
__pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_12, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
}
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_f_globals); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[22], NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = __pyx_t_12;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_polars_2};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
}
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 3780, __pyx_L4_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
{
__pyx_r = __pyx_t_6;
}
goto __pyx_L8_try_return;
/* … */
{
PyObject* __pyx_temp[2] = {__pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_kp_u__6};
__pyx_mstate_global->__pyx_tuple[22] = __Pyx_PyTuple_FromArray(__pyx_temp, 2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[22])) __PYX_ERR(1, 3780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[22]);
}
__Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[22]);
3781: 'polars.')
+3782: except Exception:
__pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_13) { __Pyx_ErrRestore(0,0,0);
+3783: return False
{
__pyx_r = 0;
}
goto __pyx_L7_except_return;
}
goto __pyx_L6_except_error;
3784:
3785:
+3786: cdef str _query_result_reuse_message(object consumed_by):
static PyObject *__pyx_f_7questdb_7_client__query_result_reuse_message(PyObject *__pyx_v_consumed_by) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("questdb._client._query_result_reuse_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3787: # `consumed_by` is None when the result was closed before any read.
+3788: if consumed_by is None:
__pyx_t_1 = (__pyx_v_consumed_by == Py_None);
if (__pyx_t_1) {
/* … */
}
+3789: return 'QueryResult is closed. Run the query again to read the result.'
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_QueryResult_is_closed_Run_the_qu);
__pyx_r = __pyx_mstate_global->__pyx_kp_u_QueryResult_is_closed_Run_the_qu;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3790: return (
+3791: f'QueryResult was already read by {consumed_by}. A result can be '
__pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_consumed_by, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_QueryResult_was_already_read_by; __pyx_t_3[1] = __pyx_t_2; __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u_A_result_can_be_read_only_once; __pyx_t_4 = 111; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3[1]); #endif __pyx_t_5 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_5 |= __Pyx_PyUnicode_KIND_04(__pyx_t_3[1]); #endif __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3791, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject*)__pyx_t_6); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_6 = 0; goto __pyx_L0;
3792: 'read only once. Run the query again to read the result again.')
3793:
3794:
+3795: class QueryResult:
__pyx_t_17 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_QueryResult, __pyx_mstate_global->__pyx_n_u_QueryResult, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_kp_u_Result_of_QuestDB_query_sql_Stre); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_17); /* … */ __pyx_t_18 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_QueryResult, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_17, NULL, 0, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3795, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_QueryResult, __pyx_t_18) < (0)) __PYX_ERR(1, 3795, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
3796: """Result of ``QuestDB.query(sql)``.
3797:
3798: Streams query rows as Arrow record batches. **Single-use**: each
3799: materialisation method (``to_pandas``, ``to_arrow``, ``iter_arrow``,
3800: ``iter_pandas``, or the ``__arrow_c_stream__`` PyCapsule protocol)
3801: consumes the underlying cursor; the second consumption raises
3802: ``QuestDBError``. For the same reason it cannot be copied.
3803:
3804: **Consumption rule**: fully drain the result, use it as a context
3805: manager (``with db.query(...) as result:``), or call :meth:`close`.
3806: Closing a partial result drops its connection. Call :meth:`cancel`
3807: before closing to preserve it.
3808:
3809: **Thread hand-off**: a ``QueryResult`` may be transferred to another
3810: thread and consumed, cancelled, closed, or dropped there. Use a normal
3811: synchronisation hand-off (for example, ``Thread.start`` / ``join`` or a
3812: thread-safe queue), and access it from only one thread at a time.
3813: Concurrent operations on one result are unsupported.
3814:
3815: ``__arrow_c_stream__`` is native — the cursor's record batches are
3816: exposed directly through the Arrow C Data Interface, so polars
3817: (``polars.DataFrame(result)``, polars 1.32 or later), duckdb
3818: (``duckdb.from_arrow(result)``, duckdb 1.2 or later) and other
3819: Arrow-native consumers can read query results without pyarrow
3820: installed. duckdb reads when you fetch, so fetch before the result is
3821: closed.
3822: ``to_pandas`` / ``iter_pandas`` are also pyarrow-free by default (a
3823: native numpy path); they only need pyarrow when ``dtype_backend`` /
3824: ``types_mapper`` is passed.
3825: ``to_arrow`` / ``iter_arrow`` / ``to_polars`` / ``iter_polars``
3826: do require pyarrow.
3827:
3828: **SYMBOL columns**: ``to_polars`` / ``to_pandas`` build the Categorical
3829: directly, interning the connection dictionary once (no per-row remap).
3830: ``to_arrow`` / ``iter_arrow`` / ``__arrow_c_stream__`` emit a generic Arrow
3831: form whose per-batch SYMBOL dictionary is compacted to the values each
3832: batch uses, which a generic consumer reconciles. So when the target is a
3833: polars / pandas frame, the dedicated methods avoid the re-reconciliation
3834: that ``polars.DataFrame(result)`` / ``to_arrow().to_pandas()`` pay on
3835: SYMBOL-heavy results. ``to_arrow().to_pandas()`` needs pyarrow 23 or
3836: later for SYMBOL columns, which use ``uint32`` dictionary indices.
3837:
3838: Example::
3839:
3840: with db.query('SELECT * FROM trades WHERE ts > $1',
3841: [datetime.datetime(2026, 7, 1)]) as result:
3842: df = polars.DataFrame(result) # no pyarrow
3843: # df = result.to_pandas() # no pyarrow
3844: # rows = duckdb.from_arrow(result).fetchall() # no pyarrow
3845: # table = pa.table(result) # pyarrow required
3846: """
3847:
+3848: def __init__(self, _CursorHandle cursor_handle):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_1__init__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_cursor_handle,0};
PyObject* values[2] = {0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3848, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3848, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3848, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(1, 3848, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(1, 3848, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3848, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3848, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_cursor_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)values[1]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 3848, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cursor_handle), __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle, 1, "cursor_handle", 0))) __PYX_ERR(1, 3848, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult___init__(__pyx_self, __pyx_v_self, __pyx_v_cursor_handle);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__pyx_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_cursor_handle) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.QueryResult.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_1__init__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___init, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3848, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_18) < (0)) __PYX_ERR(1, 3848, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+3849: self._cursor_handle = cursor_handle
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cursor_handle_2, ((PyObject *)__pyx_v_cursor_handle)) < (0)) __PYX_ERR(1, 3849, __pyx_L1_error)
+3850: self._cancel_handle = cursor_handle
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle, ((PyObject *)__pyx_v_cursor_handle)) < (0)) __PYX_ERR(1, 3850, __pyx_L1_error)
+3851: self._exec_done_handle = cursor_handle
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_exec_done_handle, ((PyObject *)__pyx_v_cursor_handle)) < (0)) __PYX_ERR(1, 3851, __pyx_L1_error)
+3852: self._consumed = False
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed, Py_False) < (0)) __PYX_ERR(1, 3852, __pyx_L1_error)
+3853: self._row_columns = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_columns, Py_None) < (0)) __PYX_ERR(1, 3853, __pyx_L1_error)
+3854: self._row_iter = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_iter, Py_None) < (0)) __PYX_ERR(1, 3854, __pyx_L1_error)
3855: # The method that read the result, for the reuse error.
+3856: self._consumed_by = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by, Py_None) < (0)) __PYX_ERR(1, 3856, __pyx_L1_error)
3857: # Set by `__arrow_c_schema__`: the stream producer that holds the
3858: # cursor and the first batch until `__arrow_c_stream__` takes it.
+3859: self._schema_producer = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer, Py_None) < (0)) __PYX_ERR(1, 3859, __pyx_L1_error)
3860: # A saved copy of the schema for later `__arrow_c_schema__` calls.
+3861: self._schema_box = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_box, Py_None) < (0)) __PYX_ERR(1, 3861, __pyx_L1_error)
3862:
+3863: def _take_cursor_handle(self, str what):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_3_take_cursor_handle(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_3_take_cursor_handle = {"_take_cursor_handle", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_3_take_cursor_handle, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_3_take_cursor_handle(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_what = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_take_cursor_handle (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_what,0};
PyObject* values[2] = {0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3863, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3863, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3863, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_take_cursor_handle", 0) < (0)) __PYX_ERR(1, 3863, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_take_cursor_handle", 1, 2, 2, i); __PYX_ERR(1, 3863, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 2)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3863, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3863, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_what = ((PyObject*)values[1]);
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_take_cursor_handle", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 3863, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult._take_cursor_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_what), (&PyUnicode_Type), 1, "what", 1))) __PYX_ERR(1, 3863, __pyx_L1_error)
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_2_take_cursor_handle(__pyx_self, __pyx_v_self, __pyx_v_what);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
goto __pyx_L7_cleaned_up;
__pyx_L0:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__pyx_L7_cleaned_up:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_2_take_cursor_handle(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_what) {
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("questdb._client.QueryResult._take_cursor_handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_3_take_cursor_handle, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__take_cursor_handle, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3863, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_t_18) < (0)) __PYX_ERR(1, 3863, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
3864: cdef _CursorHandle handle
+3865: if self._consumed:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 3865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+3866: if self._schema_producer is not None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3866, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 != Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(__pyx_t_2)) { /* … */ }
+3867: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3867, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+3868: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_mstate_global->__pyx_kp_u_QueryResult___arrow_c_schema___r}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3867, __pyx_L1_error)
3869: 'QueryResult.__arrow_c_schema__() read the first batch '
3870: '(pa.schema(result), polars.Schema(result) and duckdb '
3871: '1.5 call it). Read the result through the Arrow stream, '
3872: 'for example with pa.table(result) or '
3873: 'polars.DataFrame(result), or run the query again.')
+3874: if (self._consumed_by is None
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_8) { } else { __pyx_t_2 = __pyx_t_8; goto __pyx_L6_bool_binop_done; } /* … */ if (unlikely(__pyx_t_2)) { /* … */ }
+3875: and _cursor_handle_is_live(self._cancel_handle)):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 3875, __pyx_L1_error) __pyx_t_8 = __pyx_f_7questdb_7_client__cursor_handle_is_live(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1)); if (unlikely(__pyx_t_8 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 3875, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __pyx_t_8; __pyx_L6_bool_binop_done:;
3876: # cancel() dropped the batch that `__arrow_c_schema__`
3877: # read, and the cursor stays open until close().
+3878: raise QuestDBError(
__pyx_t_4 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+3879: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_4); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_QueryResult_was_cancelled_after}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3878, __pyx_L1_error)
3880: 'QueryResult was cancelled after __arrow_c_schema__() '
3881: 'read its first batch. Call close(), then run the query '
3882: 'again to read the result.')
+3883: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3883, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
+3884: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3885: _query_result_reuse_message(self._consumed_by))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __pyx_f_7questdb_7_client__query_result_reuse_message(__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_5, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_9}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3883, __pyx_L1_error)
+3886: handle = self._cursor_handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cursor_handle_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 3886, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+3887: if handle is None or self._cancel_handle is None:
__pyx_t_8 = (((PyObject *)__pyx_v_handle) == Py_None);
if (!__pyx_t_8) {
} else {
__pyx_t_2 = __pyx_t_8;
goto __pyx_L9_bool_binop_done;
}
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3887, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_8 = (__pyx_t_1 == Py_None);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = __pyx_t_8;
__pyx_L9_bool_binop_done:;
if (unlikely(__pyx_t_2)) {
/* … */
}
+3888: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3888, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
+3889: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3890: _query_result_reuse_message(None))
__pyx_t_3 = __pyx_f_7questdb_7_client__query_result_reuse_message(Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_9, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_t_3}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_9, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3888, __pyx_L1_error)
+3891: if handle._cancelled:
if (unlikely(__pyx_v_handle->_cancelled)) {
/* … */
}
3892: # An empty result here would read as a non-SELECT.
+3893: raise QuestDBError(
__pyx_t_9 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3893, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
+3894: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); assert(__pyx_t_9); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_3, __pyx__function); __pyx_t_7 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_5, __pyx_mstate_global->__pyx_kp_u_QueryResult_was_cancelled_before}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 3893, __pyx_L1_error)
3895: 'QueryResult was cancelled before it was read')
+3896: self._consumed = True
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed, Py_True) < (0)) __PYX_ERR(1, 3896, __pyx_L1_error)
+3897: self._consumed_by = what
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by, __pyx_v_what) < (0)) __PYX_ERR(1, 3897, __pyx_L1_error)
+3898: self._cursor_handle = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cursor_handle_2, Py_None) < (0)) __PYX_ERR(1, 3898, __pyx_L1_error)
+3899: return handle
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF((PyObject *)__pyx_v_handle);
__pyx_r = ((PyObject *)__pyx_v_handle);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
3900:
+3901: def _drain(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_5_drain(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_5_drain = {"_drain", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_5_drain, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_5_drain(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_drain (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3901, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3901, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_drain", 0) < (0)) __PYX_ERR(1, 3901, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_drain", 1, 1, 1, i); __PYX_ERR(1, 3901, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3901, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_drain", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3901, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult._drain", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_4_drain(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_4_drain(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QueryResult._drain", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_5_drain, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__drain, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3901, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_drain, __pyx_t_18) < (0)) __PYX_ERR(1, 3901, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+3902: _drain_cursor(self._take_cursor_handle('execute()'))
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_execute}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 3902, __pyx_L1_error) __pyx_t_4 = __pyx_f_7questdb_7_client__drain_cursor(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1)); if (unlikely(__pyx_t_4 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 3902, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3903:
+3904: def __arrow_c_schema__(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_7__arrow_c_schema__(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_6__arrow_c_schema__, "Arrow schema PyCapsule protocol (no pyarrow needed).\n\n It reads the first batch to get the schema, and keeps that batch\n for ``__arrow_c_stream__``. duckdb 1.5 calls it, so that\n ``duckdb.from_arrow(result)`` opens the stream only once.\n ``pa.schema(result)`` and ``polars.Schema(result)`` call it too.\n After this call, read the result only through ``__arrow_c_stream__``\n (``pa.table(result)``, ``polars.DataFrame(result)``, duckdb): the\n other readers raise ``InvalidApiCall`` on their first read. When\n the schema was read first, later calls return the same schema, also\n after the stream was taken.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_7__arrow_c_schema__ = {"__arrow_c_schema__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_7__arrow_c_schema__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_6__arrow_c_schema__}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_7__arrow_c_schema__(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__arrow_c_schema__ (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3904, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3904, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__arrow_c_schema__", 0) < (0)) __PYX_ERR(1, 3904, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__arrow_c_schema__", 1, 1, 1, i); __PYX_ERR(1, 3904, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3904, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__arrow_c_schema__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3904, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.__arrow_c_schema__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_6__arrow_c_schema__(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_6__arrow_c_schema__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0; struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *__pyx_v_box = 0; PyObject *__pyx_v_exc = 0; int __pyx_v_rc; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("questdb._client.QueryResult.__arrow_c_schema__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_prod); __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XDECREF((PyObject *)__pyx_v_box); __Pyx_XDECREF(__pyx_v_exc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_7__arrow_c_schema__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___arrow_c_schema, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3904, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_arrow_c_schema_2, __pyx_t_18) < (0)) __PYX_ERR(1, 3904, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
3905: """Arrow schema PyCapsule protocol (no pyarrow needed).
3906:
3907: It reads the first batch to get the schema, and keeps that batch
3908: for ``__arrow_c_stream__``. duckdb 1.5 calls it, so that
3909: ``duckdb.from_arrow(result)`` opens the stream only once.
3910: ``pa.schema(result)`` and ``polars.Schema(result)`` call it too.
3911: After this call, read the result only through ``__arrow_c_stream__``
3912: (``pa.table(result)``, ``polars.DataFrame(result)``, duckdb): the
3913: other readers raise ``InvalidApiCall`` on their first read. When
3914: the schema was read first, later calls return the same schema, also
3915: after the stream was taken.
3916: """
3917: cdef _QueryStreamProducer prod
3918: cdef _CursorHandle handle
+3919: cdef _ArrowSchemaBox box = self._schema_box
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_box); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__ArrowSchemaBox))))) __PYX_ERR(1, 3919, __pyx_L1_error) __pyx_v_box = ((struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *)__pyx_t_1); __pyx_t_1 = 0;
3920: cdef object exc
3921: cdef int rc
+3922: if box is not None:
__pyx_t_2 = (((PyObject *)__pyx_v_box) != Py_None);
if (__pyx_t_2) {
/* … */
}
+3923: return _arrow_schema_capsule(box)
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_schema_capsule(__pyx_v_box); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3923, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
+3924: handle = self._take_cursor_handle('__arrow_c_schema__()')
__pyx_t_3 = __pyx_v_self; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_arrow_c_schema}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3924, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 3924, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+3925: prod = _new_query_stream_producer(handle)
__pyx_t_1 = ((PyObject *)__pyx_f_7questdb_7_client__new_query_stream_producer(__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_1); __pyx_t_1 = 0;
+3926: self._schema_producer = prod
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer, ((PyObject *)__pyx_v_prod)) < (0)) __PYX_ERR(1, 3926, __pyx_L1_error)
+3927: rc = _qs_ensure_schema(prod)
__pyx_v_rc = __pyx_f_7questdb_7_client__qs_ensure_schema(__pyx_v_prod);
+3928: if rc != 0:
__pyx_t_2 = (__pyx_v_rc != 0);
if (__pyx_t_2) {
/* … */
}
3929: # Release the connection now, and raise the error with its own
3930: # type and code (as `to_arrow()` would).
+3931: exc = prod.last_exc
__pyx_t_1 = __pyx_v_prod->last_exc;
__Pyx_INCREF(__pyx_t_1);
__pyx_v_exc = __pyx_t_1;
__pyx_t_1 = 0;
+3932: prod.last_exc = None
__Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); __Pyx_GOTREF(__pyx_v_prod->last_exc); __Pyx_DECREF(__pyx_v_prod->last_exc); __pyx_v_prod->last_exc = Py_None;
+3933: if exc is None and rc == 12: # ENOMEM
__pyx_t_5 = (__pyx_v_exc == Py_None);
if (__pyx_t_5) {
} else {
__pyx_t_2 = __pyx_t_5;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_5 = (__pyx_v_rc == 12);
__pyx_t_2 = __pyx_t_5;
__pyx_L6_bool_binop_done:;
if (__pyx_t_2) {
/* … */
goto __pyx_L5;
}
+3934: exc = MemoryError()
__pyx_t_3 = NULL;
__pyx_t_4 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_MemoryError)), __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3934, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF_SET(__pyx_v_exc, __pyx_t_1);
__pyx_t_1 = 0;
+3935: elif exc is None:
__pyx_t_2 = (__pyx_v_exc == Py_None);
if (__pyx_t_2) {
/* … */
}
__pyx_L5:;
+3936: exc = QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3936, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
+3937: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3937, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 3937, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3938: 'failed to read the result schema: ' + (
__pyx_t_10 = __Pyx_PyUnicode_ConcatSafe(__pyx_mstate_global->__pyx_kp_u_failed_to_read_the_result_schema, __pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_6, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_8, __pyx_t_10}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF_SET(__pyx_v_exc, __pyx_t_1); __pyx_t_1 = 0;
+3939: (<bytes>prod.last_error).decode('utf-8', 'replace')
__pyx_t_9 = __Pyx_PyBytes_FromString(__pyx_v_prod->last_error); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 3939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (unlikely(__pyx_t_9 == Py_None)) { PyErr_Format(PyExc_AttributeError, "\047NoneType\047 object has no attribute \047%.30s\047", "decode"); __PYX_ERR(1, 3939, __pyx_L1_error) } __pyx_t_10 = __Pyx_decode_bytes(((PyObject*)__pyx_t_9), 0, PY_SSIZE_T_MAX, NULL, __pyx_k_replace, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 3939, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_7 = __pyx_t_10; __pyx_t_10 = 0; } else { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_out_of_memory); __pyx_t_7 = __pyx_mstate_global->__pyx_kp_u_out_of_memory; }
+3940: if prod.last_error != NULL else 'out of memory'))
__pyx_t_2 = (__pyx_v_prod->last_error != NULL);
if (__pyx_t_2) {
3941: # Nothing was read: a later read says "closed", not "read by".
+3942: self._schema_producer = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer, Py_None) < (0)) __PYX_ERR(1, 3942, __pyx_L1_error)
+3943: self._consumed_by = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by, Py_None) < (0)) __PYX_ERR(1, 3943, __pyx_L1_error)
+3944: prod._free_cached()
((struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *)__pyx_v_prod->__pyx_vtab)->_free_cached(__pyx_v_prod);
+3945: handle._free()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_free(__pyx_v_handle);
+3946: raise exc
__Pyx_Raise(__pyx_v_exc, 0, 0, 0); __PYX_ERR(1, 3946, __pyx_L1_error)
+3947: box = _arrow_schema_box(&prod.cached_schema)
__pyx_t_1 = ((PyObject *)__pyx_f_7questdb_7_client__arrow_schema_box((&__pyx_v_prod->cached_schema))); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_box, ((struct __pyx_obj_7questdb_7_client__ArrowSchemaBox *)__pyx_t_1)); __pyx_t_1 = 0;
+3948: self._schema_box = box
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_box, ((PyObject *)__pyx_v_box)) < (0)) __PYX_ERR(1, 3948, __pyx_L1_error)
+3949: return _arrow_schema_capsule(box)
__pyx_t_1 = __pyx_f_7questdb_7_client__arrow_schema_capsule(__pyx_v_box); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 3949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
3950:
+3951: def __arrow_c_stream__(self, requested_schema=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_9__arrow_c_stream__(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_8__arrow_c_stream__, "Arrow C stream PyCapsule protocol (no pyarrow needed). SYMBOL\n columns arrive compact \342\200\224 each batch\047s dictionary holds only the values\n it references \342\200\224 so a consumer that unifies per-batch dictionaries\n (e.g. ``polars.DataFrame(result)`` on polars 1.32 or later)\n reconciles them. Older polars misreads such a stream, so when polars\n before 1.32 reads the result directly (``polars.DataFrame(result)``,\n ``polars.from_arrow(result)``), the call raises ``InvalidApiCall``\n and the result stays unread. A stream that reaches polars through\n another library is not checked.\n\n ``requested_schema`` is ignored, also when it does not match: the\n stream always has the result\047s own schema, so check the schema you\n get. ``pa.table(result, schema=...)`` and\n ``polars.DataFrame(result, schema=...)`` cast the result;\n ``pa.RecordBatchReader.from_stream(result, schema=...)`` (pyarrow\n 15 or later) returns the result\047s own schema.\n\n The stream releases the result\047s connection when the consumer\n reads the last batch, not when it releases the stream. A reader\n lease can run its next query as soon as the stream is drained.\n\n The stream does not replay a result: after a batch has been\n delivered, a failover ends the stream with an error. The consumer\n raises its own exception type, and the message contains\n ``[FailoverWouldDuplicate]``; re-issue the query. polars raises a\n ``ComputeError``, but polars before 1.37.1 raises a\n ``PanicException``, which ``except Exception`` does not catch.\n\n The returned stream may be handed to a consumer worker thread.\n The cursor lock serialises the native cursor calls, not the\n stream\047s own state, so the Arrow C stream must be consumed by only\n one thread at a time; concurrent ``get_next`` / ``release`` cal""ls\n are unsupported.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_9__arrow_c_stream__ = {"__arrow_c_stream__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_9__arrow_c_stream__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_8__arrow_c_stream__}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_9__arrow_c_stream__(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; CYTHON_UNUSED PyObject *__pyx_v_requested_schema = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__arrow_c_stream__ (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_requested_schema,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 3951, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3951, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3951, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__arrow_c_stream__", 0) < (0)) __PYX_ERR(1, 3951, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__arrow_c_stream__", 0, 1, 2, i); __PYX_ERR(1, 3951, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 3951, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3951, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_self = values[0]; __pyx_v_requested_schema = values[1]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__arrow_c_stream__", 0, 1, 2, __pyx_nargs); __PYX_ERR(1, 3951, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.__arrow_c_stream__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_8__arrow_c_stream__(__pyx_self, __pyx_v_self, __pyx_v_requested_schema); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_8__arrow_c_stream__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_requested_schema) { struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0; PyObject *__pyx_v_capsule = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("questdb._client.QueryResult.__arrow_c_stream__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_prod); __Pyx_XDECREF(__pyx_v_capsule); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_9__arrow_c_stream__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___arrow_c_stream, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 3951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_18, __pyx_mstate_global->__pyx_tuple[49]); if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_arrow_c_stream_2, __pyx_t_18) < (0)) __PYX_ERR(1, 3951, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; /* … */ { PyObject* __pyx_temp[1] = {Py_None}; __pyx_mstate_global->__pyx_tuple[49] = __Pyx_PyTuple_FromArray(__pyx_temp, 1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[49])) __PYX_ERR(1, 3951, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[49]); } __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[49]);
3952: """Arrow C stream PyCapsule protocol (no pyarrow needed). SYMBOL
3953: columns arrive compact — each batch's dictionary holds only the values
3954: it references — so a consumer that unifies per-batch dictionaries
3955: (e.g. ``polars.DataFrame(result)`` on polars 1.32 or later)
3956: reconciles them. Older polars misreads such a stream, so when polars
3957: before 1.32 reads the result directly (``polars.DataFrame(result)``,
3958: ``polars.from_arrow(result)``), the call raises ``InvalidApiCall``
3959: and the result stays unread. A stream that reaches polars through
3960: another library is not checked.
3961:
3962: ``requested_schema`` is ignored, also when it does not match: the
3963: stream always has the result's own schema, so check the schema you
3964: get. ``pa.table(result, schema=...)`` and
3965: ``polars.DataFrame(result, schema=...)`` cast the result;
3966: ``pa.RecordBatchReader.from_stream(result, schema=...)`` (pyarrow
3967: 15 or later) returns the result's own schema.
3968:
3969: The stream releases the result's connection when the consumer
3970: reads the last batch, not when it releases the stream. A reader
3971: lease can run its next query as soon as the stream is drained.
3972:
3973: The stream does not replay a result: after a batch has been
3974: delivered, a failover ends the stream with an error. The consumer
3975: raises its own exception type, and the message contains
3976: ``[FailoverWouldDuplicate]``; re-issue the query. polars raises a
3977: ``ComputeError``, but polars before 1.37.1 raises a
3978: ``PanicException``, which ``except Exception`` does not catch.
3979:
3980: The returned stream may be handed to a consumer worker thread.
3981: The cursor lock serialises the native cursor calls, not the
3982: stream's own state, so the Arrow C stream must be consumed by only
3983: one thread at a time; concurrent ``get_next`` / ``release`` calls
3984: are unsupported.
3985: """
3986: cdef _QueryStreamProducer prod
+3987: if _called_by_old_polars():
__pyx_t_1 = __pyx_f_7questdb_7_client__called_by_old_polars(); if (unlikely(__pyx_t_1 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 3987, __pyx_L1_error) if (unlikely(__pyx_t_1)) { /* … */ }
+3988: raise QuestDBError(
__pyx_t_3 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 3988, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
+3989: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 3989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3990: f'polars {sys.modules["polars"].__version__} misreads '
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_sys); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_modules); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_polars); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_version_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_polars_3; __pyx_t_8[1] = __pyx_t_5; __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_misreads_multi_batch_query_resu; __pyx_t_9 = 80; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8[1]); #endif __pyx_t_10 = 0; #if __Pyx_PyUnicode_Join_CAN_USE_KIND_AND_LENGTH __pyx_t_10 |= __Pyx_PyUnicode_KIND_04(__pyx_t_8[1]); #endif __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_8, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 3990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3991: 'multi-batch query results. Upgrade to polars 1.32 or '
+3992: 'later, or ' + (
__pyx_t_11 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlaceSafe(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_12 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); assert(__pyx_t_3); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); __pyx_t_12 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_t_6, __pyx_t_11}; __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_12, (3-__pyx_t_12) | (__pyx_t_12*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } __Pyx_Raise(__pyx_t_2, 0, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(1, 3988, __pyx_L1_error)
3993: 'run the query again and call to_polars().'
+3994: if self._consumed else 'call result.to_polars().'))
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 3994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 3994, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (__pyx_t_1) { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_run_the_query_again_and_call_to); __pyx_t_5 = __pyx_mstate_global->__pyx_kp_u_run_the_query_again_and_call_to; } else { __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_call_result_to_polars); __pyx_t_5 = __pyx_mstate_global->__pyx_kp_u_call_result_to_polars; }
3995: # Read the field after the check, which runs Python code.
+3996: prod = self._schema_producer
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__QueryStreamProducer))))) __PYX_ERR(1, 3996, __pyx_L1_error) __pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_2); __pyx_t_2 = 0;
3997: # Streaming: hand batches out incrementally. A post-delivery
3998: # failover bumps the cursor's _reset_seq; the capsule producer
3999: # surfaces FailoverWouldDuplicate rather than feeding the
4000: # replayed batch-0 as a duplicate (see _qs_pull).
+4001: if prod is not None:
__pyx_t_1 = (((PyObject *)__pyx_v_prod) != Py_None);
if (__pyx_t_1) {
/* … */
}
4002: # `__arrow_c_schema__` already pulled the first batch: hand
4003: # out that producer. Clear the field only when the capsule
4004: # exists, so that close() still reaches the cursor on failure.
+4005: capsule = _query_stream_capsule(prod)
__pyx_t_2 = __pyx_f_7questdb_7_client__query_stream_capsule(__pyx_v_prod); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_capsule = __pyx_t_2; __pyx_t_2 = 0;
+4006: self._schema_producer = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer, Py_None) < (0)) __PYX_ERR(1, 4006, __pyx_L1_error)
+4007: self._consumed_by = '__arrow_c_stream__()'
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by, __pyx_mstate_global->__pyx_kp_u_arrow_c_stream) < (0)) __PYX_ERR(1, 4007, __pyx_L1_error)
+4008: return capsule
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_capsule);
__pyx_r = __pyx_v_capsule;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+4009: return _query_stream_capsule(_new_query_stream_producer(
__pyx_t_4 = ((PyObject *)__pyx_f_7questdb_7_client__new_query_stream_producer(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_2))); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_f_7questdb_7_client__query_stream_capsule(((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_4)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+4010: self._take_cursor_handle('__arrow_c_stream__()')))
__pyx_t_4 = __pyx_v_self; __Pyx_INCREF(__pyx_t_4); __pyx_t_12 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_arrow_c_stream}; __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_12, (2-__pyx_t_12) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4010, __pyx_L1_error)
4011:
+4012: def to_arrow(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_11to_arrow(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_10to_arrow, "Read the full result into a ``pyarrow.Table``. Requires pyarrow.\n\n SYMBOL columns use ``uint32`` dictionary indices, which\n ``Table.to_pandas()`` accepts only from pyarrow 23. For a pandas\n frame, call :meth:`to_pandas` instead. DECIMAL columns with a\n precision of 18 or less arrive as ``decimal32`` / ``decimal64``,\n which need pyarrow 20 or later.\n\n Materialise-whole: a mid-query failover replays the result\n transparently \342\200\224 the partial accumulation we hold is discarded\n from batch-0. The streaming path (``__arrow_c_stream__``, as\n consumed by ``polars.DataFrame(result)`` or ``pa.table(result)``)\n does not replay: on a post-delivery failover, the consumer raises\n its own error, and the message contains\n ``[FailoverWouldDuplicate]``.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_11to_arrow = {"to_arrow", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_11to_arrow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_10to_arrow}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_11to_arrow(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_arrow (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4012, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4012, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_arrow", 0) < (0)) __PYX_ERR(1, 4012, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_arrow", 1, 1, 1, i); __PYX_ERR(1, 4012, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4012, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("to_arrow", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4012, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.to_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_10to_arrow(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_10to_arrow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_v_pa = NULL; PyObject *__pyx_v_handle = NULL; PyObject *__pyx_v_schema = NULL; PyObject *__pyx_v_batches = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("questdb._client.QueryResult.to_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_pa); __Pyx_XDECREF(__pyx_v_handle); __Pyx_XDECREF(__pyx_v_schema); __Pyx_XDECREF(__pyx_v_batches); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_11to_arrow, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_to_arrow, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_to_arrow_2, __pyx_t_18) < (0)) __PYX_ERR(1, 4012, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4013: """Read the full result into a ``pyarrow.Table``. Requires pyarrow.
4014:
4015: SYMBOL columns use ``uint32`` dictionary indices, which
4016: ``Table.to_pandas()`` accepts only from pyarrow 23. For a pandas
4017: frame, call :meth:`to_pandas` instead. DECIMAL columns with a
4018: precision of 18 or less arrive as ``decimal32`` / ``decimal64``,
4019: which need pyarrow 20 or later.
4020:
4021: Materialise-whole: a mid-query failover replays the result
4022: transparently — the partial accumulation we hold is discarded
4023: from batch-0. The streaming path (``__arrow_c_stream__``, as
4024: consumed by ``polars.DataFrame(result)`` or ``pa.table(result)``)
4025: does not replay: on a post-delivery failover, the consumer raises
4026: its own error, and the message contains
4027: ``[FailoverWouldDuplicate]``.
4028: """
+4029: import pyarrow as pa
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4029, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_pa = __pyx_t_1; __pyx_t_1 = 0;
+4030: handle = self._take_cursor_handle('to_arrow()')
__pyx_t_3 = __pyx_v_self; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_to_arrow}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_handle = __pyx_t_1; __pyx_t_1 = 0;
+4031: schema, batches = _fetch_all_record_batches(handle, pa, True)
if (!(likely(((__pyx_v_handle) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_handle, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4031, __pyx_L1_error) __pyx_t_5.__pyx_n = 1; __pyx_t_5.compact = 1; __pyx_t_1 = __pyx_f_7questdb_7_client__fetch_all_record_batches(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_v_handle), __pyx_v_pa, &__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 4031, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 4031, __pyx_L1_error) } __pyx_v_schema = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_batches = __pyx_t_6; __pyx_t_6 = 0;
+4032: if schema is None:
__pyx_t_7 = (__pyx_v_schema == Py_None);
if (__pyx_t_7) {
/* … */
}
+4033: return pa.table({})
__pyx_t_6 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4033, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_3};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_table, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4033, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_1;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_1 = 0;
goto __pyx_L0;
+4034: return pa.Table.from_batches(batches, schema)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __pyx_t_6; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_batches, __pyx_v_schema}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
4035:
+4036: def to_pandas(self, *, dtype_backend=None, types_mapper=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_13to_pandas(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_12to_pandas, "Read the full result into a ``pandas.DataFrame``.\n\n The default is a native (no pyarrow) hybrid built straight from\n the QWP column buffers: a nullable integer column\n with nulls becomes a pandas nullable ``Int*`` (``pd.NA``); without\n nulls it stays plain numpy. ``double``/``float`` stay numpy with\n ``NaN``; ``SYMBOL`` \342\206\222 ``Categorical``; ``TIMESTAMP`` \342\206\222\n ``datetime64`` (``NaT``); strings/decimal/uuid/binary \342\206\222 ``object``.\n With no arguments or a ``dtype_backend``, a ``GEOHASH`` column is\n a signed integer sized by its precision: ``int8`` up to 7 bits,\n ``int16`` to 15, ``int32`` to 31, ``int64`` to 60, as\n :meth:`to_arrow` gives it.\n Analysis-safe (aggregations skip ``pd.NA``/``NaN``), and feeds back\n into :meth:`QuestDB.dataframe` for a type round-trip \342\200\224 the column\n kinds are carried in ``df.attrs[\047questdb\047]``.\n\n ``dtype_backend=\"pyarrow\"`` / ``\"numpy_nullable\"`` / ``types_mapper``\n select the pyarrow-backed path instead (``pd.ArrowDtype``, pandas\n nullable extension dtypes, or a custom mapper) \342\200\224 matching the\n ``pd.read_sql`` / ``pd.read_parquet`` convention. Those paths\n attach ``df.attrs[\047questdb\047]`` too: a pandas dtype holds an Arrow\n type and no field, so ``attrs`` is what carries the IPV4 / CHAR /\n GEOHASH / UUID / LONG256 claims that live in Arrow field metadata.\n :meth:`QuestDB.dataframe <questdb.QuestDB.dataframe>` reads the\n claim back from either built-in backend \342\200\224 including the masked\n and object-dtype columns ``\"numpy_nullable\"`` produces for those\n five \342\200\224 so writing the result out again gives the same column\n types, and for those five the same wire bytes.\n\n A custom ``types_mapper`` gets the same ``attrs``, but whether\n the claim can be applied"" depends on the dtype the mapper picked.\n It has to be a shape that still holds the value:\n an Arrow-backed column, a NumPy ``uint32`` / ``uint16`` / integer\n column, or an object column of Python ints or ``bytes``. Map one\n of those five columns to a float or a string dtype and the claim\n is ignored \342\200\224 the column lands as that dtype implies, and\n re-ingestion logs a ``questdb`` warning about the dropped claim.\n\n ``df.attrs[\047questdb\047]`` reads as an ordinary mapping but cannot\n be edited in place: pandas deep-copies the whole of ``attrs``\n once per column whenever it propagates it, so a per-column claim\n that copied would make slicing and exporting quadratic in the\n column count. Every copy of the frame shares the one claim\n instead. To change what a frame claims, assign a new mapping to\n ``df.attrs[\047questdb\047]``, or state the type outright with\n ``schema_overrides`` / ``symbols``, which outrank it.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_13to_pandas = {"to_pandas", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_13to_pandas, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_12to_pandas}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_13to_pandas(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_dtype_backend = 0; PyObject *__pyx_v_types_mapper = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_pandas (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_dtype_backend_2,&__pyx_mstate_global->__pyx_n_u_types_mapper,0}; PyObject* values[3] = {0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4036, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4036, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_pandas", 0) < (0)) __PYX_ERR(1, 4036, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_pandas", 1, 1, 1, i); __PYX_ERR(1, 4036, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4036, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_self = values[0]; __pyx_v_dtype_backend = values[1]; __pyx_v_types_mapper = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("to_pandas", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4036, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.to_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_12to_pandas(__pyx_self, __pyx_v_self, __pyx_v_dtype_backend, __pyx_v_types_mapper); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_12to_pandas(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dtype_backend, PyObject *__pyx_v_types_mapper) { PyObject *__pyx_v_pa = NULL; PyObject *__pyx_v_kwargs = NULL; PyObject *__pyx_v_handle = NULL; PyObject *__pyx_v_schema = NULL; PyObject *__pyx_v_batches = NULL; PyObject *__pyx_v_table = NULL; PyObject *__pyx_v_frame = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("questdb._client.QueryResult.to_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_pa); __Pyx_XDECREF(__pyx_v_kwargs); __Pyx_XDECREF(__pyx_v_handle); __Pyx_XDECREF(__pyx_v_schema); __Pyx_XDECREF(__pyx_v_batches); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_frame); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_dtype_backend_2, Py_None) < (0)) __PYX_ERR(1, 4036, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_18, __pyx_mstate_global->__pyx_n_u_types_mapper, Py_None) < (0)) __PYX_ERR(1, 4036, __pyx_L1_error) __pyx_t_20 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_13to_pandas, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_to_pandas, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 4036, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_20, __pyx_t_18); __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0; if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_to_pandas_2, __pyx_t_20) < (0)) __PYX_ERR(1, 4036, __pyx_L1_error) __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
4037: """Read the full result into a ``pandas.DataFrame``.
4038:
4039: The default is a native (no pyarrow) hybrid built straight from
4040: the QWP column buffers: a nullable integer column
4041: with nulls becomes a pandas nullable ``Int*`` (``pd.NA``); without
4042: nulls it stays plain numpy. ``double``/``float`` stay numpy with
4043: ``NaN``; ``SYMBOL`` → ``Categorical``; ``TIMESTAMP`` →
4044: ``datetime64`` (``NaT``); strings/decimal/uuid/binary → ``object``.
4045: With no arguments or a ``dtype_backend``, a ``GEOHASH`` column is
4046: a signed integer sized by its precision: ``int8`` up to 7 bits,
4047: ``int16`` to 15, ``int32`` to 31, ``int64`` to 60, as
4048: :meth:`to_arrow` gives it.
4049: Analysis-safe (aggregations skip ``pd.NA``/``NaN``), and feeds back
4050: into :meth:`QuestDB.dataframe` for a type round-trip — the column
4051: kinds are carried in ``df.attrs['questdb']``.
4052:
4053: ``dtype_backend="pyarrow"`` / ``"numpy_nullable"`` / ``types_mapper``
4054: select the pyarrow-backed path instead (``pd.ArrowDtype``, pandas
4055: nullable extension dtypes, or a custom mapper) — matching the
4056: ``pd.read_sql`` / ``pd.read_parquet`` convention. Those paths
4057: attach ``df.attrs['questdb']`` too: a pandas dtype holds an Arrow
4058: type and no field, so ``attrs`` is what carries the IPV4 / CHAR /
4059: GEOHASH / UUID / LONG256 claims that live in Arrow field metadata.
4060: :meth:`QuestDB.dataframe <questdb.QuestDB.dataframe>` reads the
4061: claim back from either built-in backend — including the masked
4062: and object-dtype columns ``"numpy_nullable"`` produces for those
4063: five — so writing the result out again gives the same column
4064: types, and for those five the same wire bytes.
4065:
4066: A custom ``types_mapper`` gets the same ``attrs``, but whether
4067: the claim can be applied depends on the dtype the mapper picked.
4068: It has to be a shape that still holds the value:
4069: an Arrow-backed column, a NumPy ``uint32`` / ``uint16`` / integer
4070: column, or an object column of Python ints or ``bytes``. Map one
4071: of those five columns to a float or a string dtype and the claim
4072: is ignored — the column lands as that dtype implies, and
4073: re-ingestion logs a ``questdb`` warning about the dropped claim.
4074:
4075: ``df.attrs['questdb']`` reads as an ordinary mapping but cannot
4076: be edited in place: pandas deep-copies the whole of ``attrs``
4077: once per column whenever it propagates it, so a per-column claim
4078: that copied would make slicing and exporting quadratic in the
4079: column count. Every copy of the frame shares the one claim
4080: instead. To change what a frame claims, assign a new mapping to
4081: ``df.attrs['questdb']``, or state the type outright with
4082: ``schema_overrides`` / ``symbols``, which outrank it.
4083: """
+4084: if dtype_backend is not None and types_mapper is not None:
__pyx_t_2 = (__pyx_v_dtype_backend != Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_types_mapper != Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+4085: raise ValueError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_pass_at_most_one_of_dtype_backen};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4085, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 4085, __pyx_L1_error)
4086: 'pass at most one of dtype_backend, types_mapper')
+4087: if dtype_backend is None and types_mapper is None:
__pyx_t_2 = (__pyx_v_dtype_backend == Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_types_mapper == Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+4088: return self._to_pandas_numpy()
__pyx_t_4 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_to_pandas_numpy, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4088, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_3;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
+4089: import pyarrow as pa
__pyx_t_6 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4089, __pyx_L1_error) __pyx_t_3 = __pyx_t_6; __Pyx_GOTREF(__pyx_t_3); __pyx_v_pa = __pyx_t_3; __pyx_t_3 = 0;
4090: # Check the arguments before the result is read: a bad value must
4091: # not consume the cursor.
+4092: kwargs = _resolve_arrow_to_pandas_kwargs(dtype_backend, types_mapper)
__pyx_t_3 = __pyx_f_7questdb_7_client__resolve_arrow_to_pandas_kwargs(__pyx_v_dtype_backend, __pyx_v_types_mapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_kwargs = __pyx_t_3; __pyx_t_3 = 0;
+4093: handle = self._take_cursor_handle('to_pandas()')
__pyx_t_4 = __pyx_v_self; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_to_pandas}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_v_handle = __pyx_t_3; __pyx_t_3 = 0;
+4094: schema, batches = _fetch_all_record_batches(handle, pa)
if (!(likely(((__pyx_v_handle) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_handle, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4094, __pyx_L1_error) __pyx_t_3 = __pyx_f_7questdb_7_client__fetch_all_record_batches(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_v_handle), __pyx_v_pa, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 4094, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 4094, __pyx_L1_error) } __pyx_v_schema = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_batches = __pyx_t_7; __pyx_t_7 = 0;
+4095: table = (pa.table({}) if schema is None
__pyx_t_1 = (__pyx_v_schema == Py_None);
if (__pyx_t_1) {
__pyx_t_4 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_4);
__pyx_t_8 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4095, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_table, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4095, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_3 = __pyx_t_7;
__pyx_t_7 = 0;
} else {
+4096: else _table_shared_symbol_dict(
__pyx_t_4 = __pyx_f_7questdb_7_client__table_shared_symbol_dict(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4096, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_3 = __pyx_t_4; __pyx_t_4 = 0; } __pyx_v_table = __pyx_t_3; __pyx_t_3 = 0;
+4097: pa.Table.from_batches(batches, schema)))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __pyx_t_4; __Pyx_INCREF(__pyx_t_8); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_batches, __pyx_v_schema}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4097, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); }
+4098: frame = table.to_pandas(**kwargs)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_to_pandas_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4098, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(1, 4098, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_v_kwargs))) { __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4098, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { __pyx_t_4 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4098, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4098, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_frame = __pyx_t_7; __pyx_t_7 = 0;
+4099: return _attach_arrow_roundtrip_attrs(frame, table.schema)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_table, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_f_7questdb_7_client__attach_arrow_roundtrip_attrs(__pyx_v_frame, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4099, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_4; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
4100:
+4101: def to_polars(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_15to_polars(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_14to_polars, "Read the full result into a ``polars.DataFrame``. Requires polars\n and pyarrow.\n\n Non-``SYMBOL`` columns keep their exact ``polars.from_arrow`` dtypes\n (tz-aware ``Datetime``, ``Decimal``, ``Binary``, ``List``/``Array``,\n \342\200\246). ``SYMBOL`` columns are built into a polars ``Categorical`` directly\n from their codes + dictionary through a persistent ``Categories``\n registry \342\200\224 the wire code is its own physical categorical code, so\n there is no per-row ``Dictionary -> Categorical`` remap. Falls back to\n ``polars.from_arrow`` when polars\047 (unstable) ``Categories`` API is\n unavailable. If that path fails, it also falls back and issues a\n ``RuntimeWarning``: the values stay correct, but the read is slower.\n Under ``-W error`` that warning raises after the result was read,\n so the frame is lost; run the query again.\n\n Materialise-whole: a mid-query failover replays the result\n transparently. This accumulates batches in-library (via pyarrow)\n so the partial result can be discarded on failover. The\n pyarrow-free ``polars.DataFrame(result)`` streams through\n ``__arrow_c_stream__`` and does not replay: on a post-delivery\n failover, polars raises its own error, and the message contains\n ``[FailoverWouldDuplicate]``. polars before 1.37.1 raises a\n ``PanicException``, which ``except Exception`` does not catch.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_15to_polars = {"to_polars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_15to_polars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_14to_polars}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_15to_polars(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("to_polars (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4101, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4101, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "to_polars", 0) < (0)) __PYX_ERR(1, 4101, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("to_polars", 1, 1, 1, i); __PYX_ERR(1, 4101, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4101, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("to_polars", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4101, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.to_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_14to_polars(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_14to_polars(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_v_pl = NULL; PyObject *__pyx_v_ie = NULL; PyObject *__pyx_v_pa = NULL; PyObject *__pyx_v_handle = NULL; PyObject *__pyx_v_schema = NULL; PyObject *__pyx_v_batches = NULL; PyObject *__pyx_v_table = NULL; PyObject *__pyx_v_exc = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("questdb._client.QueryResult.to_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_pl); __Pyx_XDECREF(__pyx_v_ie); __Pyx_XDECREF(__pyx_v_pa); __Pyx_XDECREF(__pyx_v_handle); __Pyx_XDECREF(__pyx_v_schema); __Pyx_XDECREF(__pyx_v_batches); __Pyx_XDECREF(__pyx_v_table); __Pyx_XDECREF(__pyx_v_exc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_20 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_15to_polars, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_to_polars, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 4101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_to_polars_2, __pyx_t_20) < (0)) __PYX_ERR(1, 4101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
4102: """Read the full result into a ``polars.DataFrame``. Requires polars
4103: and pyarrow.
4104:
4105: Non-``SYMBOL`` columns keep their exact ``polars.from_arrow`` dtypes
4106: (tz-aware ``Datetime``, ``Decimal``, ``Binary``, ``List``/``Array``,
4107: …). ``SYMBOL`` columns are built into a polars ``Categorical`` directly
4108: from their codes + dictionary through a persistent ``Categories``
4109: registry — the wire code is its own physical categorical code, so
4110: there is no per-row ``Dictionary -> Categorical`` remap. Falls back to
4111: ``polars.from_arrow`` when polars' (unstable) ``Categories`` API is
4112: unavailable. If that path fails, it also falls back and issues a
4113: ``RuntimeWarning``: the values stay correct, but the read is slower.
4114: Under ``-W error`` that warning raises after the result was read,
4115: so the frame is lost; run the query again.
4116:
4117: Materialise-whole: a mid-query failover replays the result
4118: transparently. This accumulates batches in-library (via pyarrow)
4119: so the partial result can be discarded on failover. The
4120: pyarrow-free ``polars.DataFrame(result)`` streams through
4121: ``__arrow_c_stream__`` and does not replay: on a post-delivery
4122: failover, polars raises its own error, and the message contains
4123: ``[FailoverWouldDuplicate]``. polars before 1.37.1 raises a
4124: ``PanicException``, which ``except Exception`` does not catch.
4125: """
+4126: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+4127: import polars as pl
__pyx_t_5 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_polars, 0, 0, NULL, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4127, __pyx_L3_error) __pyx_t_4 = __pyx_t_5; __Pyx_GOTREF(__pyx_t_4); __pyx_v_pl = __pyx_t_4; __pyx_t_4 = 0;
+4128: except ImportError as ie:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_6) { __Pyx_AddTraceback("questdb._client.QueryResult.to_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(1, 4128, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_v_ie = __pyx_t_7; /*try:*/ { /* … */ /*finally:*/ { __pyx_L14_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ie); __pyx_v_ie = 0; } __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_5, __pyx_t_14, __pyx_t_15); __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L5_except_error; } } } goto __pyx_L5_except_error;
+4129: raise ImportError(
__pyx_t_10 = NULL;
__pyx_t_11 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_polars_is_required_for_to_polar};
__pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4129, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_9);
}
4130: '`polars` is required for `to_polars()`. '
+4131: 'Install with `pip install polars`.') from ie
__Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_ie); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 4129, __pyx_L14_error) }
+4132: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L25_try_end;
__pyx_L20_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L22_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
goto __pyx_L1_error;
__pyx_L25_try_end:;
}
+4133: import pyarrow as pa
__pyx_t_18 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4133, __pyx_L20_error) __pyx_t_8 = __pyx_t_18; __Pyx_GOTREF(__pyx_t_8); __pyx_v_pa = __pyx_t_8; __pyx_t_8 = 0;
+4134: except ImportError as ie:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client.QueryResult.to_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(1, 4134, __pyx_L22_except_error) __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_v_ie = __pyx_t_7; /*try:*/ { /* … */ /*finally:*/ { __pyx_L31_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_14, &__pyx_t_5); if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_5); __pyx_t_12 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ie); __pyx_v_ie = 0; } __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_5); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16); __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_5 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_13; goto __pyx_L22_except_error; } } } goto __pyx_L22_except_error;
+4135: raise ImportError(
__pyx_t_10 = NULL;
__pyx_t_11 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_pyarrow_is_required_for_to_pola};
__pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4135, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_9);
}
4136: '`pyarrow` is required for `to_polars()`. '
+4137: 'Install with `pip install pyarrow`.') from ie
__Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_ie); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 4135, __pyx_L31_error) }
+4138: handle = self._take_cursor_handle('to_polars()')
__pyx_t_7 = __pyx_v_self; __Pyx_INCREF(__pyx_t_7); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_to_polars}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_handle = __pyx_t_4; __pyx_t_4 = 0;
+4139: schema, batches = _fetch_all_record_batches(handle, pa)
if (!(likely(((__pyx_v_handle) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_handle, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4139, __pyx_L1_error) __pyx_t_4 = __pyx_f_7questdb_7_client__fetch_all_record_batches(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_v_handle), __pyx_v_pa, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (likely(__pyx_t_4 != Py_None)) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 4139, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_7); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 4139, __pyx_L1_error) } __pyx_v_schema = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_batches = __pyx_t_8; __pyx_t_8 = 0;
+4140: if schema is None:
__pyx_t_19 = (__pyx_v_schema == Py_None);
if (__pyx_t_19) {
/* … */
}
+4141: return pl.from_arrow(pa.table({}))
__pyx_t_8 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_9 = __pyx_v_pa;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 4141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_10};
__pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_table, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
}
__pyx_t_11 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_7};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4141, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_4;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_4 = 0;
goto __pyx_L0;
+4142: table = pa.Table.from_batches(batches, schema)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __pyx_t_8; __Pyx_INCREF(__pyx_t_7); __pyx_t_11 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_v_batches, __pyx_v_schema}; __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_11, (3-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_table = __pyx_t_4; __pyx_t_4 = 0;
+4143: if getattr(pl, 'Categories', None) is None:
__pyx_t_4 = __Pyx_GetAttr3(__pyx_v_pl, __pyx_mstate_global->__pyx_n_u_Categories, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_19 = (__pyx_t_4 == Py_None); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_19) { /* … */ }
+4144: return pl.from_arrow(table)
__pyx_t_8 = __pyx_v_pl;
__Pyx_INCREF(__pyx_t_8);
__pyx_t_11 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_table};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_arrow, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4144, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_4;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_4 = 0;
goto __pyx_L0;
+4145: try:
{
/*try:*/ {
/* … */
}
__pyx_L39_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L41_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L43_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
__pyx_L42_except_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
}
+4146: return _polars_dataframe_hybrid(table, pl, pa, {})
__pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4146, __pyx_L39_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __pyx_f_7questdb_7_client__polars_dataframe_hybrid(__pyx_v_table, __pyx_v_pl, __pyx_v_pa, ((PyObject*)__pyx_t_4)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4146, __pyx_L39_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_8; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_8 = 0; goto __pyx_L43_try_return;
+4147: except Exception as exc:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_6) { __Pyx_AddTraceback("questdb._client.QueryResult.to_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 4147, __pyx_L41_except_error) __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_v_exc = __pyx_t_4; /*try:*/ { /* … */ /*finally:*/ { __pyx_L50_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; } __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_5, __pyx_t_14, __pyx_t_15); __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L41_except_error; } __pyx_L49_return: { __pyx_t_18 = __pyx_r; __pyx_r = 0; __Pyx_DECREF(__pyx_v_exc); __pyx_v_exc = 0; __pyx_r = __pyx_t_18; __pyx_t_18 = 0; goto __pyx_L42_except_return; } } } goto __pyx_L41_except_error;
+4148: return _polars_hybrid_fallback(table, pl, exc)
__pyx_t_10 = __pyx_f_7questdb_7_client__polars_hybrid_fallback(__pyx_v_table, __pyx_v_pl, __pyx_v_exc); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 4148, __pyx_L50_error) __Pyx_GOTREF(__pyx_t_10); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_10; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L49_return; }
4149:
+4150: def _to_pandas_numpy(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_17_to_pandas_numpy(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_17_to_pandas_numpy = {"_to_pandas_numpy", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_17_to_pandas_numpy, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_17_to_pandas_numpy(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_to_pandas_numpy (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4150, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4150, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_to_pandas_numpy", 0) < (0)) __PYX_ERR(1, 4150, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_to_pandas_numpy", 1, 1, 1, i); __PYX_ERR(1, 4150, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4150, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_to_pandas_numpy", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4150, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult._to_pandas_numpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_16_to_pandas_numpy(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_16_to_pandas_numpy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QueryResult._to_pandas_numpy", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_11QueryResult_20generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
/* … */
__pyx_t_20 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_17_to_pandas_numpy, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__to_pandas_numpy, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 4150, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_20);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_to_pandas_numpy, __pyx_t_20) < (0)) __PYX_ERR(1, 4150, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
+4151: return _numpy_frame_from_cursor(
__pyx_t_2 = __pyx_f_7questdb_7_client__numpy_frame_from_cursor(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_2; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_2 = 0; goto __pyx_L0;
+4152: self._take_cursor_handle('to_pandas()'))
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_to_pandas}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4152, __pyx_L1_error)
4153:
+4154: def iter_arrow(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_19iter_arrow(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_18iter_arrow, "Iterate result batches as ``pyarrow.RecordBatch``.\n\n Streaming: a mid-query failover after the first batch has been\n yielded surfaces ``QuestDBErrorCode.FailoverWouldDuplicate`` (the\n already-yielded batches cannot be discarded); re-issue the query.\n If the iterator is abandoned partway, cleanup runs at the next\n garbage-collection cycle; call :meth:`close` (or use the context-\n manager) for deterministic release.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_19iter_arrow = {"iter_arrow", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_19iter_arrow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_18iter_arrow}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_19iter_arrow(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iter_arrow (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4154, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4154, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter_arrow", 0) < (0)) __PYX_ERR(1, 4154, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("iter_arrow", 1, 1, 1, i); __PYX_ERR(1, 4154, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4154, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("iter_arrow", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4154, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.iter_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_18iter_arrow(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_18iter_arrow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { struct __pyx_obj_7questdb_7_client___pyx_scope_struct_7_iter_arrow *__pyx_cur_scope; PyObject *__pyx_r = NULL; __pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_7_iter_arrow *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_7_iter_arrow(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_7_iter_arrow, __pyx_mstate_global->__pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_7_iter_arrow *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(1, 4154, __pyx_L1_error) } else { __Pyx_GOTREF((PyObject *)__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_self = __pyx_v_self; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_11QueryResult_20generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter_arrow, __pyx_mstate_global->__pyx_n_u_QueryResult_iter_arrow, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 4154, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("questdb._client.QueryResult.iter_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF((PyObject *)__pyx_cur_scope); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7questdb_7_client_11QueryResult_20generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */ { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iter_arrow", 0); __pyx_L3_first_run:; if (unlikely(__pyx_sent_value != Py_None)) { if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator"); __PYX_ERR(1, 4154, __pyx_L1_error) } /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); if (__Pyx_PyErr_Occurred()) { __Pyx_Generator_Replace_StopIteration(0); __Pyx_AddTraceback("iter_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename); } __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); #if !CYTHON_USE_EXC_INFO_STACK __Pyx_Coroutine_ResetAndClearException(__pyx_generator); #endif __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_20 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_19iter_arrow, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_iter_arrow, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4])); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 4154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_20); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iter_arrow, __pyx_t_20) < (0)) __PYX_ERR(1, 4154, __pyx_L1_error) __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; /* … */ struct __pyx_obj_7questdb_7_client___pyx_scope_struct_7_iter_arrow { PyObject_HEAD PyObject *__pyx_v_batch; PyObject *__pyx_v_reader; PyObject *__pyx_v_self; PyObject *__pyx_t_0; Py_ssize_t __pyx_t_1; PyObject *(*__pyx_t_2)(PyObject *); };
4155: """Iterate result batches as ``pyarrow.RecordBatch``.
4156:
4157: Streaming: a mid-query failover after the first batch has been
4158: yielded surfaces ``QuestDBErrorCode.FailoverWouldDuplicate`` (the
4159: already-yielded batches cannot be discarded); re-issue the query.
4160: If the iterator is abandoned partway, cleanup runs at the next
4161: garbage-collection cycle; call :meth:`close` (or use the context-
4162: manager) for deterministic release.
4163: """
+4164: reader = _build_record_batch_reader(
__pyx_t_4.__pyx_n = 1; __pyx_t_4.compact = 1; __pyx_t_2 = __pyx_f_7questdb_7_client__build_record_batch_reader(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1), &__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_v_reader = __pyx_t_2; __pyx_t_2 = 0;
+4165: self._take_cursor_handle('iter_arrow()'), True)
__pyx_t_2 = __pyx_cur_scope->__pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_iter_arrow_2}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4165, __pyx_L1_error)
+4166: for batch in reader:
if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_reader)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_reader)) { __pyx_t_2 = __pyx_cur_scope->__pyx_v_reader; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_reader); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4166, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_2))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 4166, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } __pyx_t_1 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_2, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_5; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 4166, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5)); #else __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_5); #endif ++__pyx_t_5; } if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4166, __pyx_L1_error) } else { __pyx_t_1 = __pyx_t_6(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 4166, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_batch); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_batch, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+4167: yield batch
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_batch); __pyx_r = __pyx_cur_scope->__pyx_v_batch; __Pyx_XGIVEREF(__pyx_t_2); __pyx_cur_scope->__pyx_t_0 = __pyx_t_2; __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield:; __pyx_t_2 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_2); __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 4167, __pyx_L1_error)
4168:
+4169: def iter_pandas(self, *, dtype_backend=None, types_mapper=None):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_22iter_pandas(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_21iter_pandas, "Iterate result batches as ``pandas.DataFrame``.\n\n Mirrors :meth:`to_pandas`: with no arguments each batch is\n materialised straight into numpy (no pyarrow, sentinel-preserving).\n ``dtype_backend`` / ``types_mapper`` select the pyarrow-backed path\n instead. Either way every batch carries ``df.attrs[\047questdb\047]``,\n a ``GEOHASH`` column gets the same signed integer type, and what\n a custom ``types_mapper`` costs the round trip is the same as it\n is there.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_22iter_pandas = {"iter_pandas", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_22iter_pandas, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_21iter_pandas}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_22iter_pandas(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_dtype_backend = 0; PyObject *__pyx_v_types_mapper = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iter_pandas (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_dtype_backend_2,&__pyx_mstate_global->__pyx_n_u_types_mapper,0}; PyObject* values[3] = {0,0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4169, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4169, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter_pandas", 0) < (0)) __PYX_ERR(1, 4169, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("iter_pandas", 1, 1, 1, i); __PYX_ERR(1, 4169, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4169, __pyx_L3_error) if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None)); if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None)); } __pyx_v_self = values[0]; __pyx_v_dtype_backend = values[1]; __pyx_v_types_mapper = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("iter_pandas", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4169, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.iter_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_21iter_pandas(__pyx_self, __pyx_v_self, __pyx_v_dtype_backend, __pyx_v_types_mapper); /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_21iter_pandas(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dtype_backend, PyObject *__pyx_v_types_mapper) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client.QueryResult.iter_pandas", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_7questdb_7_client_11QueryResult_25generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */ /* … */ __pyx_t_20 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 4169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_20); if (PyDict_SetItem(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_dtype_backend_2, Py_None) < (0)) __PYX_ERR(1, 4169, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_20, __pyx_mstate_global->__pyx_n_u_types_mapper, Py_None) < (0)) __PYX_ERR(1, 4169, __pyx_L1_error) __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_22iter_pandas, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_iter_pandas, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_18, __pyx_t_20); __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0; if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iter_pandas_2, __pyx_t_18) < (0)) __PYX_ERR(1, 4169, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4170: """Iterate result batches as ``pandas.DataFrame``.
4171:
4172: Mirrors :meth:`to_pandas`: with no arguments each batch is
4173: materialised straight into numpy (no pyarrow, sentinel-preserving).
4174: ``dtype_backend`` / ``types_mapper`` select the pyarrow-backed path
4175: instead. Either way every batch carries ``df.attrs['questdb']``,
4176: a ``GEOHASH`` column gets the same signed integer type, and what
4177: a custom ``types_mapper`` costs the round trip is the same as it
4178: is there.
4179: """
+4180: if dtype_backend is not None and types_mapper is not None:
__pyx_t_2 = (__pyx_v_dtype_backend != Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_types_mapper != Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L4_bool_binop_done:;
if (unlikely(__pyx_t_1)) {
/* … */
}
+4181: raise ValueError(
__pyx_t_4 = NULL;
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_pass_at_most_one_of_dtype_backen};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ValueError)), __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4181, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
}
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(1, 4181, __pyx_L1_error)
4182: 'pass at most one of dtype_backend, types_mapper')
+4183: if dtype_backend is None and types_mapper is None:
__pyx_t_2 = (__pyx_v_dtype_backend == Py_None);
if (__pyx_t_2) {
} else {
__pyx_t_1 = __pyx_t_2;
goto __pyx_L7_bool_binop_done;
}
__pyx_t_2 = (__pyx_v_types_mapper == Py_None);
__pyx_t_1 = __pyx_t_2;
__pyx_L7_bool_binop_done:;
if (__pyx_t_1) {
/* … */
}
+4184: return _NumpyBatchIter(self._take_cursor_handle('iter_pandas()'))
__pyx_t_4 = NULL;
__pyx_t_7 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_5 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_iter_pandas};
__pyx_t_6 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4184, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_5 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
__pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__NumpyBatchIter, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4184, __pyx_L1_error)
__Pyx_GOTREF((PyObject *)__pyx_t_3);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = ((PyObject *)__pyx_t_3);
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_3 = 0;
goto __pyx_L0;
+4185: return self._iter_pandas_arrow(dtype_backend, types_mapper)
__pyx_t_6 = __pyx_v_self; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_v_dtype_backend, __pyx_v_types_mapper}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_iter_pandas_arrow, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
4186:
+4187: def _iter_pandas_arrow(self, dtype_backend, types_mapper):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_24_iter_pandas_arrow(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_24_iter_pandas_arrow = {"_iter_pandas_arrow", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_24_iter_pandas_arrow, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_24_iter_pandas_arrow(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
PyObject *__pyx_v_dtype_backend = 0;
PyObject *__pyx_v_types_mapper = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_iter_pandas_arrow (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_dtype_backend_2,&__pyx_mstate_global->__pyx_n_u_types_mapper,0};
PyObject* values[3] = {0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4187, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4187, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4187, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4187, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_iter_pandas_arrow", 0) < (0)) __PYX_ERR(1, 4187, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_iter_pandas_arrow", 1, 3, 3, i); __PYX_ERR(1, 4187, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 3)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4187, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4187, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4187, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_dtype_backend = values[1];
__pyx_v_types_mapper = values[2];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_iter_pandas_arrow", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4187, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult._iter_pandas_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_23_iter_pandas_arrow(__pyx_self, __pyx_v_self, __pyx_v_dtype_backend, __pyx_v_types_mapper);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_23_iter_pandas_arrow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dtype_backend, PyObject *__pyx_v_types_mapper) {
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow *__pyx_cur_scope;
PyObject *__pyx_r = NULL;
__pyx_cur_scope = (struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow *)__pyx_tp_new_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow(__pyx_mstate_global->__pyx_ptype_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow, __pyx_mstate_global->__pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(1, 4187, __pyx_L1_error)
} else {
__Pyx_GOTREF((PyObject *)__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_dtype_backend = __pyx_v_dtype_backend;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_dtype_backend);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_dtype_backend);
__pyx_cur_scope->__pyx_v_types_mapper = __pyx_v_types_mapper;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_types_mapper);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_types_mapper);
{
__pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7questdb_7_client_11QueryResult_25generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_iter_pandas_arrow, __pyx_mstate_global->__pyx_n_u_QueryResult__iter_pandas_arrow, __pyx_mstate_global->__pyx_n_u_questdb__client); if (unlikely(!gen)) __PYX_ERR(1, 4187, __pyx_L1_error)
__Pyx_DECREF(__pyx_cur_scope);
__Pyx_RefNannyFinishContext();
return (PyObject *) gen;
}
/* function exit code */
__pyx_L1_error:;
__Pyx_AddTraceback("questdb._client.QueryResult._iter_pandas_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_DECREF((PyObject *)__pyx_cur_scope);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_gb_7questdb_7_client_11QueryResult_25generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_iter_pandas_arrow", 0);
__pyx_L3_first_run:;
if (unlikely(__pyx_sent_value != Py_None)) {
if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
__PYX_ERR(1, 4187, __pyx_L1_error)
}
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
if (__Pyx_PyErr_Occurred()) {
__Pyx_Generator_Replace_StopIteration(0);
__Pyx_AddTraceback("_iter_pandas_arrow", __pyx_clineno, __pyx_lineno, __pyx_filename);
}
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
#if !CYTHON_USE_EXC_INFO_STACK
__Pyx_Coroutine_ResetAndClearException(__pyx_generator);
#endif
__pyx_generator->resume_label = -1;
__Pyx_Coroutine_clear((PyObject*)__pyx_generator);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_24_iter_pandas_arrow, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__iter_pandas_arrow, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iter_pandas_arrow, __pyx_t_18) < (0)) __PYX_ERR(1, 4187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
/* … */
struct __pyx_obj_7questdb_7_client___pyx_scope_struct_8__iter_pandas_arrow {
PyObject_HEAD
PyObject *__pyx_v_batch;
PyObject *__pyx_v_claim;
PyObject *__pyx_v_dtype_backend;
PyObject *__pyx_v_frame;
PyObject *__pyx_v_kwargs;
PyObject *__pyx_v_pa;
PyObject *__pyx_v_reader;
PyObject *__pyx_v_self;
PyObject *__pyx_v_table;
PyObject *__pyx_v_types_mapper;
PyObject *__pyx_t_0;
Py_ssize_t __pyx_t_1;
PyObject *(*__pyx_t_2)(PyObject *);
};
+4188: import pyarrow as pa
__pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4188, __pyx_L1_error) __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_pa = __pyx_t_1; __pyx_t_1 = 0;
+4189: kwargs = _resolve_arrow_to_pandas_kwargs(dtype_backend, types_mapper)
__pyx_t_1 = __pyx_f_7questdb_7_client__resolve_arrow_to_pandas_kwargs(__pyx_cur_scope->__pyx_v_dtype_backend, __pyx_cur_scope->__pyx_v_types_mapper); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_kwargs = __pyx_t_1; __pyx_t_1 = 0;
+4190: reader = _build_record_batch_reader(
__pyx_t_3 = __pyx_f_7questdb_7_client__build_record_batch_reader(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_v_reader = __pyx_t_3; __pyx_t_3 = 0;
+4191: self._take_cursor_handle('iter_pandas()'))
__pyx_t_3 = __pyx_cur_scope->__pyx_v_self; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_iter_pandas}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4191, __pyx_L1_error)
4192: # `_table_shared_symbol_dict` re-types SYMBOL columns but keeps
4193: # every field's name and metadata, which is all the claim reads,
4194: # so the stream's own schema gives the same answer for every
4195: # batch.
+4196: claim = _arrow_roundtrip_claim(reader.schema)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_reader, __pyx_mstate_global->__pyx_n_u_schema); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __pyx_f_7questdb_7_client__arrow_roundtrip_claim(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_claim = __pyx_t_1; __pyx_t_1 = 0;
+4197: for batch in reader:
if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_reader)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_reader)) { __pyx_t_1 = __pyx_cur_scope->__pyx_v_reader; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_reader); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4197, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_1))) { { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 4197, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } __pyx_t_3 = __Pyx_PyList_GET_ITEM_REF(__pyx_t_1, __pyx_t_5, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_5; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 4197, __pyx_L1_error) #endif if (__pyx_t_5 >= __pyx_temp) break; } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5)); #else __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5); #endif ++__pyx_t_5; } if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4197, __pyx_L1_error) } else { __pyx_t_3 = __pyx_t_6(__pyx_t_1); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 4197, __pyx_L1_error) PyErr_Clear(); } break; } } __Pyx_GOTREF(__pyx_t_3); __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_batch); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_batch, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
+4198: table = _table_shared_symbol_dict(pa.Table.from_batches([batch]))
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_pa, __pyx_mstate_global->__pyx_n_u_Table); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __pyx_t_8; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = PyList_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_batch); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_batch); if (__Pyx_PyList_SET_ITEM(__pyx_t_9, 0, __pyx_cur_scope->__pyx_v_batch) != (0)) __PYX_ERR(1, 4198, __pyx_L1_error); __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9}; __pyx_t_3 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_from_batches, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_8 = __pyx_f_7questdb_7_client__table_shared_symbol_dict(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_table); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_table, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_8); __pyx_t_8 = 0;
+4199: frame = table.to_pandas(**kwargs)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_table, __pyx_mstate_global->__pyx_n_u_to_pandas_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(__pyx_cur_scope->__pyx_v_kwargs == Py_None)) { PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); __PYX_ERR(1, 4199, __pyx_L1_error) } if (likely(PyDict_CheckExact(__pyx_cur_scope->__pyx_v_kwargs))) { __pyx_t_3 = PyDict_Copy(__pyx_cur_scope->__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { __pyx_t_3 = __Pyx_PyObject_CallOneArg((PyObject*)&PyDict_Type, __pyx_cur_scope->__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_frame); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_frame, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_9); __pyx_t_9 = 0;
+4200: frame.attrs['questdb'] = claim
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_frame, __pyx_mstate_global->__pyx_n_u_attrs); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (unlikely((PyObject_SetItem(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_questdb, __pyx_cur_scope->__pyx_v_claim) < 0))) __PYX_ERR(1, 4200, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+4201: yield frame
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_frame); __pyx_r = __pyx_cur_scope->__pyx_v_frame; __Pyx_XGIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_t_0 = __pyx_t_1; __pyx_cur_scope->__pyx_t_1 = __pyx_t_5; __pyx_cur_scope->__pyx_t_2 = __pyx_t_6; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); __Pyx_Coroutine_ResetAndClearException(__pyx_generator); /* return from generator, yielding value */ __pyx_generator->resume_label = 1; return __pyx_r; __pyx_L6_resume_from_yield:; __pyx_t_1 = __pyx_cur_scope->__pyx_t_0; __pyx_cur_scope->__pyx_t_0 = 0; __Pyx_XGOTREF(__pyx_t_1); __pyx_t_5 = __pyx_cur_scope->__pyx_t_1; __pyx_t_6 = __pyx_cur_scope->__pyx_t_2; if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 4201, __pyx_L1_error)
4202:
+4203: def iter_polars(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_27iter_polars(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_26iter_polars, "Iterate result batches as ``polars.DataFrame``.\n\n Mirrors :meth:`to_polars` per batch (same ``Categorical`` SYMBOL\n handling) for streaming / low-peak-memory consumption. Every batch\047s\n SYMBOL Categoricals share one persistent ``Categories`` identity, so\n ``polars.concat`` over the yielded frames stitches without a\n categories-mismatch error. If the ``Categorical`` fast path fails,\n it issues one ``RuntimeWarning`` and builds the remaining frames with\n ``polars.from_arrow``, cast to the same ``Categories``. If that cast\n fails too, the warning says so: those frames have a plain\n ``Categorical`` dtype, and ``polars.concat`` with the frames before\n fails.\n\n Streaming: a mid-query failover after the first batch has been yielded\n surfaces ``QuestDBErrorCode.FailoverWouldDuplicate``; re-issue the\n query. Requires polars and pyarrow.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_27iter_polars = {"iter_polars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_27iter_polars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_26iter_polars}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_27iter_polars(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iter_polars (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4203, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4203, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter_polars", 0) < (0)) __PYX_ERR(1, 4203, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("iter_polars", 1, 1, 1, i); __PYX_ERR(1, 4203, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4203, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("iter_polars", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4203, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.iter_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_26iter_polars(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_26iter_polars(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_v_pl = NULL; PyObject *__pyx_v_ie = NULL; PyObject *__pyx_v_pa = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("questdb._client.QueryResult.iter_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_pl); __Pyx_XDECREF(__pyx_v_ie); __Pyx_XDECREF(__pyx_v_pa); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_27iter_polars, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_iter_polars, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iter_polars_2, __pyx_t_18) < (0)) __PYX_ERR(1, 4203, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4204: """Iterate result batches as ``polars.DataFrame``.
4205:
4206: Mirrors :meth:`to_polars` per batch (same ``Categorical`` SYMBOL
4207: handling) for streaming / low-peak-memory consumption. Every batch's
4208: SYMBOL Categoricals share one persistent ``Categories`` identity, so
4209: ``polars.concat`` over the yielded frames stitches without a
4210: categories-mismatch error. If the ``Categorical`` fast path fails,
4211: it issues one ``RuntimeWarning`` and builds the remaining frames with
4212: ``polars.from_arrow``, cast to the same ``Categories``. If that cast
4213: fails too, the warning says so: those frames have a plain
4214: ``Categorical`` dtype, and ``polars.concat`` with the frames before
4215: fails.
4216:
4217: Streaming: a mid-query failover after the first batch has been yielded
4218: surfaces ``QuestDBErrorCode.FailoverWouldDuplicate``; re-issue the
4219: query. Requires polars and pyarrow.
4220: """
+4221: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+4222: import polars as pl
__pyx_t_5 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_polars, 0, 0, NULL, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4222, __pyx_L3_error) __pyx_t_4 = __pyx_t_5; __Pyx_GOTREF(__pyx_t_4); __pyx_v_pl = __pyx_t_4; __pyx_t_4 = 0;
+4223: except ImportError as ie:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_6) { __Pyx_AddTraceback("questdb._client.QueryResult.iter_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(1, 4223, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_4); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_v_ie = __pyx_t_7; /*try:*/ { /* … */ /*finally:*/ { __pyx_L14_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18); if ( unlikely(__Pyx_GetException(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_5, &__pyx_t_14, &__pyx_t_15); __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_18); __pyx_t_6 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ie); __pyx_v_ie = 0; } __Pyx_XGIVEREF(__pyx_t_16); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_15); __Pyx_ErrRestore(__pyx_t_5, __pyx_t_14, __pyx_t_15); __pyx_t_5 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_lineno = __pyx_t_6; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13; goto __pyx_L5_except_error; } } } goto __pyx_L5_except_error;
+4224: raise ImportError(
__pyx_t_10 = NULL;
__pyx_t_11 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_polars_is_required_for_iter_pol};
__pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4224, __pyx_L14_error)
__Pyx_GOTREF(__pyx_t_9);
}
4225: '`polars` is required for `iter_polars()`. '
+4226: 'Install with `pip install polars`.') from ie
__Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_ie); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 4224, __pyx_L14_error) }
+4227: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L25_try_end;
__pyx_L20_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L22_except_error:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_2, __pyx_t_1);
goto __pyx_L1_error;
__pyx_L25_try_end:;
}
+4228: import pyarrow as pa
__pyx_t_18 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pyarrow, 0, 0, NULL, 0); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4228, __pyx_L20_error) __pyx_t_8 = __pyx_t_18; __Pyx_GOTREF(__pyx_t_8); __pyx_v_pa = __pyx_t_8; __pyx_t_8 = 0;
+4229: except ImportError as ie:
__pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_ImportError)))); if (__pyx_t_12) { __Pyx_AddTraceback("questdb._client.QueryResult.iter_polars", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(1, 4229, __pyx_L22_except_error) __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_v_ie = __pyx_t_7; /*try:*/ { /* … */ /*finally:*/ { __pyx_L31_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_ExceptionSwap(&__pyx_t_15, &__pyx_t_14, &__pyx_t_5); if ( unlikely(__Pyx_GetException(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16); __Pyx_XGOTREF(__pyx_t_18); __Pyx_XGOTREF(__pyx_t_17); __Pyx_XGOTREF(__pyx_t_16); __Pyx_XGOTREF(__pyx_t_15); __Pyx_XGOTREF(__pyx_t_14); __Pyx_XGOTREF(__pyx_t_5); __pyx_t_12 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_13 = __pyx_filename; { __Pyx_DECREF(__pyx_v_ie); __pyx_v_ie = 0; } __Pyx_XGIVEREF(__pyx_t_15); __Pyx_XGIVEREF(__pyx_t_14); __Pyx_XGIVEREF(__pyx_t_5); __Pyx_ExceptionReset(__pyx_t_15, __pyx_t_14, __pyx_t_5); __Pyx_XGIVEREF(__pyx_t_18); __Pyx_XGIVEREF(__pyx_t_17); __Pyx_XGIVEREF(__pyx_t_16); __Pyx_ErrRestore(__pyx_t_18, __pyx_t_17, __pyx_t_16); __pyx_t_18 = 0; __pyx_t_17 = 0; __pyx_t_16 = 0; __pyx_t_15 = 0; __pyx_t_14 = 0; __pyx_t_5 = 0; __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_13; goto __pyx_L22_except_error; } } } goto __pyx_L22_except_error;
+4230: raise ImportError(
__pyx_t_10 = NULL;
__pyx_t_11 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_10, __pyx_mstate_global->__pyx_kp_u_pyarrow_is_required_for_iter_po};
__pyx_t_9 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4230, __pyx_L31_error)
__Pyx_GOTREF(__pyx_t_9);
}
4231: '`pyarrow` is required for `iter_polars()`. '
+4232: 'Install with `pip install pyarrow`.') from ie
__Pyx_Raise(__pyx_t_9, 0, 0, __pyx_v_ie); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __PYX_ERR(1, 4230, __pyx_L31_error) }
+4233: return _PolarsBatchIter(
__pyx_t_7 = NULL;
+4234: self._take_cursor_handle('iter_polars()'), pl, pa)
__pyx_t_9 = __pyx_v_self; __Pyx_INCREF(__pyx_t_9); __pyx_t_11 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_iter_polars}; __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } __pyx_t_11 = 1; { PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_8, __pyx_v_pl, __pyx_v_pa}; __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_ptype_7questdb_7_client__PolarsBatchIter, __pyx_callargs+__pyx_t_11, (4-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4233, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_4); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = ((PyObject *)__pyx_t_4); } __Pyx_XDECREF(__pyx_temp); } __pyx_t_4 = 0; goto __pyx_L0;
4235:
+4236: def _open_rows(self, str what):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_29_open_rows(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_28_open_rows, "Start (or re-use) this result\047s row stream."); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_29_open_rows = {"_open_rows", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_29_open_rows, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_28_open_rows}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_29_open_rows(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; PyObject *__pyx_v_what = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_open_rows (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_what,0}; PyObject* values[2] = {0,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4236, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4236, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4236, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_open_rows", 0) < (0)) __PYX_ERR(1, 4236, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_open_rows", 1, 2, 2, i); __PYX_ERR(1, 4236, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 2)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4236, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4236, __pyx_L3_error) } __pyx_v_self = values[0]; __pyx_v_what = ((PyObject*)values[1]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("_open_rows", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 4236, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult._open_rows", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_what), (&PyUnicode_Type), 1, "what", 1))) __PYX_ERR(1, 4236, __pyx_L1_error) __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_28_open_rows(__pyx_self, __pyx_v_self, __pyx_v_what); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } goto __pyx_L7_cleaned_up; __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_28_open_rows(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_what) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("questdb._client.QueryResult._open_rows", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_29_open_rows, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__open_rows, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_open_rows, __pyx_t_18) < (0)) __PYX_ERR(1, 4236, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4237: """Start (or re-use) this result's row stream."""
+4238: cdef _CursorHandle handle = self._exec_done_handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_exec_done_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4238, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+4239: if self._row_iter is None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_iter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ goto __pyx_L3; }
+4240: self._row_columns, self._row_iter = _open_row_stream(
__pyx_t_3 = __pyx_f_7questdb_7_client__open_row_stream(((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(__pyx_t_3 != Py_None)) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PyTuple_GET_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(1, 4240, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 4240, __pyx_L1_error) } if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_columns, __pyx_t_1) < (0)) __PYX_ERR(1, 4240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_iter, __pyx_t_5) < (0)) __PYX_ERR(1, 4240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+4241: self._take_cursor_handle(what))
__pyx_t_3 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_what};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_take_cursor_handle, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4241, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4241, __pyx_L1_error)
+4242: elif handle._rows_cut_short:
if (unlikely(__pyx_v_handle->_rows_cut_short)) {
/* … */
}
__pyx_L3:;
+4243: raise QuestDBError(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4243, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+4244: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 4244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_5); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_4 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_7, __pyx_mstate_global->__pyx_kp_u_QueryResult_row_stream_was_cut_s}; __pyx_t_3 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 4243, __pyx_L1_error)
4245: 'QueryResult row stream was cut short by an error or by '
4246: 'closing its iterator; re-issue the query')
+4247: return self._row_iter
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_iter); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
4248:
+4249: def columns(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_31columns(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_30columns, "Column names and QuestDB types as ``[(name, type_name), ...]``.\n\n ``type_name`` is the QuestDB DDL spelling \342\200\224 ``VARCHAR``,\n ``TIMESTAMP``, ``TIMESTAMP_NS``, ``SYMBOL``, ``IPv4``,\n ``GEOHASH(8c)``, ``DECIMAL(18,2)``, ``DOUBLE[]`` \342\200\224 matching\n ``ColumnType`` on the server, so it can be compared against\n ``tables()`` / ``information_schema.questdb_columns()`` without\n normalising. Use ``select ... limit 0`` to read a schema without\n fetching rows; such a probe is read to its end here, so its\n connection goes back to the pool.\n\n Does not consume the rows \342\200\224 :meth:`iter_rows` continues from the\n same stream \342\200\224 but does consume the result, so it rules out\n :meth:`to_pandas`, :meth:`to_arrow` and the other materialisation\n methods. It decodes no rows, is cheap to call repeatedly, and once\n read still answers after :meth:`close`.\n\n A result that returned rows is not at its terminal until they have\n been read, so closing it straight after ``columns()`` drops the\n connection (and on a :class:`PooledReader` lease makes the lease\n terminal). Iterate the rows, or call :meth:`cancel` before\n :meth:`close`, to keep it; a ``LIMIT 0`` probe needs neither.\n\n Empty for a statement that ships no result set at all (a\n non-SELECT); see :attr:`exec_done` for that outcome.\n\n Three limits are the protocol\047s, not this client\047s:\n\n - A ``DECIMAL`` column is reported with its storage width\047s maximum\n precision (18, 38 or 76) because the wire carries only the scale:\n a column declared ``DECIMAL(10,2)`` reads back as\n ``DECIMAL(18,2)``. Compare on scale when that matters.\n - A legacy ``STRING`` column is reported as ``VARCHAR``: QWP has no\n separate STRING column kind.\n - An array column is reported as ``DOUBLE[]`""` / ``LONG[]`` whatever\n its dimensionality, because the wire schema carries no dimension\n count; the server spells a 2-D column ``DOUBLE[][]``.\n\n .. code-block:: python\n\n with db.query(\047select * from trades limit 0\047) as result:\n for name, type_name in result.columns():\n print(name, type_name)\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_31columns = {"columns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_31columns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_30columns}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_31columns(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("columns (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4249, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4249, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "columns", 0) < (0)) __PYX_ERR(1, 4249, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("columns", 1, 1, 1, i); __PYX_ERR(1, 4249, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4249, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("columns", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4249, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.columns", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_30columns(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_30columns(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("questdb._client.QueryResult.columns", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_31columns, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_columns, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_columns, __pyx_t_18) < (0)) __PYX_ERR(1, 4249, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4250: """Column names and QuestDB types as ``[(name, type_name), ...]``.
4251:
4252: ``type_name`` is the QuestDB DDL spelling — ``VARCHAR``,
4253: ``TIMESTAMP``, ``TIMESTAMP_NS``, ``SYMBOL``, ``IPv4``,
4254: ``GEOHASH(8c)``, ``DECIMAL(18,2)``, ``DOUBLE[]`` — matching
4255: ``ColumnType`` on the server, so it can be compared against
4256: ``tables()`` / ``information_schema.questdb_columns()`` without
4257: normalising. Use ``select ... limit 0`` to read a schema without
4258: fetching rows; such a probe is read to its end here, so its
4259: connection goes back to the pool.
4260:
4261: Does not consume the rows — :meth:`iter_rows` continues from the
4262: same stream — but does consume the result, so it rules out
4263: :meth:`to_pandas`, :meth:`to_arrow` and the other materialisation
4264: methods. It decodes no rows, is cheap to call repeatedly, and once
4265: read still answers after :meth:`close`.
4266:
4267: A result that returned rows is not at its terminal until they have
4268: been read, so closing it straight after ``columns()`` drops the
4269: connection (and on a :class:`PooledReader` lease makes the lease
4270: terminal). Iterate the rows, or call :meth:`cancel` before
4271: :meth:`close`, to keep it; a ``LIMIT 0`` probe needs neither.
4272:
4273: Empty for a statement that ships no result set at all (a
4274: non-SELECT); see :attr:`exec_done` for that outcome.
4275:
4276: Three limits are the protocol's, not this client's:
4277:
4278: - A ``DECIMAL`` column is reported with its storage width's maximum
4279: precision (18, 38 or 76) because the wire carries only the scale:
4280: a column declared ``DECIMAL(10,2)`` reads back as
4281: ``DECIMAL(18,2)``. Compare on scale when that matters.
4282: - A legacy ``STRING`` column is reported as ``VARCHAR``: QWP has no
4283: separate STRING column kind.
4284: - An array column is reported as ``DOUBLE[]`` / ``LONG[]`` whatever
4285: its dimensionality, because the wire schema carries no dimension
4286: count; the server spells a 2-D column ``DOUBLE[][]``.
4287:
4288: .. code-block:: python
4289:
4290: with db.query('select * from trades limit 0') as result:
4291: for name, type_name in result.columns():
4292: print(name, type_name)
4293: """
+4294: if self._row_columns is None:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_columns); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* … */ }
+4295: self._open_rows('columns()')
__pyx_t_3 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_3);
__pyx_t_4 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_columns_2};
__pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_open_rows, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4295, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4296: return list(self._row_columns)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_columns); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PySequence_ListKeepNew(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_3; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_3 = 0; goto __pyx_L0;
4297:
+4298: def iter_rows(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_33iter_rows(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_32iter_rows, "Iterate the result as tuples of Python objects.\n\n For DB-API-shaped callers \342\200\224 a PEP 249 cursor, dbt, plain scripting \342\200\224\n and for small result sets where exact QuestDB types matter more than\n throughput: metadata lookups, test rows, ``limit 0`` schema probes.\n Needs neither ``pyarrow`` nor ``pandas``. Large analytical results\n belong on :meth:`to_pandas` / :meth:`to_arrow`, which stay columnar;\n a row of Python objects costs an allocation per cell.\n\n Streams one batch at a time: the batch being decoded is the only one\n held in memory. ``None`` marks a SQL NULL in every column.\n\n Value mapping:\n\n ======================================== ==========================\n QuestDB Python\n ======================================== ==========================\n ``BOOLEAN`` ``bool``\n ``BYTE``, ``SHORT``, ``INT``, ``LONG`` ``int``\n ``FLOAT``, ``DOUBLE`` ``float`` (never NaN: the\n server sends NULL)\n ``VARCHAR``, ``SYMBOL`` ``str``\n ``CHAR`` one-character ``str``;\n code point 0 is ``None``\n ``TIMESTAMP`` ``datetime`` (UTC-aware,\n microseconds)\n ``TIMESTAMP_NS`` ``datetime`` (UTC-aware),\n rounded down to\n microseconds\n ``DATE`` ``datetime`` (UTC-aware,\n milliseconds)\n ``UUID`` ``uuid.UUID``\n ``LONG256`` ``int``"" (unsigned)\n ``DECIMAL(p,s)`` ``decimal.Decimal``\n (scale preserved)\n ``GEOHASH(nc)`` ``str`` (base-32, or\n \0470\047/\0471\047 bits when n is\n not a multiple of 5)\n ``IPv4`` ``ipaddress.IPv4Address``\n ``BINARY`` ``bytes``\n ``DOUBLE[]`` ``numpy.ndarray``\n ======================================== ==========================\n\n Datetimes are timezone-aware UTC, matching what\n :meth:`to_arrow` labels them. ``TIMESTAMP_NS`` is rounded down\n (towards the past) because ``datetime`` has no nanosecond field; use\n :meth:`to_pandas` or :meth:`to_arrow` for full precision. A temporal\n value outside ``datetime``\047s years 1..9999 raises\n ``QuestDBErrorCode.InvalidTimestamp`` naming the column. Like any\n other error raised while decoding, it closes the result before its\n terminal, so the connection is dropped (on a :class:`PooledReader`\n lease, the lease becomes terminal). A server-side error \342\200\224 a parse\n error, a timeout \342\200\224 ends at a terminal frame instead and keeps the\n connection. A ``CHAR`` holding a UTF-16 surrogate code unit comes\n back as that lone surrogate, which cannot be encoded to UTF-8.\n ``LONG[]`` columns are not supported on this path.\n\n Every call returns the same iterator, so :meth:`columns` and\n ``iter_rows()`` share one stream and an exhausted iterator stays\n empty. The batch being handed out is the only one held in memory.\n After :meth:`cancel` no further rows are yielded, including any\n already decoded; after :meth:`close` the iterator raises. A fresh\n ""``iter_rows()`` call raises too once the stream ended with an error\n or its iterator was closed. A mid-query failover after iteration\n has begun raises\n ``QuestDBErrorCode.FailoverWouldDuplicate`` rather than replaying\n rows the caller already holds.\n\n .. code-block:: python\n\n with db.query(\047select ts, symbol from trades limit 3\047) as result:\n for ts, symbol in result.iter_rows():\n print(ts, symbol)\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_33iter_rows = {"iter_rows", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_33iter_rows, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_32iter_rows}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_33iter_rows(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("iter_rows (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4298, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4298, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "iter_rows", 0) < (0)) __PYX_ERR(1, 4298, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("iter_rows", 1, 1, 1, i); __PYX_ERR(1, 4298, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4298, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("iter_rows", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4298, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.iter_rows", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_32iter_rows(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_32iter_rows(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.QueryResult.iter_rows", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_33iter_rows, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_iter_rows, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_iter_rows_2, __pyx_t_18) < (0)) __PYX_ERR(1, 4298, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4299: """Iterate the result as tuples of Python objects.
4300:
4301: For DB-API-shaped callers — a PEP 249 cursor, dbt, plain scripting —
4302: and for small result sets where exact QuestDB types matter more than
4303: throughput: metadata lookups, test rows, ``limit 0`` schema probes.
4304: Needs neither ``pyarrow`` nor ``pandas``. Large analytical results
4305: belong on :meth:`to_pandas` / :meth:`to_arrow`, which stay columnar;
4306: a row of Python objects costs an allocation per cell.
4307:
4308: Streams one batch at a time: the batch being decoded is the only one
4309: held in memory. ``None`` marks a SQL NULL in every column.
4310:
4311: Value mapping:
4312:
4313: ======================================== ==========================
4314: QuestDB Python
4315: ======================================== ==========================
4316: ``BOOLEAN`` ``bool``
4317: ``BYTE``, ``SHORT``, ``INT``, ``LONG`` ``int``
4318: ``FLOAT``, ``DOUBLE`` ``float`` (never NaN: the
4319: server sends NULL)
4320: ``VARCHAR``, ``SYMBOL`` ``str``
4321: ``CHAR`` one-character ``str``;
4322: code point 0 is ``None``
4323: ``TIMESTAMP`` ``datetime`` (UTC-aware,
4324: microseconds)
4325: ``TIMESTAMP_NS`` ``datetime`` (UTC-aware),
4326: rounded down to
4327: microseconds
4328: ``DATE`` ``datetime`` (UTC-aware,
4329: milliseconds)
4330: ``UUID`` ``uuid.UUID``
4331: ``LONG256`` ``int`` (unsigned)
4332: ``DECIMAL(p,s)`` ``decimal.Decimal``
4333: (scale preserved)
4334: ``GEOHASH(nc)`` ``str`` (base-32, or
4335: '0'/'1' bits when n is
4336: not a multiple of 5)
4337: ``IPv4`` ``ipaddress.IPv4Address``
4338: ``BINARY`` ``bytes``
4339: ``DOUBLE[]`` ``numpy.ndarray``
4340: ======================================== ==========================
4341:
4342: Datetimes are timezone-aware UTC, matching what
4343: :meth:`to_arrow` labels them. ``TIMESTAMP_NS`` is rounded down
4344: (towards the past) because ``datetime`` has no nanosecond field; use
4345: :meth:`to_pandas` or :meth:`to_arrow` for full precision. A temporal
4346: value outside ``datetime``'s years 1..9999 raises
4347: ``QuestDBErrorCode.InvalidTimestamp`` naming the column. Like any
4348: other error raised while decoding, it closes the result before its
4349: terminal, so the connection is dropped (on a :class:`PooledReader`
4350: lease, the lease becomes terminal). A server-side error — a parse
4351: error, a timeout — ends at a terminal frame instead and keeps the
4352: connection. A ``CHAR`` holding a UTF-16 surrogate code unit comes
4353: back as that lone surrogate, which cannot be encoded to UTF-8.
4354: ``LONG[]`` columns are not supported on this path.
4355:
4356: Every call returns the same iterator, so :meth:`columns` and
4357: ``iter_rows()`` share one stream and an exhausted iterator stays
4358: empty. The batch being handed out is the only one held in memory.
4359: After :meth:`cancel` no further rows are yielded, including any
4360: already decoded; after :meth:`close` the iterator raises. A fresh
4361: ``iter_rows()`` call raises too once the stream ended with an error
4362: or its iterator was closed. A mid-query failover after iteration
4363: has begun raises
4364: ``QuestDBErrorCode.FailoverWouldDuplicate`` rather than replaying
4365: rows the caller already holds.
4366:
4367: .. code-block:: python
4368:
4369: with db.query('select ts, symbol from trades limit 3') as result:
4370: for ts, symbol in result.iter_rows():
4371: print(ts, symbol)
4372: """
+4373: return self._open_rows('iter_rows()')
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_iter_rows}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_open_rows, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4373, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } { PyObject *__pyx_temp; { __pyx_temp = __pyx_r; __pyx_r = __pyx_t_1; } __Pyx_XDECREF(__pyx_temp); } __pyx_t_1 = 0; goto __pyx_L0;
4374:
+4375: @property
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_35exec_done(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_34exec_done, "The statement\047s terminal ``EXEC_DONE`` report, or ``None``.\n\n An :class:`ExecDone` ``(op_type, rows_affected)`` once a non-SELECT\n has been drained to its clean end; ``None`` before that, and\n ``None`` for a statement that streamed a result set instead (a\n ``SELECT`` ends with ``END``, which carries no counts).\n\n ``rows_affected`` is meaningful for ``INSERT`` and ``UPDATE``, and\n ``0`` for a statement that carries no count \342\200\224 one executed at parse\n time (``TRUNCATE``, ``RENAME TABLE``, ``SET``,\n ``ALTER TABLE ... RESUME WAL``, ...). ``op_type`` is\n the server\047s QWP operation-type byte, carried through as an opaque\n ``int``: its values are the server\047s, not part of this client\047s\n API. Still available after :meth:`close`.\n\n .. code-block:: python\n\n with db.query(\047insert into t values (1)\047) as result:\n list(result.iter_rows()) # drains it\n print(result.exec_done.rows_affected)\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_35exec_done = {"exec_done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_35exec_done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_34exec_done}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_35exec_done(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("exec_done (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4375, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4375, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "exec_done", 0) < (0)) __PYX_ERR(1, 4375, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("exec_done", 1, 1, 1, i); __PYX_ERR(1, 4375, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4375, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("exec_done", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4375, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.exec_done", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_34exec_done(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_34exec_done(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_XDECREF(__pyx_t_13); __Pyx_AddTraceback("questdb._client.QueryResult.exec_done", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_20 = NULL; __pyx_t_19 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_35exec_done, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_exec_done, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 4375, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_19); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_19); #endif __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_20, __pyx_t_19}; __pyx_t_18 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_property, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_20); __pyx_t_20 = 0; __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0; if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4375, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); } if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_exec_done, __pyx_t_18) < (0)) __PYX_ERR(1, 4375, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4376: def exec_done(self):
4377: """The statement's terminal ``EXEC_DONE`` report, or ``None``.
4378:
4379: An :class:`ExecDone` ``(op_type, rows_affected)`` once a non-SELECT
4380: has been drained to its clean end; ``None`` before that, and
4381: ``None`` for a statement that streamed a result set instead (a
4382: ``SELECT`` ends with ``END``, which carries no counts).
4383:
4384: ``rows_affected`` is meaningful for ``INSERT`` and ``UPDATE``, and
4385: ``0`` for a statement that carries no count — one executed at parse
4386: time (``TRUNCATE``, ``RENAME TABLE``, ``SET``,
4387: ``ALTER TABLE ... RESUME WAL``, ...). ``op_type`` is
4388: the server's QWP operation-type byte, carried through as an opaque
4389: ``int``: its values are the server's, not part of this client's
4390: API. Still available after :meth:`close`.
4391:
4392: .. code-block:: python
4393:
4394: with db.query('insert into t values (1)') as result:
4395: list(result.iter_rows()) # drains it
4396: print(result.exec_done.rows_affected)
4397: """
+4398: cdef _CursorHandle handle = self._exec_done_handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_exec_done_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4398, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+4399: if handle is None:
__pyx_t_2 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_2) {
/* … */
}
+4400: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+4401: with handle._lock:
/*with:*/ {
__pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 4401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4401, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
assert(__pyx_t_4);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4401, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QueryResult.exec_done", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_12) < 0) __PYX_ERR(1, 4401, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_4);
__Pyx_XGOTREF(__pyx_t_12);
{
PyObject* __pyx_temp[3] = {__pyx_t_1, __pyx_t_4, __pyx_t_12};
__pyx_t_10 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 4401, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_10);
}
__pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 4401, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_14);
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_14);
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
if (__pyx_t_2 < (0)) __PYX_ERR(1, 4401, __pyx_L10_except_error)
__pyx_t_15 = (!__pyx_t_2);
if (unlikely(__pyx_t_15)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_12);
__pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_12 = 0;
__PYX_ERR(1, 4401, __pyx_L10_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L12_try_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L5_return;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_3) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L7;
}
__pyx_L5_return: {
__pyx_t_9 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_3) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4401, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L0;
}
__pyx_L7:;
}
goto __pyx_L18;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L1_error;
__pyx_L18:;
}
+4402: if not handle._exec_done_valid:
__pyx_t_2 = (!__pyx_v_handle->_exec_done_valid);
if (__pyx_t_2) {
/* … */
}
+4403: return None
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L12_try_return;
+4404: return ExecDone(
__pyx_t_5 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ExecDone); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4404, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_4);
+4405: int(handle._exec_done_op_type),
__pyx_t_11 = NULL;
__pyx_t_12 = __Pyx_PyLong_From_uint8_t(__pyx_v_handle->_exec_done_op_type); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 4405, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_12};
__pyx_t_10 = __Pyx_PyObject_FastCall((PyObject*)(&PyLong_Type), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 4405, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_10);
}
+4406: int(handle._exec_done_rows))
__pyx_t_11 = NULL;
__pyx_t_13 = __Pyx_PyLong_From_uint64_t(__pyx_v_handle->_exec_done_rows); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 4406, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_6 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_13};
__pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)(&PyLong_Type), __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 4406, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_12);
}
__pyx_t_6 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
assert(__pyx_t_5);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
__pyx_t_6 = 0;
}
#endif
{
PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_10, __pyx_t_12};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4404, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_1);
}
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = __pyx_t_1;
}
__Pyx_XDECREF(__pyx_temp);
}
__pyx_t_1 = 0;
goto __pyx_L12_try_return;
4407:
+4408: def cancel(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_37cancel(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_36cancel, "Cancel the query and drain to terminal.\n\n The result remains open; call :meth:`close` before starting\n another query on the same reader. On failure, the result is\n closed. Idempotent after success. Rows already decoded but not\n yet handed out by :meth:`iter_rows` are not yielded afterwards, and\n a result not yet read cannot be read afterwards: :meth:`columns`,\n :meth:`iter_rows` and the materialisation methods raise\n ``QuestDBErrorCode.InvalidApiCall``.\n\n Cancel between rows, not from a signal handler that interrupts a\n batch being decoded on the same thread: that call is refused with\n ``QuestDBErrorCode.InvalidApiCall``, because it would invalidate\n the batch under the decoder.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_37cancel = {"cancel", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_37cancel, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_36cancel}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_37cancel(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("cancel (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4408, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4408, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "cancel", 0) < (0)) __PYX_ERR(1, 4408, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("cancel", 1, 1, 1, i); __PYX_ERR(1, 4408, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4408, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("cancel", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4408, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_36cancel(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_36cancel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; questdb_error *__pyx_v_err; int __pyx_v_ok; int __pyx_v_reusable; struct qwp_reader_cursor *__pyx_v_cursor; PyObject *__pyx_v_exc = 0; PyObject *__pyx_v_mark_exc = NULL; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("questdb._client.QueryResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XDECREF(__pyx_v_exc); __Pyx_XDECREF(__pyx_v_mark_exc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_37cancel, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_cancel, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_cancel, __pyx_t_18) < (0)) __PYX_ERR(1, 4408, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4409: """Cancel the query and drain to terminal.
4410:
4411: The result remains open; call :meth:`close` before starting
4412: another query on the same reader. On failure, the result is
4413: closed. Idempotent after success. Rows already decoded but not
4414: yet handed out by :meth:`iter_rows` are not yielded afterwards, and
4415: a result not yet read cannot be read afterwards: :meth:`columns`,
4416: :meth:`iter_rows` and the materialisation methods raise
4417: ``QuestDBErrorCode.InvalidApiCall``.
4418:
4419: Cancel between rows, not from a signal handler that interrupts a
4420: batch being decoded on the same thread: that call is refused with
4421: ``QuestDBErrorCode.InvalidApiCall``, because it would invalidate
4422: the batch under the decoder.
4423: """
+4424: cdef _CursorHandle handle = self._cancel_handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4424, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+4425: cdef questdb_error* err = NULL
__pyx_v_err = NULL;
4426: cdef bint ok
4427: cdef bint reusable
4428: cdef qwp_reader_cursor* cursor
+4429: cdef object exc = None
__Pyx_INCREF(Py_None);
__pyx_v_exc = Py_None;
4430: # A pending `__arrow_c_schema__` producer holds the first batch. A
4431: # stream after the cancel would give that batch and then a clean
4432: # end: a truncated result without an error. Drop it.
+4433: self._drop_schema_producer()
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_drop_schema_producer, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4433, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4434: if handle is None:
__pyx_t_4 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_4) {
/* … */
}
+4435: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
+4436: with handle._lock:
/*with:*/ {
__pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_exit); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 4436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
__pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_handle->_lock, __pyx_mstate_global->__pyx_n_u_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4436, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_3 = 1;
#if CYTHON_UNPACK_METHODS
if (likely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
assert(__pyx_t_2);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
__pyx_t_3 = 0;
}
#endif
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4436, __pyx_L4_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
/*try:*/ {
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L13_try_end;
__pyx_L8_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/*except:*/ {
__Pyx_AddTraceback("questdb._client.QueryResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_12) < 0) __PYX_ERR(1, 4436, __pyx_L10_except_error)
__Pyx_XGOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_t_2);
__Pyx_XGOTREF(__pyx_t_12);
{
PyObject* __pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_t_12};
__pyx_t_6 = __Pyx_PyTuple_FromArray(__pyx_temp, 3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4436, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_6);
}
__pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 4436, __pyx_L10_except_error)
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
if (__pyx_t_4 < (0)) __PYX_ERR(1, 4436, __pyx_L10_except_error)
__pyx_t_14 = (!__pyx_t_4);
if (unlikely(__pyx_t_14)) {
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_12);
__Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_12);
__pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_12 = 0;
__PYX_ERR(1, 4436, __pyx_L10_except_error)
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
goto __pyx_L9_exception_handled;
}
__pyx_L10_except_error:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L1_error;
__pyx_L12_try_return:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
goto __pyx_L5_return;
__pyx_L9_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
__pyx_L13_try_end:;
}
}
/*finally:*/ {
/*normal exit:*/{
if (__pyx_t_5) {
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
goto __pyx_L7;
}
__pyx_L5_return: {
__pyx_t_9 = __pyx_r;
__pyx_r = 0;
if (__pyx_t_5) {
__pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_mstate_global->__pyx_tuple[6], NULL);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 4436, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
}
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
goto __pyx_L0;
}
__pyx_L7:;
}
goto __pyx_L25;
__pyx_L4_error:;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L1_error;
__pyx_L25:;
}
+4437: cursor = handle._cursor
__pyx_t_10 = __pyx_v_handle->_cursor;
__pyx_v_cursor = __pyx_t_10;
+4438: if cursor == NULL:
__pyx_t_4 = (__pyx_v_cursor == NULL);
if (__pyx_t_4) {
/* … */
}
+4439: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L12_try_return;
+4440: if handle._pinned > 0:
__pyx_t_4 = (__pyx_v_handle->_pinned > 0);
if (unlikely(__pyx_t_4)) {
/* … */
}
4441: # Same-thread re-entry (a signal handler) while a decoder
4442: # holds pointers into the current batch: cancelling would
4443: # drop that batch under it.
+4444: raise QuestDBError(
__pyx_t_6 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4444, __pyx_L8_error)
__Pyx_GOTREF(__pyx_t_2);
+4445: QuestDBErrorCode.InvalidApiCall,
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 4445, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_InvalidApiCall); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 4445, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); assert(__pyx_t_6); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_12, __pyx_mstate_global->__pyx_kp_u_cancel_called_while_this_result}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4444, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 4444, __pyx_L8_error)
4446: 'cancel() called while this result is being decoded '
4447: 'on the same thread; cancel it between rows instead')
+4448: handle._pending_batch = NULL
__pyx_v_handle->_pending_batch = NULL;
+4449: handle._pin()
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_pin(__pyx_v_handle);
+4450: try:
/*try:*/ {
+4451: with nogil:
{
PyThreadState * _save;
_save = PyEval_SaveThread();
__Pyx_FastGIL_Remember();
/*try:*/ {
/* … */
/*finally:*/ {
/*normal exit:*/{
__Pyx_FastGIL_Forget();
PyEval_RestoreThread(_save);
goto __pyx_L21;
}
__pyx_L21:;
}
}
+4452: ok = qwp_reader_cursor_cancel(cursor, &err)
__pyx_v_ok = qwp_reader_cursor_cancel(__pyx_v_cursor, (&__pyx_v_err));
+4453: reusable = qwp_reader_cursor_connection_reusable(cursor)
__pyx_v_reusable = qwp_reader_cursor_connection_reusable(__pyx_v_cursor);
}
4454: # Rows decoded ahead of the consumer stop flowing from here.
+4455: handle._cancelled = True
__pyx_v_handle->_cancelled = 1;
}
4456: finally:
+4457: handle._unpin()
/*finally:*/ {
/*normal exit:*/{
((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_unpin(__pyx_v_handle);
goto __pyx_L18;
}
__pyx_L18:;
}
+4458: if not ok:
__pyx_t_14 = (!__pyx_v_ok);
if (__pyx_t_14) {
/* … */
}
+4459: if err != NULL:
__pyx_t_14 = (__pyx_v_err != NULL);
if (__pyx_t_14) {
/* … */
goto __pyx_L27;
}
+4460: exc = _reader_err_to_py(err)
__pyx_t_12 = __pyx_f_7questdb_7_client__reader_err_to_py(__pyx_v_err); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 4460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF_SET(__pyx_v_exc, __pyx_t_12); __pyx_t_12 = 0;
+4461: err = NULL
__pyx_v_err = NULL;
4462: else:
+4463: exc = QuestDBError(
/*else*/ {
__pyx_t_2 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_QuestDBError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4463, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
+4464: QuestDBErrorCode.ServerFlushError,
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_QuestDBErrorCode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 4464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ServerFlushError); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 4464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_3 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); assert(__pyx_t_2); PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx__function); __Pyx_DECREF_SET(__pyx_t_1, __pyx__function); __pyx_t_3 = 0; } #endif { PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_11, __pyx_mstate_global->__pyx_kp_u_qwp_reader_cursor_cancel_returne}; __pyx_t_12 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_3, (3-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 4463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); } __Pyx_DECREF_SET(__pyx_v_exc, __pyx_t_12); __pyx_t_12 = 0; } __pyx_L27:;
4465: 'qwp_reader_cursor_cancel returned false '
4466: 'without setting err_out')
+4467: if reusable:
if (__pyx_v_reusable) {
/* … */
}
+4468: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L34_try_end;
__pyx_L29_error:;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
/* … */
__pyx_L31_except_error:;
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_XGIVEREF(__pyx_t_9);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_5, __pyx_t_9, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L34_try_end:;
}
+4469: _mark_reader_drained(handle)
__pyx_t_15 = __pyx_f_7questdb_7_client__mark_reader_drained(__pyx_v_handle); if (unlikely(__pyx_t_15 == ((__pyx_t_7questdb_7_client_void_int)-1))) __PYX_ERR(1, 4469, __pyx_L29_error)
+4470: except BaseException as mark_exc:
__pyx_t_16 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_BaseException)))); if (__pyx_t_16) { __Pyx_AddTraceback("questdb._client.QueryResult.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_1, &__pyx_t_11) < 0) __PYX_ERR(1, 4470, __pyx_L31_except_error) __Pyx_XGOTREF(__pyx_t_12); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_1); __pyx_v_mark_exc = __pyx_t_1; /*try:*/ { /* … */ /*finally:*/ { __pyx_L40_error:; /*exception exit:*/{ __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __pyx_t_7 = 0; __pyx_t_13 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22); if ( unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_13, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_13, &__pyx_t_19); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_13); __Pyx_XGOTREF(__pyx_t_19); __Pyx_XGOTREF(__pyx_t_20); __Pyx_XGOTREF(__pyx_t_21); __Pyx_XGOTREF(__pyx_t_22); __pyx_t_16 = __pyx_lineno; __pyx_t_17 = __pyx_clineno; __pyx_t_18 = __pyx_filename; { __Pyx_DECREF(__pyx_v_mark_exc); __pyx_v_mark_exc = 0; } __Pyx_XGIVEREF(__pyx_t_20); __Pyx_XGIVEREF(__pyx_t_21); __Pyx_XGIVEREF(__pyx_t_22); __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22); __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_13); __Pyx_XGIVEREF(__pyx_t_19); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_13, __pyx_t_19); __pyx_t_7 = 0; __pyx_t_13 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0; __pyx_lineno = __pyx_t_16; __pyx_clineno = __pyx_t_17; __pyx_filename = __pyx_t_18; goto __pyx_L31_except_error; } } } goto __pyx_L31_except_error;
+4471: self.close()
__pyx_t_6 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_6);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
__pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 4471, __pyx_L40_error)
__Pyx_GOTREF(__pyx_t_2);
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+4472: if exc is not None:
__pyx_t_14 = (__pyx_v_exc != Py_None);
if (unlikely(__pyx_t_14)) {
/* … */
}
+4473: raise exc from mark_exc
__Pyx_Raise(__pyx_v_exc, 0, 0, __pyx_v_mark_exc); __PYX_ERR(1, 4473, __pyx_L40_error)
+4474: raise
__Pyx_GIVEREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_ErrRestoreWithState(__pyx_t_12, __pyx_t_1, __pyx_t_11); __pyx_t_12 = 0; __pyx_t_1 = 0; __pyx_t_11 = 0; __PYX_ERR(1, 4474, __pyx_L40_error) }
+4475: if exc is not None:
__pyx_t_14 = (__pyx_v_exc != Py_None);
if (unlikely(__pyx_t_14)) {
/* … */
}
+4476: self.close()
__pyx_t_1 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_3 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
__pyx_t_11 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 4476, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
}
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+4477: raise exc
__Pyx_Raise(__pyx_v_exc, 0, 0, 0); __PYX_ERR(1, 4477, __pyx_L1_error)
4478:
+4479: def close(self):
/* Python wrapper */ static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_39close(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ); /*proto*/ PyDoc_STRVAR(__pyx_doc_7questdb_7_client_11QueryResult_38close, "Release the cursor and reader. Idempotent.\n\n Terminal connections return to the pool; others are dropped.\n This does not cancel the query. Outstanding iterators become\n invalid.\n "); static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_39close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_39close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7questdb_7_client_11QueryResult_38close}; static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_39close(PyObject *__pyx_self, #if CYTHON_VECTORCALL PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds #else PyObject *__pyx_args, PyObject *__pyx_kwds #endif ) { PyObject *__pyx_v_self = 0; #if !CYTHON_VECTORCALL CYTHON_UNUSED Py_ssize_t __pyx_nargs; #endif CYTHON_UNUSED PyObject *const *__pyx_kwvalues; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close (wrapper)", 0); #if !CYTHON_VECTORCALL #if CYTHON_ASSUME_SAFE_SIZE __pyx_nargs = PyTuple_GET_SIZE(__pyx_args); #else __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL; #endif #endif __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs); { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0}; PyObject* values[1] = {0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4479, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4479, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "close", 0) < (0)) __PYX_ERR(1, 4479, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("close", 1, 1, 1, i); __PYX_ERR(1, 4479, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 1)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4479, __pyx_L3_error) } __pyx_v_self = values[0]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("close", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4479, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_AddTraceback("questdb._client.QueryResult.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_38close(__pyx_self, __pyx_v_self); int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; /* function exit code */ for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_38close(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) { struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0; PyObject *__pyx_r = NULL; /* … */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("questdb._client.QueryResult.close", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_handle); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* … */ __pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_39close, 0, __pyx_mstate_global->__pyx_n_u_QueryResult_close, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_18); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18); #endif if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_18) < (0)) __PYX_ERR(1, 4479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4480: """Release the cursor and reader. Idempotent.
4481:
4482: Terminal connections return to the pool; others are dropped.
4483: This does not cancel the query. Outstanding iterators become
4484: invalid.
4485: """
+4486: cdef _CursorHandle handle = self._cancel_handle
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4486, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4486, __pyx_L1_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_1); __pyx_t_1 = 0;
+4487: self._drop_schema_producer()
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_drop_schema_producer, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4488: self._cursor_handle = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cursor_handle_2, Py_None) < (0)) __PYX_ERR(1, 4488, __pyx_L1_error)
+4489: self._consumed = True
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed, Py_True) < (0)) __PYX_ERR(1, 4489, __pyx_L1_error)
4490: # Let go of a suspended row stream so its buffered batch can be
4491: # collected; a caller still holding the iterator sees 'cursor is
4492: # closed' on its next step. The column list stays answerable.
+4493: self._row_iter = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_row_iter, Py_None) < (0)) __PYX_ERR(1, 4493, __pyx_L1_error)
+4494: if handle is not None:
__pyx_t_4 = (((PyObject *)__pyx_v_handle) != Py_None);
if (__pyx_t_4) {
/* … */
}
+4495: handle._close()
__pyx_t_5 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_close(__pyx_v_handle); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 4495, __pyx_L1_error)
+4496: self._cancel_handle = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle, Py_None) < (0)) __PYX_ERR(1, 4496, __pyx_L1_error)
4497:
+4498: def _drop_schema_producer(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_41_drop_schema_producer(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_41_drop_schema_producer = {"_drop_schema_producer", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_41_drop_schema_producer, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_41_drop_schema_producer(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_drop_schema_producer (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4498, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4498, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_drop_schema_producer", 0) < (0)) __PYX_ERR(1, 4498, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_drop_schema_producer", 1, 1, 1, i); __PYX_ERR(1, 4498, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4498, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_drop_schema_producer", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4498, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult._drop_schema_producer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_40_drop_schema_producer(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_40_drop_schema_producer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("questdb._client.QueryResult._drop_schema_producer", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_41_drop_schema_producer, 0, __pyx_mstate_global->__pyx_n_u_QueryResult__drop_schema_produce, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4498, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_drop_schema_producer, __pyx_t_18) < (0)) __PYX_ERR(1, 4498, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+4499: cdef _QueryStreamProducer prod = self._schema_producer
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__QueryStreamProducer))))) __PYX_ERR(1, 4499, __pyx_L1_error) __pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_1); __pyx_t_1 = 0;
+4500: if prod is not None:
__pyx_t_2 = (((PyObject *)__pyx_v_prod) != Py_None);
if (__pyx_t_2) {
/* … */
}
4501: # Nothing outside this result has the producer yet, and nothing
4502: # was read: a later read says "closed", not "read by". Drop
4503: # the saved schema too, so that a schema read and a stream
4504: # read agree. After a stream was taken, keep it.
+4505: self._schema_producer = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer, Py_None) < (0)) __PYX_ERR(1, 4505, __pyx_L1_error)
+4506: self._schema_box = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_box, Py_None) < (0)) __PYX_ERR(1, 4506, __pyx_L1_error)
+4507: self._consumed_by = None
if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by, Py_None) < (0)) __PYX_ERR(1, 4507, __pyx_L1_error)
+4508: prod._free_cached()
((struct __pyx_vtabstruct_7questdb_7_client__QueryStreamProducer *)__pyx_v_prod->__pyx_vtab)->_free_cached(__pyx_v_prod);
4509:
+4510: def __enter__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_43__enter__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_43__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_43__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_43__enter__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4510, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4510, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__enter__", 0) < (0)) __PYX_ERR(1, 4510, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__enter__", 1, 1, 1, i); __PYX_ERR(1, 4510, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4510, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__enter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4510, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult.__enter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_42__enter__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_42__enter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_43__enter__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___enter, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4510, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_18) < (0)) __PYX_ERR(1, 4510, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+4511: return self
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(__pyx_v_self);
__pyx_r = __pyx_v_self;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
4512:
+4513: def __exit__(self, exc_type, exc_val, exc_tb):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_45__exit__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_45__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_45__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_45__exit__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
CYTHON_UNUSED PyObject *__pyx_v_exc_type = 0;
CYTHON_UNUSED PyObject *__pyx_v_exc_val = 0;
CYTHON_UNUSED PyObject *__pyx_v_exc_tb = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_exc_type,&__pyx_mstate_global->__pyx_n_u_exc_val,&__pyx_mstate_global->__pyx_n_u_exc_tb,0};
PyObject* values[4] = {0,0,0,0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4513, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 4:
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(1, 4513, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 3:
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4513, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 2:
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4513, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4513, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__exit__", 0) < (0)) __PYX_ERR(1, 4513, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, i); __PYX_ERR(1, 4513, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 4)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4513, __pyx_L3_error)
values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4513, __pyx_L3_error)
values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4513, __pyx_L3_error)
values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(1, 4513, __pyx_L3_error)
}
__pyx_v_self = values[0];
__pyx_v_exc_type = values[1];
__pyx_v_exc_val = values[2];
__pyx_v_exc_tb = values[3];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__exit__", 1, 4, 4, __pyx_nargs); __PYX_ERR(1, 4513, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_44__exit__(__pyx_self, __pyx_v_self, __pyx_v_exc_type, __pyx_v_exc_val, __pyx_v_exc_tb);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_44__exit__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QueryResult.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_45__exit__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___exit, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4513, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_18) < (0)) __PYX_ERR(1, 4513, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+4514: self.close()
__pyx_t_2 = __pyx_v_self; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+4515: return False
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__Pyx_INCREF(Py_False);
__pyx_r = Py_False;
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L0;
4516:
+4517: def __copy__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_47__copy__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_47__copy__ = {"__copy__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_47__copy__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_47__copy__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
CYTHON_UNUSED PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__copy__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4517, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4517, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__copy__", 0) < (0)) __PYX_ERR(1, 4517, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__copy__", 1, 1, 1, i); __PYX_ERR(1, 4517, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4517, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__copy__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4517, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_46__copy__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_46__copy__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_AddTraceback("questdb._client.QueryResult.__copy__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_47__copy__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___copy, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4517, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_copy_2, __pyx_t_18) < (0)) __PYX_ERR(1, 4517, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
+4518: raise TypeError('QueryResult cannot be copied: it is a single-use '
__pyx_t_2 = NULL;
__pyx_t_3 = 1;
{
PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_QueryResult_cannot_be_copied_it};
__pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_TypeError)), __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4518, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
}
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__PYX_ERR(1, 4518, __pyx_L1_error)
4519: 'stream over one cursor')
4520:
+4521: def __del__(self):
/* Python wrapper */
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_49__del__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7questdb_7_client_11QueryResult_49__del__ = {"__del__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7questdb_7_client_11QueryResult_49__del__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7questdb_7_client_11QueryResult_49__del__(PyObject *__pyx_self,
#if CYTHON_VECTORCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
PyObject *__pyx_v_self = 0;
#if !CYTHON_VECTORCALL
CYTHON_UNUSED Py_ssize_t __pyx_nargs;
#endif
CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
#if !CYTHON_VECTORCALL
#if CYTHON_ASSUME_SAFE_SIZE
__pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
#else
__pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
#endif
#endif
__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
{
PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
PyObject* values[1] = {0};
const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
if (unlikely(__pyx_kwds_len < 0)) __PYX_ERR(1, 4521, __pyx_L3_error)
if (__pyx_kwds_len > 0) {
switch (__pyx_nargs) {
case 1:
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4521, __pyx_L3_error)
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
const Py_ssize_t kwd_pos_args = __pyx_nargs;
if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__del__", 0) < (0)) __PYX_ERR(1, 4521, __pyx_L3_error)
for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__del__", 1, 1, 1, i); __PYX_ERR(1, 4521, __pyx_L3_error) }
}
} else if (unlikely(__pyx_nargs != 1)) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4521, __pyx_L3_error)
}
__pyx_v_self = values[0];
}
goto __pyx_L6_skip;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__del__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 4521, __pyx_L3_error)
__pyx_L6_skip:;
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_AddTraceback("questdb._client.QueryResult.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_7questdb_7_client_11QueryResult_48__del__(__pyx_self, __pyx_v_self);
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
/* function exit code */
for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
Py_XDECREF(values[__pyx_temp]);
}
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_7questdb_7_client_11QueryResult_48__del__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
struct __pyx_obj_7questdb_7_client__CursorHandle *__pyx_v_handle = 0;
struct __pyx_obj_7questdb_7_client__QueryStreamProducer *__pyx_v_prod = 0;
int __pyx_v_warn;
PyObject *__pyx_r = NULL;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("questdb._client.QueryResult.__del__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_handle);
__Pyx_XDECREF((PyObject *)__pyx_v_prod);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_t_18 = __Pyx_CyFunction_New(&__pyx_mdef_7questdb_7_client_11QueryResult_49__del__, 0, __pyx_mstate_global->__pyx_n_u_QueryResult___del, NULL, __pyx_mstate_global->__pyx_n_u_questdb__client, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 4521, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_18);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000
PyUnstable_Object_EnableDeferredRefcount(__pyx_t_18);
#endif
if (__Pyx_SetNameInClass(__pyx_t_17, __pyx_mstate_global->__pyx_n_u_del, __pyx_t_18) < (0)) __PYX_ERR(1, 4521, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
4522: cdef _CursorHandle handle
4523: cdef _QueryStreamProducer prod
+4524: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_L5_except_error:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L1_error;
__pyx_L7_try_return:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
goto __pyx_L0;
__pyx_L4_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_1);
__Pyx_XGIVEREF(__pyx_t_2);
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
__pyx_L8_try_end:;
}
+4525: handle = self._cursor_handle
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cursor_handle_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4525, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4525, __pyx_L3_error) __pyx_v_handle = ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_4); __pyx_t_4 = 0;
+4526: if handle is None:
__pyx_t_5 = (((PyObject *)__pyx_v_handle) == Py_None);
if (__pyx_t_5) {
/* … */
}
4527: # After `__arrow_c_schema__`, a pending producer holds the
4528: # cursor. Do not use `_cancel_handle` for a read result: a
4529: # stream given to a consumer owns its cursor.
+4530: prod = self._schema_producer
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_schema_producer); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4530, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__QueryStreamProducer))))) __PYX_ERR(1, 4530, __pyx_L3_error) __pyx_v_prod = ((struct __pyx_obj_7questdb_7_client__QueryStreamProducer *)__pyx_t_4); __pyx_t_4 = 0;
+4531: if prod is not None:
__pyx_t_5 = (((PyObject *)__pyx_v_prod) != Py_None);
if (__pyx_t_5) {
/* … */
goto __pyx_L10;
}
+4532: handle = prod.cursor_handle
__pyx_t_4 = ((PyObject *)__pyx_v_prod->cursor_handle);
__Pyx_INCREF(__pyx_t_4);
__Pyx_DECREF_SET(__pyx_v_handle, ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_4));
__pyx_t_4 = 0;
+4533: elif self._consumed_by is None:
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_consumed_by); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4533, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = (__pyx_t_4 == Py_None); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_5) { /* … */ } __pyx_L10:;
4534: # cancel() dropped the pending producer, so only this
4535: # result holds the cursor. (After close() or a failed
4536: # schema read, the handle is gone or freed.)
+4537: handle = self._cancel_handle
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_cancel_handle); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4537, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_mstate_global->__pyx_ptype_7questdb_7_client__CursorHandle))))) __PYX_ERR(1, 4537, __pyx_L3_error) __Pyx_DECREF_SET(__pyx_v_handle, ((struct __pyx_obj_7questdb_7_client__CursorHandle *)__pyx_t_4)); __pyx_t_4 = 0;
+4538: if not _cursor_handle_is_live(handle):
__pyx_t_5 = __pyx_f_7questdb_7_client__cursor_handle_is_live(__pyx_v_handle); if (unlikely(__pyx_t_5 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(1, 4538, __pyx_L3_error) __pyx_t_6 = (!__pyx_t_5); if (__pyx_t_6) { /* … */ }
+4539: return
{
PyObject *__pyx_temp;
{
__pyx_temp = __pyx_r;
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
}
__Pyx_XDECREF(__pyx_temp);
}
goto __pyx_L7_try_return;
4540: # Close before warning: under `-W error` the warning raises,
4541: # and the cursor must still be released.
+4542: warn = handle._abandonment_needs_warning()
__pyx_t_6 = ((struct __pyx_vtabstruct_7questdb_7_client__CursorHandle *)__pyx_v_handle->__pyx_vtab)->_abandonment_needs_warning(__pyx_v_handle); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 4542, __pyx_L3_error)
__pyx_v_warn = __pyx_t_6;
+4543: self.close()
__pyx_t_7 = __pyx_v_self;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_8 = 0;
{
PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
__pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_close, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4543, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+4544: if warn:
if (__pyx_v_warn) {
/* … */
}
+4545: warnings.warn(
__pyx_t_7 = NULL;
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_warnings); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4545, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_warn); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 4545, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
/* … */
__pyx_t_8 = 1;
#if CYTHON_UNPACK_METHODS
if (unlikely(PyMethod_Check(__pyx_t_10))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
assert(__pyx_t_7);
PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx__function);
__Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
__pyx_t_8 = 0;
}
#endif
{
PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_QueryResult_was_neither_drained, ((PyObject *)(((PyTypeObject*)PyExc_ResourceWarning))), __pyx_mstate_global->__pyx_int_2};
#if CYTHON_VECTORCALL
__pyx_t_9 = __pyx_mstate_global->__pyx_tuple[20];
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4545, __pyx_L3_error)
__Pyx_INCREF(__pyx_t_9);
#else
{
PyObject *__pyx_temp[1] = {__pyx_mstate_global->__pyx_n_u_stacklevel};
__pyx_t_9 = __Pyx_MakeKwargDict(__pyx_temp, __pyx_callargs+3, 1);
if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 4545, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_9);
}
#endif
__pyx_t_4 = __Pyx_Object_VectorcallKwds((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_9);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4545, __pyx_L3_error)
__Pyx_GOTREF(__pyx_t_4);
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4546: 'QueryResult was neither drained nor closed; its '
4547: 'pooled connection is being released by the garbage '
4548: 'collector. Use `with db.query(...)` or call '
4549: '`close()`.',
4550: ResourceWarning,
4551: stacklevel=2)
+4552: except Exception:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_11) { __Pyx_ErrRestore(0,0,0); goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error;
4553: pass