-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Attached is a diff for subtransactions. I modified the SQL reference 
section and touched on the various commands therein. I didn't mention 
anything about cursors or portals, because I bet they will be resolved 
before long.

I looked at the tutorial pages and the MVCC pages and I decided that 
subtransactions don't really belong in either place. People who want them 
will know they need them when they encounter a situation that demands 
them. I see them being used mostly in PL/pgSQL type situations.

Maybe some documentation on the internals is warranted - but I don't know 
nearly enough on that to do that task.

- -- 
Jonathan Gardner
[EMAIL PROTECTED]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQFA+Xngqp6r/MVGlwwRAot7AJ9DBZSk1l0vkSDsaQzYUWe16jKh4wCeJ+AM
njA7/4j/mawBwOLKw8GykxY=
=415C
-----END PGP SIGNATURE-----
Index: doc/src/sgml/ref/abort.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/abort.sgml,v
retrieving revision 1.16
diff -c -r1.16 abort.sgml
*** doc/src/sgml/ref/abort.sgml	29 Nov 2003 19:51:38 -0000	1.16
--- doc/src/sgml/ref/abort.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 35,40 ****
--- 35,45 ----
     <xref linkend="SQL-ROLLBACK" endterm="SQL-ROLLBACK-TITLE">,
     and is present only for historical reasons.
    </para>
+ 
+   <para>
+    Note that in a subtransaction, <command>ABORT</command> will only roll back
+    the subtransaction, and does not roll back the parent transaction.
+   </para>
   </refsect1>
  
   <refsect1>
Index: doc/src/sgml/ref/begin.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/begin.sgml,v
retrieving revision 1.30
diff -c -r1.30 begin.sgml
*** doc/src/sgml/ref/begin.sgml	11 Jan 2004 09:24:17 -0000	1.30
--- doc/src/sgml/ref/begin.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 53,63 ****
    </para>
  
    <para>
     If the isolation level or read/write mode is specified, the new
     transaction has those characteristics, as if
     <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"> 
!    was executed.
    </para>
   </refsect1>
    
   <refsect1>
--- 53,74 ----
    </para>
  
    <para>
+    <command>BEGIN</command> commands issued in a transaction will initiate a
+    subtransaction block, or a transaction within a transaction. When the
+    subtransaction is completed (via a <xref
+    linkend="sql-commit" endterm="sql-commit-title"> or <xref
+    linkend="sql-rollback" endterm="sql-rollback-title">), control is
+    returned to the parent transaction.
+   </para>
+ 
+   <para>
     If the isolation level or read/write mode is specified, the new
     transaction has those characteristics, as if
     <xref linkend="sql-set-transaction" endterm="sql-set-transaction-title"> 
!    was executed. These cannot be specified for subtransactions.
!    Subtransactions inherit these attributes from their parent transactions.
    </para>
+ 
   </refsect1>
    
   <refsect1>
***************
*** 88,94 ****
    <para>
     <xref linkend="sql-start-transaction"
     endterm="sql-start-transaction-title"> has the same functionality
!    as <command>BEGIN</>.
    </para>
     
    <para>
--- 99,106 ----
    <para>
     <xref linkend="sql-start-transaction"
     endterm="sql-start-transaction-title"> has the same functionality
!    as <command>BEGIN</command>. Note that these parameters are illegal for
!    subtransactions.
    </para>
     
    <para>
***************
*** 97,106 ****
     to terminate a transaction block.
    </para>
  
-   <para>
-    Issuing <command>BEGIN</> when already inside a transaction block will
-    provoke a warning message.  The state of the transaction is not affected.
-   </para>
   </refsect1>
  
   <refsect1>
--- 109,114 ----
Index: doc/src/sgml/ref/commit.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/commit.sgml,v
retrieving revision 1.19
diff -c -r1.19 commit.sgml
*** doc/src/sgml/ref/commit.sgml	29 Nov 2003 19:51:38 -0000	1.19
--- doc/src/sgml/ref/commit.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 32,37 ****
--- 32,42 ----
     changes made by the transaction become visible to others
     and are guaranteed to be durable if a crash occurs.
    </para>
+ 
+   <para>
+    Note that in a subtransaction, <command>COMMIT</command> will only commit the
+    subtransaction, and does not commit the parent transaction.
+   </para>
   </refsect1>
    
   <refsect1>
Index: doc/src/sgml/ref/end.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/end.sgml,v
retrieving revision 1.13
diff -c -r1.13 end.sgml
*** doc/src/sgml/ref/end.sgml	29 Nov 2003 19:51:38 -0000	1.13
--- doc/src/sgml/ref/end.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 35,40 ****
--- 35,45 ----
     that is equivalent to <xref linkend="sql-commit"
     endterm="sql-commit-title">.
    </para>
+ 
+   <para>
+    Note that in a subtransaction, <command>END</command> will only commit the
+    subtransaction, and does not commit the parent transaction.
+   </para>
   </refsect1>
    
   <refsect1>
Index: doc/src/sgml/ref/rollback.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/rollback.sgml,v
retrieving revision 1.17
diff -c -r1.17 rollback.sgml
*** doc/src/sgml/ref/rollback.sgml	29 Nov 2003 19:51:39 -0000	1.17
--- doc/src/sgml/ref/rollback.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 31,36 ****
--- 31,41 ----
     <command>ROLLBACK</command> rolls back the current transaction and causes
     all the updates made by the transaction to be discarded.
    </para>
+ 
+   <para>
+    Note that in a subtransaction, <command>ROLLBACK</command> will only roll
+    back the subtransaction, and does not roll back the parent transaction.
+   </para>
   </refsect1>
  
   <refsect1>
Index: doc/src/sgml/ref/set_transaction.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/set_transaction.sgml,v
retrieving revision 1.19
diff -c -r1.19 set_transaction.sgml
*** doc/src/sgml/ref/set_transaction.sgml	29 Nov 2003 19:51:39 -0000	1.19
--- doc/src/sgml/ref/set_transaction.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 120,125 ****
--- 120,131 ----
     and in the configuration file.  Consult <xref linkend="runtime-config"> for more
     information.
    </para>
+ 
+   <para>
+     <command>SET TRANSACTION</command> is currently illegal within a
+     subtransaction.
+   </para>
+ 
   </refsect1>
  
   <refsect1 id="R1-SQL-SET-TRANSACTION-3">
Index: doc/src/sgml/ref/start_transaction.sgml
===================================================================
RCS file: /projects/cvsroot/pgsql-server/doc/src/sgml/ref/start_transaction.sgml,v
retrieving revision 1.11
diff -c -r1.11 start_transaction.sgml
*** doc/src/sgml/ref/start_transaction.sgml	11 Jan 2004 05:46:58 -0000	1.11
--- doc/src/sgml/ref/start_transaction.sgml	17 Jul 2004 19:05:51 -0000
***************
*** 30,40 ****
    <title>Description</title>
  
    <para>
!    This command begins a new transaction. If the isolation level or
!    read/write mode is specified, the new transaction has those
     characteristics, as if <xref linkend="sql-set-transaction"
!    endterm="sql-set-transaction-title"> was executed. It is the same
!    as the <xref linkend="sql-begin" endterm="sql-begin-title"> command.
    </para>
   </refsect1>
  
--- 30,41 ----
    <title>Description</title>
  
    <para>
!    This command begins a new transaction or subtransaction. If the isolation
!    level or read/write mode is specified, the new transaction has those
     characteristics, as if <xref linkend="sql-set-transaction"
!    endterm="sql-set-transaction-title"> was executed. These cannot be
!    specified for subtransactions, however. It is the same as the
!    <xref linkend="sql-begin" endterm="sql-begin-title"> command.
    </para>
   </refsect1>
  
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to