result_t mysql::execute(const char *sql, int sLen, obj_ptr<DBResult_base> &retVal, exlib::AsyncEvent *ac) { if (!m_conn) return CALL_E_INVALID_CALL; DBResult *res = (DBResult *) UMConnection_Query(m_conn, sql, sLen, this); if (!res) return error(); retVal = res; res->Unref(); return 0; }
result_t mysql::execute(const char *sql, int32_t sLen, obj_ptr<DBResult_base> &retVal) { if (!m_conn) return CHECK_ERROR(CALL_E_INVALID_CALL); DBResult *res = (DBResult *) UMConnection_Query(m_conn, sql, sLen); if (!res) return CHECK_ERROR(error()); retVal = res; res->Unref(); return 0; }
PyObject *Connection_query(Connection *self, PyObject *args) { void *ret; PyObject *inQuery = NULL; PyObject *query = NULL; PyObject *iterable = NULL; PyObject *escapedQuery = NULL; if (!UMConnection_IsConnected(self->conn)) { return PyErr_Format(PyExc_RuntimeError, "Not connected"); } if (!PyArg_ParseTuple (args, "O|O", &inQuery, &iterable)) { return NULL; } if (iterable) { PyObject *iterator = PyObject_GetIter(iterable); if (iterator == NULL) { PyErr_Clear(); return PyErr_Format(PyExc_TypeError, "Expected iterable"); } Py_DECREF(iterator); } if (!PyString_Check(inQuery)) { if (!PyUnicode_Check(inQuery)) { PRINTMARK(); return PyErr_Format(PyExc_TypeError, "Query argument must be either String or Unicode"); } query = self->PFN_PyUnicode_Encode(PyUnicode_AS_UNICODE(inQuery), PyUnicode_GET_SIZE(inQuery), NULL); if (query == NULL) { if (!PyErr_Occurred()) { PyErr_SetObject(PyExc_ValueError, query); return NULL; } return NULL; } } else { query = inQuery; Py_INCREF(query); } if (iterable) { PRINTMARK(); escapedQuery = EscapeQueryArguments(self, query, iterable); Py_DECREF(query); if (escapedQuery == NULL) { if (!PyErr_Occurred()) { return PyErr_Format(PyExc_RuntimeError, "Exception not set in EscapeQueryArguments chain"); } return NULL; } } else { escapedQuery = query; } ret = UMConnection_Query(self->conn, PyString_AS_STRING(escapedQuery), PyString_GET_SIZE(escapedQuery)); Py_DECREF(escapedQuery); PRINTMARK(); if (ret == NULL) { return HandleError(self, "query"); } PRINTMARK(); return (PyObject *) ret; }