Fixed #32908 -- Allowed select_for_update(skip_locked) on MariaDB 10.6+.
This commit is contained in:
parent
5013798fe9
commit
77b88fe621
|
@ -185,7 +185,9 @@ class DatabaseFeatures(BaseDatabaseFeatures):
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def has_select_for_update_skip_locked(self):
|
def has_select_for_update_skip_locked(self):
|
||||||
return not self.connection.mysql_is_mariadb and self.connection.mysql_version >= (8, 0, 1)
|
if self.connection.mysql_is_mariadb:
|
||||||
|
return self.connection.mysql_version >= (10, 6)
|
||||||
|
return self.connection.mysql_version >= (8, 0, 1)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def has_select_for_update_nowait(self):
|
def has_select_for_update_nowait(self):
|
||||||
|
|
|
@ -686,7 +686,7 @@ a :exc:`~django.db.NotSupportedError` is raised.
|
||||||
=============== ========= ==========
|
=============== ========= ==========
|
||||||
Option MariaDB MySQL
|
Option MariaDB MySQL
|
||||||
=============== ========= ==========
|
=============== ========= ==========
|
||||||
``SKIP LOCKED`` X (≥8.0.1)
|
``SKIP LOCKED`` X (≥10.6) X (≥8.0.1)
|
||||||
``NOWAIT`` X (≥10.3) X (≥8.0.1)
|
``NOWAIT`` X (≥10.3) X (≥8.0.1)
|
||||||
``OF`` X (≥8.0.1)
|
``OF`` X (≥8.0.1)
|
||||||
``NO KEY``
|
``NO KEY``
|
||||||
|
|
|
@ -1792,11 +1792,11 @@ them::
|
||||||
>>> Person.objects.select_related('hometown').select_for_update().exclude(hometown=None)
|
>>> Person.objects.select_related('hometown').select_for_update().exclude(hometown=None)
|
||||||
<QuerySet [<Person: ...)>, ...]>
|
<QuerySet [<Person: ...)>, ...]>
|
||||||
|
|
||||||
Currently, the ``postgresql``, ``oracle``, and ``mysql`` database
|
The ``postgresql``, ``oracle``, and ``mysql`` database backends support
|
||||||
backends support ``select_for_update()``. However, MariaDB 10.3+ supports only
|
``select_for_update()``. However, MariaDB 10.3+ only supports the ``nowait``
|
||||||
the ``nowait`` argument and MySQL 8.0.1+ supports the ``nowait``,
|
argument, MariaDB 10.6+ also supports the ``skip_locked`` argument, and MySQL
|
||||||
``skip_locked``, and ``of`` arguments. The ``no_key`` argument is supported
|
8.0.1+ supports the ``nowait``, ``skip_locked``, and ``of`` arguments. The
|
||||||
only on PostgreSQL.
|
``no_key`` argument is only supported 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
|
||||||
|
@ -1836,6 +1836,10 @@ raised if ``select_for_update()`` is used in autocommit mode.
|
||||||
|
|
||||||
The ``of`` argument was allowed on MySQL 8.0.1+.
|
The ``of`` argument was allowed on MySQL 8.0.1+.
|
||||||
|
|
||||||
|
.. versionchanged:: 4.0
|
||||||
|
|
||||||
|
The ``skip_locked`` argument was allowed on MariaDB 10.6+.
|
||||||
|
|
||||||
``raw()``
|
``raw()``
|
||||||
~~~~~~~~~
|
~~~~~~~~~
|
||||||
|
|
||||||
|
|
|
@ -274,6 +274,9 @@ Models
|
||||||
* The new :attr:`.Aggregate.empty_aggregate_value` attribute allows specifying
|
* The new :attr:`.Aggregate.empty_aggregate_value` attribute allows specifying
|
||||||
a value to return when the aggregation is used over an empty result set.
|
a value to return when the aggregation is used over an empty result set.
|
||||||
|
|
||||||
|
* The ``skip_locked`` argument of :meth:`.QuerySet.select_for_update()` is now
|
||||||
|
allowed on MariaDB 10.6+.
|
||||||
|
|
||||||
Requests and Responses
|
Requests and Responses
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue