Commit 9cf12dfd authored by Robert Haas's avatar Robert Haas

Clarify that ORDER BY/FOR UPDATE can't malfunction at higher iso levels.

Kevin Grittner
parent 6c21105f
...@@ -1281,7 +1281,8 @@ ROLLBACK TO s; ...@@ -1281,7 +1281,8 @@ ROLLBACK TO s;
<caution> <caution>
<para> <para>
It is possible for a <command>SELECT</> command using <literal>ORDER It is possible for a <command>SELECT</> command running at the <literal>READ
COMMITTED</literal> transaction isolation level and using <literal>ORDER
BY</literal> and <literal>FOR UPDATE/SHARE</literal> to return rows out of BY</literal> and <literal>FOR UPDATE/SHARE</literal> to return rows out of
order. This is because <literal>ORDER BY</> is applied first. order. This is because <literal>ORDER BY</> is applied first.
The command sorts the result, but might then block trying to obtain a lock The command sorts the result, but might then block trying to obtain a lock
...@@ -1302,6 +1303,13 @@ SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss ORDER BY column1; ...@@ -1302,6 +1303,13 @@ SELECT * FROM (SELECT * FROM mytable FOR UPDATE) ss ORDER BY column1;
only if concurrent updates of the ordering columns are expected and a only if concurrent updates of the ordering columns are expected and a
strictly sorted result is required. strictly sorted result is required.
</para> </para>
<para>
At the <literal>REPEATABLE READ</literal> or <literal>SERIALIZABLE</literal>
transaction isolation level this would cause a serialization failure (with
a <literal>SQLSTATE</literal> of <literal>'40001'</literal>), so there is
no possibility of receiving rows out of order under these isolation levels.
</para>
</caution> </caution>
</refsect2> </refsect2>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment