[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>

More information about the New-bugs-announce mailing list