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: