Fixed #29544 -- Fixed regex lookup on MariaDB.
Regression in 4249076844
.
This commit is contained in:
parent
f1fc7d6b78
commit
39e287d8bf
|
@ -326,11 +326,19 @@ class DatabaseWrapper(BaseDatabaseWrapper):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def mysql_version(self):
|
def mysql_server_info(self):
|
||||||
with self.temporary_connection() as cursor:
|
with self.temporary_connection() as cursor:
|
||||||
cursor.execute('SELECT VERSION()')
|
cursor.execute('SELECT VERSION()')
|
||||||
server_info = cursor.fetchone()[0]
|
return cursor.fetchone()[0]
|
||||||
match = server_version_re.match(server_info)
|
|
||||||
|
@cached_property
|
||||||
|
def mysql_version(self):
|
||||||
|
match = server_version_re.match(self.mysql_server_info)
|
||||||
if not match:
|
if not match:
|
||||||
raise Exception('Unable to determine MySQL version from version string %r' % server_info)
|
raise Exception('Unable to determine MySQL version from version string %r' % self.mysql_server_info)
|
||||||
return tuple(int(x) for x in match.groups())
|
return tuple(int(x) for x in match.groups())
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def mysql_is_mariadb(self):
|
||||||
|
# MariaDB isn't officially supported.
|
||||||
|
return 'mariadb' in self.mysql_server_info.lower()
|
||||||
|
|
|
@ -285,8 +285,8 @@ class DatabaseOperations(BaseDatabaseOperations):
|
||||||
|
|
||||||
def regex_lookup(self, lookup_type):
|
def regex_lookup(self, lookup_type):
|
||||||
# REGEXP BINARY doesn't work correctly in MySQL 8+ and REGEXP_LIKE
|
# REGEXP BINARY doesn't work correctly in MySQL 8+ and REGEXP_LIKE
|
||||||
# doesn't exist in MySQL 5.6.
|
# doesn't exist in MySQL 5.6 or in MariaDB.
|
||||||
if self.connection.mysql_version < (8, 0, 0):
|
if self.connection.mysql_version < (8, 0, 0) or self.connection.mysql_is_mariadb:
|
||||||
if lookup_type == 'regex':
|
if lookup_type == 'regex':
|
||||||
return '%s REGEXP BINARY %s'
|
return '%s REGEXP BINARY %s'
|
||||||
return '%s REGEXP %s'
|
return '%s REGEXP %s'
|
||||||
|
|
|
@ -9,4 +9,5 @@ Django 2.0.8 fixes several bugs in 2.0.7.
|
||||||
Bugfixes
|
Bugfixes
|
||||||
========
|
========
|
||||||
|
|
||||||
* ...
|
* Fixed a regression in Django 2.0.7 that broke the ``regex`` lookup on MariaDB
|
||||||
|
(even though MariaDB isn't officially supported) (:ticket:`29544`).
|
||||||
|
|
Loading…
Reference in New Issue