mirror of
https://github.com/django/django.git
synced 2025-03-14 03:10:45 +00:00
[4.2.x] Fixed #34992 -- Fixed DatabaseFeatures.allows_group_by_selected_pks on MariaDB with ONLY_FULL_GROUP_BY sql mode.
Regression in 041551d716b69ee7c81199eee86a2d10a72e15ab. Backport of 0257426fe1fe9d146fd5813f09d909917ff59360 from main.
This commit is contained in:
parent
bac9e94ace
commit
450d518d2f
@ -6,7 +6,6 @@ from django.utils.functional import cached_property
|
||||
|
||||
class DatabaseFeatures(BaseDatabaseFeatures):
|
||||
empty_fetchmany_value = ()
|
||||
allows_group_by_selected_pks = True
|
||||
related_fields_match_type = True
|
||||
# MySQL doesn't support sliced subqueries with IN/ALL/ANY/SOME.
|
||||
allow_sliced_subqueries_with_in = False
|
||||
@ -348,3 +347,9 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||
if self.connection.mysql_is_mariadb:
|
||||
return self.connection.mysql_version >= (10, 5, 2)
|
||||
return True
|
||||
|
||||
@cached_property
|
||||
def allows_group_by_selected_pks(self):
|
||||
if self.connection.mysql_is_mariadb:
|
||||
return "ONLY_FULL_GROUP_BY" not in self.connection.sql_mode
|
||||
return True
|
||||
|
@ -27,3 +27,7 @@ Bugfixes
|
||||
|
||||
* Fixed a regression in Django 4.2 where checkboxes in the admin would be
|
||||
centered on narrower screen widths (:ticket:`34994`).
|
||||
|
||||
* Fixed a regression in Django 4.2 that caused a crash of querysets with
|
||||
aggregations on MariaDB when the ``ONLY_FULL_GROUP_BY`` SQL mode was enabled
|
||||
(:ticket:`34992`).
|
||||
|
@ -42,3 +42,21 @@ class TestFeatures(TestCase):
|
||||
_connection.sql_mode = {"NO_AUTO_VALUE_ON_ZERO"}
|
||||
database_features = DatabaseFeatures(_connection)
|
||||
self.assertIs(database_features.allows_auto_pk_0, True)
|
||||
|
||||
def test_allows_group_by_selected_pks(self):
|
||||
with mock.MagicMock() as _connection:
|
||||
_connection.mysql_is_mariadb = False
|
||||
database_features = DatabaseFeatures(_connection)
|
||||
self.assertIs(database_features.allows_group_by_selected_pks, True)
|
||||
|
||||
with mock.MagicMock() as _connection:
|
||||
_connection.mysql_is_mariadb = False
|
||||
_connection.sql_mode = {}
|
||||
database_features = DatabaseFeatures(_connection)
|
||||
self.assertIs(database_features.allows_group_by_selected_pks, True)
|
||||
|
||||
with mock.MagicMock() as _connection:
|
||||
_connection.mysql_is_mariadb = True
|
||||
_connection.sql_mode = {"ONLY_FULL_GROUP_BY"}
|
||||
database_features = DatabaseFeatures(_connection)
|
||||
self.assertIs(database_features.allows_group_by_selected_pks, False)
|
||||
|
Loading…
x
Reference in New Issue
Block a user