summaryrefslogtreecommitdiffstats
path: root/Modules/_sqlite/cursor.c
diff options
context:
space:
mode:
authorErlend Egeberg Aasland <erlend.aasland@innova.no>2021-04-23 11:21:08 (GMT)
committerGitHub <noreply@github.com>2021-04-23 11:21:08 (GMT)
commite9194ea6eaa18299d6ccbd3555ce150fab0c6184 (patch)
treeec024c749bd04630e19c2bfc421e6ca000862be8 /Modules/_sqlite/cursor.c
parent927b841c215a1ca36c9b3203eadc67ce05b1ed07 (diff)
downloadcpython-e9194ea6eaa18299d6ccbd3555ce150fab0c6184.zip
cpython-e9194ea6eaa18299d6ccbd3555ce150fab0c6184.tar.gz
cpython-e9194ea6eaa18299d6ccbd3555ce150fab0c6184.tar.bz2
bpo-43852: Improve tuple creation in sqlite3 (GH-25421)
Diffstat (limited to 'Modules/_sqlite/cursor.c')
-rw-r--r--Modules/_sqlite/cursor.c25
1 files changed, 9 insertions, 16 deletions
diff --git a/Modules/_sqlite/cursor.c b/Modules/_sqlite/cursor.c
index 09c9a8c..60dfc7d 100644
--- a/Modules/_sqlite/cursor.c
+++ b/Modules/_sqlite/cursor.c
@@ -357,7 +357,7 @@ _pysqlite_fetch_one_row(pysqlite_Cursor* self)
if (!converted) {
goto error;
}
- PyTuple_SetItem(row, i, converted);
+ PyTuple_SET_ITEM(row, i, converted);
}
if (PyErr_Occurred())
@@ -406,7 +406,6 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation
PyObject* func_args;
PyObject* result;
int numcols;
- PyObject* descriptor;
PyObject* column_name;
sqlite_int64 lastrowid;
@@ -557,30 +556,24 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation
goto error;
}
for (i = 0; i < numcols; i++) {
- descriptor = PyTuple_New(7);
- if (!descriptor) {
- goto error;
- }
const char *colname;
colname = sqlite3_column_name(self->statement->st, i);
if (colname == NULL) {
PyErr_NoMemory();
- Py_DECREF(descriptor);
goto error;
}
column_name = _pysqlite_build_column_name(self, colname);
if (column_name == NULL) {
- Py_DECREF(descriptor);
goto error;
}
- PyTuple_SetItem(descriptor, 0, column_name);
- PyTuple_SetItem(descriptor, 1, Py_NewRef(Py_None));
- PyTuple_SetItem(descriptor, 2, Py_NewRef(Py_None));
- PyTuple_SetItem(descriptor, 3, Py_NewRef(Py_None));
- PyTuple_SetItem(descriptor, 4, Py_NewRef(Py_None));
- PyTuple_SetItem(descriptor, 5, Py_NewRef(Py_None));
- PyTuple_SetItem(descriptor, 6, Py_NewRef(Py_None));
- PyTuple_SetItem(self->description, i, descriptor);
+ PyObject *descriptor = PyTuple_Pack(7, column_name,
+ Py_None, Py_None, Py_None,
+ Py_None, Py_None, Py_None);
+ Py_DECREF(column_name);
+ if (descriptor == NULL) {
+ goto error;
+ }
+ PyTuple_SET_ITEM(self->description, i, descriptor);
}
}