mirror of
https://github.com/django/django.git
synced 2025-01-03 15:06:09 +00:00
Updated docs after changing select_for_update() to raise NotSupportedError.
Follow up to 054a44d6f0
.
This commit is contained in:
parent
5dbf1c4b23
commit
2a6b4e6521
@ -569,7 +569,8 @@ Row locking with ``QuerySet.select_for_update()``
|
|||||||
|
|
||||||
MySQL does not support the ``NOWAIT`` and ``SKIP LOCKED`` options to the
|
MySQL does not support the ``NOWAIT`` and ``SKIP LOCKED`` options to the
|
||||||
``SELECT ... FOR UPDATE`` statement. If ``select_for_update()`` is used with
|
``SELECT ... FOR UPDATE`` statement. If ``select_for_update()`` is used with
|
||||||
``nowait=True`` or ``skip_locked=True`` then a ``DatabaseError`` will be raised.
|
``nowait=True`` or ``skip_locked=True``, then a
|
||||||
|
:exc:`~django.db.NotSupportedError` is raised.
|
||||||
|
|
||||||
Automatic typecasting can cause unexpected results
|
Automatic typecasting can cause unexpected results
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
@ -1640,8 +1640,8 @@ backends support ``select_for_update()``. However, MySQL doesn't support the
|
|||||||
``nowait`` and ``skip_locked`` arguments.
|
``nowait`` and ``skip_locked`` arguments.
|
||||||
|
|
||||||
Passing ``nowait=True`` or ``skip_locked=True`` to ``select_for_update()``
|
Passing ``nowait=True`` or ``skip_locked=True`` to ``select_for_update()``
|
||||||
using database backends that do not support these options, such as MySQL, will
|
using database backends that do not support these options, such as MySQL,
|
||||||
cause a :exc:`~django.db.DatabaseError` to be raised. This prevents code from
|
raises a :exc:`~django.db.NotSupportedError`. This prevents code from
|
||||||
unexpectedly blocking.
|
unexpectedly blocking.
|
||||||
|
|
||||||
Evaluating a queryset with ``select_for_update()`` in autocommit mode on
|
Evaluating a queryset with ``select_for_update()`` in autocommit mode on
|
||||||
|
@ -134,7 +134,7 @@ class SelectForUpdateTests(TransactionTestCase):
|
|||||||
@skipUnlessDBFeature('has_select_for_update')
|
@skipUnlessDBFeature('has_select_for_update')
|
||||||
def test_unsupported_nowait_raises_error(self):
|
def test_unsupported_nowait_raises_error(self):
|
||||||
"""
|
"""
|
||||||
DatabaseError is raised if a SELECT...FOR UPDATE NOWAIT is run on
|
NotSupportedError is raised if a SELECT...FOR UPDATE NOWAIT is run on
|
||||||
a database backend that supports FOR UPDATE but not NOWAIT.
|
a database backend that supports FOR UPDATE but not NOWAIT.
|
||||||
"""
|
"""
|
||||||
with self.assertRaisesMessage(NotSupportedError, 'NOWAIT is not supported on this database backend.'):
|
with self.assertRaisesMessage(NotSupportedError, 'NOWAIT is not supported on this database backend.'):
|
||||||
@ -145,8 +145,8 @@ class SelectForUpdateTests(TransactionTestCase):
|
|||||||
@skipUnlessDBFeature('has_select_for_update')
|
@skipUnlessDBFeature('has_select_for_update')
|
||||||
def test_unsupported_skip_locked_raises_error(self):
|
def test_unsupported_skip_locked_raises_error(self):
|
||||||
"""
|
"""
|
||||||
DatabaseError is raised if a SELECT...FOR UPDATE SKIP LOCKED is run on
|
NotSupportedError is raised if a SELECT...FOR UPDATE SKIP LOCKED is run
|
||||||
a database backend that supports FOR UPDATE but not SKIP LOCKED.
|
on a database backend that supports FOR UPDATE but not SKIP LOCKED.
|
||||||
"""
|
"""
|
||||||
with self.assertRaisesMessage(NotSupportedError, 'SKIP LOCKED is not supported on this database backend.'):
|
with self.assertRaisesMessage(NotSupportedError, 'SKIP LOCKED is not supported on this database backend.'):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
@ -189,7 +189,7 @@ class SelectForUpdateTests(TransactionTestCase):
|
|||||||
|
|
||||||
@skipIfDBFeature('supports_select_for_update_with_limit')
|
@skipIfDBFeature('supports_select_for_update_with_limit')
|
||||||
def test_unsupported_select_for_update_with_limit(self):
|
def test_unsupported_select_for_update_with_limit(self):
|
||||||
msg = 'LIMIT/OFFSET not supported with select_for_update on this database backend.'
|
msg = 'LIMIT/OFFSET is not supported with select_for_update on this database backend.'
|
||||||
with self.assertRaisesMessage(NotSupportedError, msg):
|
with self.assertRaisesMessage(NotSupportedError, msg):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
list(Person.objects.all().order_by('pk').select_for_update()[1:2])
|
list(Person.objects.all().order_by('pk').select_for_update()[1:2])
|
||||||
|
Loading…
Reference in New Issue
Block a user