diff options
| author | Gagaro <gagaro42@gmail.com> | 2022-03-22 09:11:46 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-03-22 09:45:59 +0100 |
| commit | 7325d291524827806feed271a077ea23e2b1b21f (patch) | |
| tree | ac0e84fdb52a27c7795f88f70ef8fc9f71ebccbb | |
| parent | f77216bd1a777e219aeada964c5af134f4112111 (diff) | |
Refs #30581 -- Fixed DatabaseFeatures.bare_select_suffix on MySQL < 8 and MariaDB < 10.4.
| -rw-r--r-- | django/db/backends/mysql/features.py | 11 | ||||
| -rw-r--r-- | tests/backends/tests.py | 6 |
2 files changed, 17 insertions, 0 deletions
diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py index 357e431524..834ea4f88f 100644 --- a/django/db/backends/mysql/features.py +++ b/django/db/backends/mysql/features.py @@ -57,6 +57,17 @@ class DatabaseFeatures(BaseDatabaseFeatures): return (5, 7) @cached_property + def bare_select_suffix(self): + if ( + self.connection.mysql_is_mariadb and self.connection.mysql_version < (10, 4) + ) or ( + not self.connection.mysql_is_mariadb + and self.connection.mysql_version < (8,) + ): + return " FROM DUAL" + return "" + + @cached_property def test_collations(self): charset = "utf8" if self.connection.mysql_is_mariadb and self.connection.mysql_version >= ( diff --git a/tests/backends/tests.py b/tests/backends/tests.py index 28e00a04ca..85b0e55cb0 100644 --- a/tests/backends/tests.py +++ b/tests/backends/tests.py @@ -548,6 +548,12 @@ class BackendTestCase(TransactionTestCase): ) self.assertEqual(tuple(kwargs["extra"].values()), params[1:]) + def test_queries_bare_where(self): + sql = f"SELECT 1{connection.features.bare_select_suffix} WHERE 1=1" + with connection.cursor() as cursor: + cursor.execute(sql) + self.assertEqual(cursor.fetchone(), (1,)) + def test_timezone_none_use_tz_false(self): connection.ensure_connection() with self.settings(TIME_ZONE=None, USE_TZ=False): |
