1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed #35412 -- Dropped support for SQLite < 3.31.

This commit is contained in:
Mariusz Felisiak 2024-04-28 18:22:21 +02:00 committed by Sarah Boyce
parent 8c257cecff
commit 85c154da2f
5 changed files with 12 additions and 13 deletions

View File

@ -9,7 +9,7 @@ from .base import Database
class DatabaseFeatures(BaseDatabaseFeatures): class DatabaseFeatures(BaseDatabaseFeatures):
minimum_database_version = (3, 27) minimum_database_version = (3, 31)
test_db_allows_multiple_connections = False test_db_allows_multiple_connections = False
supports_unspecified_pk = True supports_unspecified_pk = True
supports_timezones = False supports_timezones = False
@ -31,18 +31,15 @@ class DatabaseFeatures(BaseDatabaseFeatures):
supports_parentheses_in_compound = False supports_parentheses_in_compound = False
can_defer_constraint_checks = True can_defer_constraint_checks = True
supports_over_clause = True supports_over_clause = True
supports_frame_range_fixed_distance = Database.sqlite_version_info >= (3, 28, 0) supports_frame_range_fixed_distance = True
supports_frame_exclusion = Database.sqlite_version_info >= (3, 28, 0) supports_frame_exclusion = True
supports_aggregate_filter_clause = Database.sqlite_version_info >= (3, 30, 1) supports_aggregate_filter_clause = True
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)
order_by_nulls_first = True order_by_nulls_first = True
supports_json_field_contains = False supports_json_field_contains = False
supports_update_conflicts = True supports_update_conflicts = True
supports_update_conflicts_with_target = True supports_update_conflicts_with_target = True
supports_stored_generated_columns = Database.sqlite_version_info >= (3, 31, 0) supports_stored_generated_columns = True
supports_virtual_generated_columns = Database.sqlite_version_info >= (3, 31, 0) supports_virtual_generated_columns = True
test_collations = { test_collations = {
"ci": "nocase", "ci": "nocase",
"cs": "binary", "cs": "binary",

View File

@ -59,7 +59,7 @@ Database Library Requirements Supported Versions Notes
PostgreSQL GEOS, GDAL, PROJ, PostGIS 13+ Requires PostGIS. PostgreSQL GEOS, GDAL, PROJ, PostGIS 13+ Requires PostGIS.
MySQL GEOS, GDAL 8.0.11+ :ref:`Limited functionality <mysql-spatial-limitations>`. MySQL GEOS, GDAL 8.0.11+ :ref:`Limited functionality <mysql-spatial-limitations>`.
Oracle GEOS, GDAL 19+ XE not supported. 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 See also `this comparison matrix`__ on the OSGeo Wiki for

View File

@ -812,7 +812,7 @@ appropriate typecasting.
SQLite notes 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 SQLite_ provides an excellent development alternative for applications that
are predominantly read-only or require a smaller installation footprint. As are predominantly read-only or require a smaller installation footprint. As

View File

@ -419,6 +419,8 @@ Miscellaneous
* The undocumented ``django.urls.converters.get_converter()`` function is * The undocumented ``django.urls.converters.get_converter()`` function is
removed. removed.
* The minimum supported version of SQLite is increased from 3.27.0 to 3.31.0.
.. _deprecated-features-5.1: .. _deprecated-features-5.1:
Features deprecated in 5.1 Features deprecated in 5.1

View File

@ -109,9 +109,9 @@ class Tests(TestCase):
connections["default"].close() connections["default"].close()
self.assertTrue(os.path.isfile(os.path.join(tmp, "test.db"))) 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): 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): with self.assertRaisesMessage(NotSupportedError, msg):
connection.check_database_version_supported() connection.check_database_version_supported()
self.assertTrue(mocked_get_database_version.called) self.assertTrue(mocked_get_database_version.called)