bpo-46249: Move set lastrowid out of the sqlite3 query loop (GH-30489)

This commit is contained in:
Erlend Egeberg Aasland 2022-01-22 10:40:22 +01:00 committed by GitHub
parent 82c53229e1
commit 38afeb1a33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 11 deletions

View File

@ -465,7 +465,6 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation
int rc;
int numcols;
PyObject* column_name;
sqlite_int64 lastrowid;
if (!check_cursor(self)) {
goto error;
@ -630,16 +629,6 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation
self->rowcount= -1L;
}
if (!multiple) {
Py_BEGIN_ALLOW_THREADS
lastrowid = sqlite3_last_insert_rowid(self->connection->db);
Py_END_ALLOW_THREADS
Py_SETREF(self->lastrowid, PyLong_FromLongLong(lastrowid));
if (self->lastrowid == NULL) {
goto error;
}
}
if (rc == SQLITE_DONE && !multiple) {
pysqlite_statement_reset(self->statement);
Py_CLEAR(self->statement);
@ -651,6 +640,17 @@ _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject* operation
Py_XDECREF(parameters);
}
if (!multiple) {
sqlite_int64 lastrowid;
Py_BEGIN_ALLOW_THREADS
lastrowid = sqlite3_last_insert_rowid(self->connection->db);
Py_END_ALLOW_THREADS
Py_SETREF(self->lastrowid, PyLong_FromLongLong(lastrowid));
// Fall through on error.
}
error:
Py_XDECREF(parameters);
Py_XDECREF(parameters_iter);