Re: Nested transactions - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Nested transactions
Date
Msg-id 200406100411.i5A4BQL14526@candle.pha.pa.us
Whole thread Raw
In response to Nested transactions  (Alvaro Herrera <alvherre@dcc.uchile.cl>)
List pgsql-patches
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://momjian.postgresql.org/cgi-bin/pgpatches

I will try to apply it after review.

---------------------------------------------------------------------------
Alvaro Herrera wrote:
> Hackers,
>
> Here is the latest installment of the nested transactions patch.
>
> What's in the current patch:
>
> - transaction block support.  The user can start subtransactions inside
>   each transaction block and rollback each one independently.  The
>   nesting level has no practical limit, though each transaction tree can
>   have at most 2^32 commands (subtransaction start counts as one
>   command).
>
> - Most subsystems have a cleanup function called at subtransaction
>   abort: deferred triggers, relcache refcount, catcache refcount, smgr
>   pending deletes, gist/rtree/hash scan lists, bufmgr refcount,
>   on-commit actions.
>
> - SPI closes connections opened during the aborting subtransaction.
>
> - The lock manager releases locks taken by the aborting subtransaction,
>   but _holds_ locks taken by a committing subtransaction.  This is
>   needed by MVCC semantics.
>
> - A special memory context, CommitContext is created for each
>   subtransaction.  It is destroyed if the subtransaction aborts, but
>   if it commits then it will be kept until main transaction commit
>   (or its parent subtransaction aborts).
>
> - The pg_subtrans module is created to keep the parent Xid of each
>   subtransaction.  It's similar (and based on) the pg_clog code.
>
> - The pg_clog Xlog code was moved to Slru and merged with pg_subtrans
>   Xlog code.
>
> - When we wait for a transaction to finish (XactLockTableWait), we
>   actually wait for the topmost transaction.
>
> - SET TRANSACTION ISOLATION LEVEL and SET READ ONLY are not allowed
>   inside a subtransaction.
>
> What's missing to complete the nested transactions work:
>
> - Make GUC vars work correctly.
> - Lots of testing.
> - Documentation
> - Optimizations:
>   * the phantom Xid idea is not implemented here.
>   * optimize TransactionIdIsInProgress
>   * profile
> - More regression testing.  Need additional concurrent infrastructure.
>
> Many thanks to:
>
> - Manfred Koizar for making the pg_subtrans code possible and discussion
>   on several issues.
> - Stephan Szabo for the idea on which the deferred trigger code was
>   based.
> - Tom Lane for asking the right questions.
> - Bruce Momjian for useful ideas.
>
>
> IMHO this patch should be reviewed and applied to achieve wide testing
> as soon as possible before feature freeze.  More changes can be applied
> later as available/needed.  (The patch is already huge and contains
> several important changes that need careful review.  Adding more to the
> mix will only make things more difficult.)
>
> --
> Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
> "No single strategy is always right (Unless the boss says so)"
> (Larry Wall)

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] serverlog function (log_destination file)
Next
From: "Serguei Mokhov"
Date:
Subject: Re: Fully enabling NLS in pg_ctl