In January 2021 (mid 3.10 development), Sergey Fodoseev and I raised the compile time (and runtime) SQLite version requirements for the sqlite3 standard library extension module to SQLite 3.7.15 (2012-12-12) or newer. That enabled us to clean up the code by getting rid of a lot of preprocessor conditionals and other version specific workarounds.
For Python 3.13 (to be released October 2024), I’m considering to raise the version requirements to either SQLite 3.8.11.1 (2015-07-29), 3.14.2 (2016-09-12), or 3.15.2 (2016-11-28). Preferably the latter.
AFAICS on DistroWatch, we should be fine with any of those SQLite versions, for all major distros[1].
Major clean-ups:
- For SQlite 3.8.11.1, I can remove a lot of conditional code related to CTEs and deterministic functions.
- For SQLite 3.14.2 I no longer need to implement two different variants of the trace callback.
- For SQLite 3.15.2, I can remove special handling for legacy deterministic user function behaviour.
The diff stats look approx. like this:
commit 3c1c9cf589903a70348758cde48f9446e05ae2b4 (HEAD -> sqlite-raise-the-bar)
Date: Fri Jun 16 22:33:55 2023 +0200
Require SQLite 3.15.2
Doc/library/sqlite3.rst | 2 +-
Lib/test/test_sqlite3/test_userfunctions.py | 27 +++++++++------------------
Modules/_sqlite/module.c | 14 ++++----------
configure | 20 ++++++++++----------
configure.ac | 6 +++---
5 files changed, 27 insertions(+), 42 deletions(-)
commit 561f826bb31582d4a15ce30be46d474bdd77e4a4
Date: Fri Jun 16 22:28:52 2023 +0200
Require SQLite 3.14.2
Doc/library/sqlite3.rst | 2 +-
Lib/test/test_sqlite3/test_dbapi.py | 9 +++------
Lib/test/test_sqlite3/test_hooks.py | 4 +---
Modules/_sqlite/connection.c | 39 ---------------------------------------
Modules/_sqlite/module.c | 18 ++++--------------
configure | 20 ++++++++++----------
configure.ac | 6 +++---
7 files changed, 22 insertions(+), 76 deletions(-)
commit 69bc871a4f6b7a5a0c1aab9c5b99d0608fd1906f
Date: Fri Jun 16 22:16:54 2023 +0200
Require SQLite 3.8.11
Doc/library/sqlite3.rst | 5 +----
Lib/test/test_sqlite3/test_backup.py | 2 --
Lib/test/test_sqlite3/test_dbapi.py | 66 +++++++++++++++++++++++++-----------------------------------------
Lib/test/test_sqlite3/test_types.py | 1 -
Lib/test/test_sqlite3/test_userfunctions.py | 7 -------
Modules/_sqlite/blob.c | 8 --------
Modules/_sqlite/connection.c | 20 --------------------
Modules/_sqlite/module.c | 28 ++++------------------------
configure | 20 ++++++++++----------
configure.ac | 6 +++---
10 files changed, 43 insertions(+), 120 deletions(-)
Comments?
-
RHEL-7.9 ships with SQLite 3.7.17 but is EOL in June 2024. ↩︎