[New-bugs-announce] [issue44042] [sqlite3] _pysqlite_connection_begin() optimisations
Erlend Egeberg Aasland
report at bugs.python.org
Tue May 4 19:41:24 EDT 2021
New submission from Erlend Egeberg Aasland <erlend.aasland at innova.no>:
The following optimisations can be applied to _pysqlite_connection_begin():
1. Return an int instead of a PyObject pointer
Per now, we do Py_RETURN_NONE and Py_DECREF(result) if _pysqlite_connection_begin() was successful (normally the case). There's no reason to do this. Let's just it the C way: return -1 on error and 0 if things are ok.
2. Defer error checking till post sqlite3_finalize()
Any error code returned by sqlite3_step() will also be returned by sqlite3_finalize() for the same statement. From the SQLite docs:
"If the most recent evaluation of statement S failed, then sqlite3_finalize(S) returns the appropriate error code or extended error code."
3. Move _pysqlite_connection_begin() to Modules/_sqlite/cursor.c
The single use is in _pysqlite_query_execute() in cursor.c. Moving it makes it possible for the compiler to apply more optimisations. At least so I've heard :)
(As a side effect, the namespace will be cleaner.)
----------
messages: 392967
nosy: berker.peksag, erlendaasland, serhiy.storchaka
priority: normal
severity: normal
status: open
title: [sqlite3] _pysqlite_connection_begin() optimisations
type: performance
versions: Python 3.11
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44042>
_______________________________________
More information about the New-bugs-announce
mailing list