summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2020-07-03 00:26:01 +0500
committerGitHub <noreply@github.com>2020-07-02 21:26:01 +0200
commit37389ae99eb17ee8e2db39545d0e13f5ab8f006a (patch)
tree3c268980f060bf7601a80b92c91262c125d4fa8c
parentb142bd4a1b83b77c5c81a8cf5a80a63608f96ad4 (diff)
Fixed #31758 -- Removed unneeded BytesToCharFieldConversionMixin.
Bug was fixed in mysqlclient 1.3.13.
-rw-r--r--django/db/backends/base/features.py3
-rw-r--r--django/db/backends/mysql/features.py1
-rw-r--r--django/db/models/functions/text.py20
3 files changed, 2 insertions, 22 deletions
diff --git a/django/db/backends/base/features.py b/django/db/backends/base/features.py
index 88064e66f2..e156c56bda 100644
--- a/django/db/backends/base/features.py
+++ b/django/db/backends/base/features.py
@@ -253,9 +253,6 @@ class BaseDatabaseFeatures:
# Does the backend support keyword parameters for cursor.callproc()?
supports_callproc_kwargs = False
- # Convert CharField results from bytes to str in database functions.
- db_functions_convert_bytes_to_str = False
-
# What formats does the backend EXPLAIN syntax support?
supported_explain_formats = set()
diff --git a/django/db/backends/mysql/features.py b/django/db/backends/mysql/features.py
index b8aed23207..06a111a75b 100644
--- a/django/db/backends/mysql/features.py
+++ b/django/db/backends/mysql/features.py
@@ -41,7 +41,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
SET V_I = P_I;
END;
"""
- db_functions_convert_bytes_to_str = True
# Neither MySQL nor MariaDB support partial indexes.
supports_partial_indexes = False
supports_order_by_nulls_modifier = False
diff --git a/django/db/models/functions/text.py b/django/db/models/functions/text.py
index 7289d5fb97..4c52222ba1 100644
--- a/django/db/models/functions/text.py
+++ b/django/db/models/functions/text.py
@@ -5,22 +5,6 @@ from django.db.models.functions import Coalesce
from django.db.models.lookups import Transform
-class BytesToCharFieldConversionMixin:
- """
- Convert CharField results from bytes to str.
-
- MySQL returns long data types (bytes) instead of chars when it can't
- determine the length of the result string. For example:
- LPAD(column1, CHAR_LENGTH(column2), ' ')
- returns the LONGTEXT (bytes) instead of VARCHAR.
- """
- def convert_value(self, value, expression, connection):
- if connection.features.db_functions_convert_bytes_to_str:
- if self.output_field.get_internal_type() == 'CharField' and isinstance(value, bytes):
- return value.decode()
- return super().convert_value(value, expression, connection)
-
-
class MySQLSHA2Mixin:
def as_mysql(self, compiler, connection, **extra_content):
return super().as_sql(
@@ -172,7 +156,7 @@ class Lower(Transform):
lookup_name = 'lower'
-class LPad(BytesToCharFieldConversionMixin, Func):
+class LPad(Func):
function = 'LPAD'
output_field = CharField()
@@ -204,7 +188,7 @@ class Ord(Transform):
return super().as_sql(compiler, connection, function='UNICODE', **extra_context)
-class Repeat(BytesToCharFieldConversionMixin, Func):
+class Repeat(Func):
function = 'REPEAT'
output_field = CharField()