Re: [PATCH] Docs: Make notes on sequences and rollback more obvious - Mailing list pgsql-hackers

From Craig Ringer
Subject Re: [PATCH] Docs: Make notes on sequences and rollback more obvious
Date
Msg-id 5031F930.3010001@ringerc.id.au
Whole thread Raw
In response to Re: [PATCH] Docs: Make notes on sequences and rollback more obvious  (Craig Ringer <ringerc@ringerc.id.au>)
Responses Re: [PATCH] Docs: Make notes on sequences and rollback more obvious
List pgsql-hackers
Trying again with the attachments; the archiver only seemed to see the 
first patch despite all three being attached. Including patches inline; 
if you want 'em prettier, see:
  https://github.com/ringerc/postgres/tree/sequence_documentation_fixes


Subject: [PATCH 1/3] Make sure you can't read through mvcc.sgml without realising that not everything is MVCC.


--- doc/src/sgml/mvcc.sgml | 12 ++++++++++++ 1 file changed, 12 insertions(+)

diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
new file mode 100644
index 8f88582..9dc65f5
*** a/doc/src/sgml/mvcc.sgml
--- b/doc/src/sgml/mvcc.sgml
***************
*** 260,265 ****
--- 260,277 ----      command <xref linkend="sql-set-transaction">.     </para>

+    <important>
+      <para>
+        Some <productname>PostgreSQL</productname> data types and 
functions have
+        special rules regarding transactional behaviour.  In 
particular, changes
+        made to a <literal>SEQUENCE</literal> (and therefore the 
counter of a
+        <literal>SERIAL</literal>) are immediately visible to all other
+        transactions and are not rolled back if the transaction that 
made the
+        changes aborts.  See <xref linkend="functions-sequence"> and
+        <xref linkend="datatype-serial">.
+      </para>
+    </important>
+    <sect2 id="xact-read-committed">     <title>Read Committed Isolation Level</title>

-- 1.7.11.2





Subject: [PATCH 2/3] Collect a list of features with abberant 
transactional behaviour



--- doc/src/sgml/mvcc.sgml | 67 
++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+)

diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
new file mode 100644
index 9dc65f5..e2930c9
*** a/doc/src/sgml/mvcc.sgml
--- b/doc/src/sgml/mvcc.sgml
*************** SELECT pg_advisory_lock(q.id) FROM
*** 1540,1543 ****
--- 1540,1610 ----      indexes should be used instead.     </para>    </sect1>
+
+   <sect1 id="mvcc-exceptions">
+    <title>Exceptions to normal transactional rules</title>
+
+    <para>
+     Some PostgreSQL features, functions and data types differ from the
+     usual transactional behaviour described in this chapter. Differences
+     are generally mentioned in the documentation sections for the
+     features they affect. Such exceptions are collected here for
+     easy reference.
+    </para>
+
+    <para>
+     The following actions and features don't follow the typical
+     transactional rules:
+    </para>
+
+    <itemizedlist>
+     <listitem>
+      <para>
+       Serial pseudo-types <xref linkend="datatype-serial">
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <literal>SEQUENCE</literal>s - <xref linkend="functions-sequence">
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Advisory locks - <xref linkend="advisory-locks">
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Disk writes to files outside the database, as performed by
+       <literal>COPY ... TO</literal>, adminpack functions, and other 
add-ons.
+       See <xref linkend="sql-copy">, <xref linkend="adminpack">.
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       Any network I/O or inter-process communication not explicitly
+       described as transactional in its documentation. For example,
+       sending an email from PL/PerlU would not be transactional;
+       the email would be sent before the transaction commits and
+       could not be un-sent if the transaction were to roll back.
+     </listitem>
+    </itemizedlist>
+
+    <note>
+     <para>
+      When working with external non-transactional resources like files
+      on disk or network sockets the two-phase commit feature can be
+      useful. See: <xref linkend="sql-prepare-transaction">
+     </para>
+     <para>
+      LISTEN/NOTIFY provides a lighter weight but still 
transaction-friendly method of
+      triggering changes outside the database in response to changes 
inside the
+      database. A LISTENing helper program running outside the database can
+      perform actions when it gets a NOTIFY after a transaction 
commits.  See:
+      <xref linkend="sql-notify">.
+     </para>
+    </note>
+
+   </sect1>
+   </chapter>
-- 1.7.11.2





Subject: [PATCH 3/3] Change xref of <important/> note re SERIAL to point 
to mvcc-exceptions





--- doc/src/sgml/mvcc.sgml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml
new file mode 100644
index e2930c9..0de4b75
*** a/doc/src/sgml/mvcc.sgml
--- b/doc/src/sgml/mvcc.sgml
***************
*** 267,274 ****         made to a <literal>SEQUENCE</literal> (and therefore the 
counter of a         <literal>SERIAL</literal>) are immediately visible to all other         transactions and are not
rolledback if the transaction that 
 
made the
!        changes aborts.  See <xref linkend="functions-sequence"> and
!        <xref linkend="datatype-serial">.       </para>     </important>

--- 267,273 ----         made to a <literal>SEQUENCE</literal> (and therefore the 
counter of a         <literal>SERIAL</literal>) are immediately visible to all other         transactions and are not
rolledback if the transaction that 
 
made the
!        changes aborts.  See <xref linkend="mvcc-exceptions">.       </para>     </important>

-- 1.7.11.2




pgsql-hackers by date:

Previous
From: "Albe Laurenz"
Date:
Subject: Re: State of the on-disk bitmap index
Next
From: Daniel Bausch
Date:
Subject: Re: State of the on-disk bitmap index