It is possible for a SELECT> command using both
- LIMIT and FOR UPDATE/SHARE
+ LIMIT and FOR UPDATE/SHARE
clauses to return fewer rows than specified by LIMIT.
This is because LIMIT> is applied first. The command
selects the specified number of rows,
- but might then block trying to obtain lock on one or more of them.
+ but might then block trying to obtain a lock on one or more of them.
Once the SELECT> unblocks, the row might have been deleted
or updated so that it does not meet the query WHERE> condition
anymore, in which case it will not be returned.
+
+
+ Similarly, it is possible for a SELECT> command
+ using ORDER BY and FOR
+ UPDATE/SHARE to return rows out of order. This is
+ because ORDER BY> is applied first. The command
+ orders the result, but might then block trying to obtain a lock
+ on one or more of the rows. Once the SELECT>
+ unblocks, one of the ordered columns might have been modified
+ and be returned out of order. A workaround is to perform
+ SELECT ... FOR UPDATE/SHARE> and then SELECT
+ ... ORDER BY>.
+
+