On 08/07/2012 09:45 PM, Kevin Grittner wrote:
> I also think it's a problem that one can get through the entire
> "Concurrency Control" chapter (mvcc.sgml) without a clue that
> sequences aren't transactional. I think maybe a mention in the
> Introduction section of that chapter with a <ref> would be
> appropriate.
How about this? Is it accurate to suggest that sequences behave as if
they were always in "dirty read" isolation? Or would you instead say
that "changes made to a sequence are immediately visible to all other
transactions" ?
[PATCH] Make sure you can't read through mvcc.sgml without realising
that SEQUENCEs and SERIAL don't follow the rules.
--- doc/src/sgml/mvcc.sgml | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
new file mode 100644
index 8f88582..eed1f85
*** a/doc/src/sgml/mvcc.sgml
--- b/doc/src/sgml/mvcc.sgml
***************
*** 260,265 ****
--- 260,276 ---- command <xref linkend="sql-set-transaction">. </para>
+ <important>
+ <para>
+ Some PostgreSQL data types and functions have special transactional
+ behaviour. Notably, SEQUENCEs
+ behave as if the isolation level is Dirty Read, irrespective
+ of the current isolation level, and are exempt from transaction
+ rollback. See <xref linkend="functions-sequence">.
+ SEQUENCEs are used by the SERIAL data types. See <xref
linkend="datatype-serial">.
+ </para>
+ </important>
+ <sect2 id="xact-read-committed"> <title>Read Committed Isolation Level</title>
--
1.7.11.2
--
Craig Ringer