mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #34992 -- Fixed DatabaseFeatures.allows_group_by_selected_pks on MariaDB with ONLY_FULL_GROUP_BY sql mode.
Regression in 041551d716
.
This commit is contained in:
parent
0203771b62
commit
0257426fe1
@ -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
|
||||
@ -319,3 +318,9 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||
def has_native_uuid_field(self):
|
||||
is_mariadb = self.connection.mysql_is_mariadb
|
||||
return is_mariadb and self.connection.mysql_version >= (10, 7)
|
||||
|
||||
@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`).
|
||||
|
@ -28,3 +28,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…
Reference in New Issue
Block a user