Thread

  1. Re: SAVEPOINTs and COMMIT performance

    Simon Riggs <simon@2ndquadrant.com> — 2011-07-14T14:59:14Z

    On Mon, Jun 6, 2011 at 10:33 AM, Heikki Linnakangas
    <heikki.linnakangas@enterprisedb.com> wrote:
    > On 06.02.2011 23:09, Simon Riggs wrote:
    >>
    >> On Sun, 2011-02-06 at 12:11 -0500, Bruce Momjian wrote:
    >>>
    >>> Did this ever get addressed?
    >>
    >> Patch attached.
    >>
    >> Seems like the easiest fix I can come up with.
    >
    >> @@ -2518,7 +2518,7 @@ CommitTransactionCommand(void)
    >>                case TBLOCK_SUBEND:
    >>                        do
    >>                        {
    >> -                               CommitSubTransaction();
    >> +                               CommitSubTransaction(true);
    >>                                s = CurrentTransactionState;    /* changed
    >> by pop */
    >>                        } while (s->blockState == TBLOCK_SUBEND);
    >>                        /* If we had a COMMIT command, finish off the main
    >> xact too */
    >
    > We also get into this codepath at RELEASE SAVEPOINT, in which case it is
    > wrong to not reassign the locks to the parent subtransaction.
    
    Attached patch splits TBLOCK_SUBEND state into two new states:
    TBLOCK_SUBCOMMIT and TBLOCK_SUBRELEASE, so that we can do the right
    thing.
    
    -- 
     Simon Riggs                   http://www.2ndQuadrant.com/
     PostgreSQL Development, 24x7 Support, Training & Services