bpo-43852: Improve tuple creation in sqlite3 (GH-25421)

This commit is contained in:
Erlend Egeberg Aasland 2021-04-23 13:21:08 +02:00 committed by GitHub
parent 927b841c21
commit e9194ea6ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 18 deletions

View File

@ -592,8 +592,7 @@ _pysqlite_build_py_params(sqlite3_context *context, int argc,
goto error;
}
PyTuple_SetItem(args, i, cur_py_value);
PyTuple_SET_ITEM(args, i, cur_py_value);
}
return args;

View File

@ -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);
}
}