[New-bugs-announce] [issue44976] [sqlite3] lazy creation of result rows

Erlend E. Aasland report at bugs.python.org
Sun Aug 22 05:06:30 EDT 2021


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

Currently, we build the first result row in the _pysqlite_query_execute() loop if sqlite3_step() returned SQLITE_ROW. When the user asks for a row (for example, using sqlite3.Cursor.fetchone()), this pre-built row is returned, and the next row is prepared.

Suggesting to lazily build result rows instead.

Cons:
- no result tuples are built unless sqlite3.Cursor.fetch*() is called
- no need to keep the next result row (tuple) in pysqlite_Cursor; rows are built on demand
- pysqlite_cursor_iternext() is vastly simplified (50% less lines of code)
- the main loop in _pysqlite_query_execute() is further simplified

Cons:
- code churn


git diff main --shortstat: 2 files changed, 29 insertions(+), 58 deletions(-)

----------
components: Extension Modules
messages: 400062
nosy: berker.peksag, erlendaasland, serhiy.storchaka
priority: normal
severity: normal
status: open
title: [sqlite3] lazy creation of result rows
type: enhancement

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44976>
_______________________________________


More information about the New-bugs-announce mailing list