Fixed #31770 -- Allowed select_for_update(of) on MySQL 8.0.1+.
This commit is contained in:
parent
f36862b69c
commit
ca6c5e5fc2
|
@ -117,6 +117,10 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||||
return self.connection.mysql_version >= (10, 3, 0)
|
return self.connection.mysql_version >= (10, 3, 0)
|
||||||
return self.connection.mysql_version >= (8, 0, 1)
|
return self.connection.mysql_version >= (8, 0, 1)
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def has_select_for_update_of(self):
|
||||||
|
return not self.connection.mysql_is_mariadb and self.connection.mysql_version >= (8, 0, 1)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def supports_explain_analyze(self):
|
def supports_explain_analyze(self):
|
||||||
return self.connection.mysql_is_mariadb or self.connection.mysql_version >= (8, 0, 18)
|
return self.connection.mysql_is_mariadb or self.connection.mysql_version >= (8, 0, 18)
|
||||||
|
|
|
@ -639,7 +639,7 @@ Option MariaDB MySQL
|
||||||
=============== ========= ==========
|
=============== ========= ==========
|
||||||
``SKIP LOCKED`` X (≥8.0.1)
|
``SKIP LOCKED`` X (≥8.0.1)
|
||||||
``NOWAIT`` X (≥10.3) X (≥8.0.1)
|
``NOWAIT`` X (≥10.3) X (≥8.0.1)
|
||||||
``OF``
|
``OF`` X (≥8.0.1)
|
||||||
``NO KEY``
|
``NO KEY``
|
||||||
=============== ========= ==========
|
=============== ========= ==========
|
||||||
|
|
||||||
|
|
|
@ -1729,9 +1729,9 @@ them::
|
||||||
|
|
||||||
Currently, the ``postgresql``, ``oracle``, and ``mysql`` database
|
Currently, the ``postgresql``, ``oracle``, and ``mysql`` database
|
||||||
backends support ``select_for_update()``. However, MariaDB 10.3+ supports only
|
backends support ``select_for_update()``. However, MariaDB 10.3+ supports only
|
||||||
the ``nowait`` argument and MySQL 8.0.1+ supports the ``nowait`` and
|
the ``nowait`` argument and MySQL 8.0.1+ supports the ``nowait``,
|
||||||
``skip_locked`` arguments. MySQL and MariaDB don't support the ``of`` argument.
|
``skip_locked``, and ``of`` arguments. The ``no_key`` argument is supported
|
||||||
The ``no_key`` argument is supported only on PostgreSQL.
|
only on PostgreSQL.
|
||||||
|
|
||||||
Passing ``nowait=True``, ``skip_locked=True``, ``no_key=True``, or ``of`` to
|
Passing ``nowait=True``, ``skip_locked=True``, ``no_key=True``, or ``of`` to
|
||||||
``select_for_update()`` using database backends that do not support these
|
``select_for_update()`` using database backends that do not support these
|
||||||
|
@ -1769,6 +1769,8 @@ raised if ``select_for_update()`` is used in autocommit mode.
|
||||||
|
|
||||||
The ``no_key`` argument was added.
|
The ``no_key`` argument was added.
|
||||||
|
|
||||||
|
The ``of`` argument was allowed on MySQL 8.0.1+.
|
||||||
|
|
||||||
``raw()``
|
``raw()``
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,9 @@ Models
|
||||||
* :class:`FilteredRelation() <django.db.models.FilteredRelation>` now supports
|
* :class:`FilteredRelation() <django.db.models.FilteredRelation>` now supports
|
||||||
nested relations.
|
nested relations.
|
||||||
|
|
||||||
|
* The ``of`` argument of :meth:`.QuerySet.select_for_update()` is now allowed
|
||||||
|
on MySQL 8.0.1+.
|
||||||
|
|
||||||
Requests and Responses
|
Requests and Responses
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue