]> granicus.if.org Git - postgresql/commitdiff
Clarify that ORDER BY/FOR UPDATE can't malfunction at higher iso levels.
authorRobert Haas <rhaas@postgresql.org>
Fri, 28 Oct 2011 16:02:04 +0000 (12:02 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 28 Oct 2011 16:02:04 +0000 (12:02 -0400)
Kevin Grittner

doc/src/sgml/ref/select.sgml

index 636435fe1d8b94adffc1edc4307f8f7ce4d05600..cc8cd48583a59f7a3e15ba7ae799dcc3b003b30f 100644 (file)
@@ -1281,7 +1281,8 @@ ROLLBACK TO s;
 
   <caution>
    <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
     order.  This is because <literal>ORDER BY</> is applied first.
     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;
     only if concurrent updates of the ordering columns are expected and a
     strictly sorted result is required.
    </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>
   </refsect2>