[New-bugs-announce] [issue44079] [sqlite3] optimisation: remove statement weak ref list from connection object

Erlend E. Aasland report at bugs.python.org
Sat May 8 15:43:24 EDT 2021

New submission from Erlend E. Aasland <erlend.aasland at innova.no>:

Today, the sqlite3 extension module keeps two[1] lists of statements:

 1. The statement cache[2], stored in pysqlite_Connection.statement_cache
 2. A weak ref. list (hard coded limited to 200 statements in _pysqlite_drop_unused_statement_references()), stored in pysqlite_Connection.statements

AFAICS, there's no benefit in keeping both. Suggesting to remove the latter.

- less lines of code to maintain
- clearer code
- one less data member in pysqlite_Connection
- improved test coverage (there are currently no coverage for _pysqlite_drop_unused_statement_references()[3])

- the current code works / "code churn"

$ git diff --shortstat 
 1 file changed, 13 insertions(+), 60 deletions(-)

[1] Actually, there's three lists: SQLite also keeps a list, available using sqlite3_stmt_next()
[2] See bpo-42862 for suggested improvements to the current cache implementation
[3] See bpo-43553 for improving the code coverage of the sqlite3 extension module

assignee: erlendaasland
components: Extension Modules
messages: 393282
nosy: berker.peksag, erlendaasland, serhiy.storchaka
priority: normal
severity: normal
status: open
title: [sqlite3] optimisation: remove statement weak ref list from connection object
type: resource usage
versions: Python 3.11

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list