Skip to content

Commit

Permalink
Fixed #35412 -- Dropped support for SQLite < 3.31.
Browse files Browse the repository at this point in the history
  • Loading branch information
felixxm authored and sarahboyce committed Apr 29, 2024
1 parent 8c257ce commit 85c154d
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 13 deletions.
15 changes: 6 additions & 9 deletions django/db/backends/sqlite3/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


class DatabaseFeatures(BaseDatabaseFeatures):
minimum_database_version = (3, 27)
minimum_database_version = (3, 31)
test_db_allows_multiple_connections = False
supports_unspecified_pk = True
supports_timezones = False
Expand All @@ -31,18 +31,15 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_parentheses_in_compound = False
can_defer_constraint_checks = True
supports_over_clause = True
supports_frame_range_fixed_distance = Database.sqlite_version_info >= (3, 28, 0)
supports_frame_exclusion = Database.sqlite_version_info >= (3, 28, 0)
supports_aggregate_filter_clause = Database.sqlite_version_info >= (3, 30, 1)
supports_order_by_nulls_modifier = Database.sqlite_version_info >= (3, 30, 0)
# NULLS LAST/FIRST emulation on < 3.30 requires subquery wrapping.
requires_compound_order_by_subquery = Database.sqlite_version_info < (3, 30)
supports_frame_range_fixed_distance = True
supports_frame_exclusion = True
supports_aggregate_filter_clause = True
order_by_nulls_first = True
supports_json_field_contains = False
supports_update_conflicts = True
supports_update_conflicts_with_target = True
supports_stored_generated_columns = Database.sqlite_version_info >= (3, 31, 0)
supports_virtual_generated_columns = Database.sqlite_version_info >= (3, 31, 0)
supports_stored_generated_columns = True
supports_virtual_generated_columns = True
test_collations = {
"ci": "nocase",
"cs": "binary",
Expand Down
2 changes: 1 addition & 1 deletion docs/ref/contrib/gis/install/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Database Library Requirements Supported Versions Notes
PostgreSQL GEOS, GDAL, PROJ, PostGIS 13+ Requires PostGIS.
MySQL GEOS, GDAL 8.0.11+ :ref:`Limited functionality <mysql-spatial-limitations>`.
Oracle GEOS, GDAL 19+ XE not supported.
SQLite GEOS, GDAL, PROJ, SpatiaLite 3.27.0+ Requires SpatiaLite 4.3+
SQLite GEOS, GDAL, PROJ, SpatiaLite 3.31.0+ Requires SpatiaLite 4.3+
================== ============================== ================== =========================================

See also `this comparison matrix`__ on the OSGeo Wiki for
Expand Down
2 changes: 1 addition & 1 deletion docs/ref/databases.txt
Original file line number Diff line number Diff line change
Expand Up @@ -812,7 +812,7 @@ appropriate typecasting.
SQLite notes
============

Django supports SQLite 3.27.0 and later.
Django supports SQLite 3.31.0 and later.

SQLite_ provides an excellent development alternative for applications that
are predominantly read-only or require a smaller installation footprint. As
Expand Down
2 changes: 2 additions & 0 deletions docs/releases/5.1.txt
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,8 @@ Miscellaneous
* The undocumented ``django.urls.converters.get_converter()`` function is
removed.

* The minimum supported version of SQLite is increased from 3.27.0 to 3.31.0.

.. _deprecated-features-5.1:

Features deprecated in 5.1
Expand Down
4 changes: 2 additions & 2 deletions tests/backends/sqlite/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,9 @@ def test_pathlib_name(self):
connections["default"].close()
self.assertTrue(os.path.isfile(os.path.join(tmp, "test.db")))

@mock.patch.object(connection, "get_database_version", return_value=(3, 26))
@mock.patch.object(connection, "get_database_version", return_value=(3, 30))
def test_check_database_version_supported(self, mocked_get_database_version):
msg = "SQLite 3.27 or later is required (found 3.26)."
msg = "SQLite 3.31 or later is required (found 3.30)."
with self.assertRaisesMessage(NotSupportedError, msg):
connection.check_database_version_supported()
self.assertTrue(mocked_get_database_version.called)
Expand Down

0 comments on commit 85c154d

Please sign in to comment.