From: Erlend Egeberg Aasland Date: Wed, 15 Jun 2022 08:42:49 +0000 (+0200) Subject: gh-93829: In sqlite3, replace Py_BuildValue with faster APIs (#93830) X-Git-Tag: v3.12.0a1~1254 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4e9fa71d7e8e2f322f0b81b315ddc921f57384c0;p=thirdparty%2FPython%2Fcpython.git gh-93829: In sqlite3, replace Py_BuildValue with faster APIs (#93830) - In Modules/_sqlite/connection.c, use PyLong_FromLong - In Modules/_sqlite/microprotocols.c, use PyTuple_Pack --- diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 484af7a1771b..f0e6a56b43a6 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1582,9 +1582,8 @@ static PyObject* pysqlite_connection_get_total_changes(pysqlite_Connection* self { if (!pysqlite_check_connection(self)) { return NULL; - } else { - return Py_BuildValue("i", sqlite3_total_changes(self->db)); } + return PyLong_FromLong(sqlite3_total_changes(self->db)); } static PyObject* pysqlite_connection_get_in_transaction(pysqlite_Connection* self, void* unused) diff --git a/Modules/_sqlite/microprotocols.c b/Modules/_sqlite/microprotocols.c index a79f0067b17e..148220d0f91f 100644 --- a/Modules/_sqlite/microprotocols.c +++ b/Modules/_sqlite/microprotocols.c @@ -57,7 +57,7 @@ pysqlite_microprotocols_add(pysqlite_state *state, PyTypeObject *type, assert(type != NULL); assert(proto != NULL); - key = Py_BuildValue("(OO)", (PyObject*)type, proto); + key = PyTuple_Pack(2, (PyObject *)type, proto); if (!key) { return -1; } @@ -81,7 +81,7 @@ pysqlite_microprotocols_adapt(pysqlite_state *state, PyObject *obj, way to get a quotable object to be its instance */ /* look for an adapter in the registry */ - key = Py_BuildValue("(OO)", (PyObject*)Py_TYPE(obj), proto); + key = PyTuple_Pack(2, (PyObject *)Py_TYPE(obj), proto); if (!key) { return NULL; }