Thread

Commits

  1. Avoid unnecessary shared invalidations in ROLLBACK PREPARED

  1. SI messages sent when excuting ROLLBACK PREPARED command

    liuhuailing@fujitsu.com <liuhuailing@fujitsu.com> — 2021-07-14T12:11:15Z

    Hi
    
    When reading the code FinishPreparedTransaction, I found that SI messages are sent 
    when executing ROLLBACK PREPARED command.
    
    But according to AtEOXact_Inval function, we send the SI messages only when committing the transaction .
    
    So, I think we needn't send SI messags when rollbacking the two-phase transaction.
    Or Does it has something special because of two-phase transaction?
    
    
    Regards
    
    
  2. Re: SI messages sent when excuting ROLLBACK PREPARED command

    Tom Lane <tgl@sss.pgh.pa.us> — 2021-07-14T17:36:11Z

    "liuhuailing@fujitsu.com" <liuhuailing@fujitsu.com> writes:
    > So, I think we needn't send SI messags when rollbacking the two-phase transaction.
    > Or Does it has something special because of two-phase transaction?
    
    Hmmm, yeah, I think you're right.  It probably doesn't make a big
    difference in the real world --- anyone who's dependent on the
    performance of 2PC rollbaxks is Doing It Wrong.  But we'd have
    already done LocalExecuteInvalidationMessage when getting out of
    the prepared transaction, so no other SI invals should be needed.
    
    			regards, tom lane
    
    
    
    
  3. RE: SI messages sent when excuting ROLLBACK PREPARED command

    liuhuailing@fujitsu.com <liuhuailing@fujitsu.com> — 2021-07-15T03:04:31Z

    Hi, tom
    
    Thanks for your reply.
    
    >Hmmm, yeah, I think you're right.  It probably doesn't make a big difference in the real world --- anyone who's dependent on the performance of 2PC rollbaxks is Doing It Wrong. 
    > But we'd have already done LocalExecuteInvalidationMessage when getting out of the prepared transaction, so no other SI invals should be needed.
    Yes, it does not make any error.
    
    But for the beginner,  when understanding the code,  it may make confused.
    And for the developer, when developing based on this code, it may make unnecessary handling added. 
    
    So, I think it is better to optimize the code.
    
    Here is the patch.
    
    Regards, liuhl
    
    -----Original Message-----
    From: Tom Lane <tgl@sss.pgh.pa.us> 
    Sent: Thursday, July 15, 2021 1:36 AM
    To: Liu, Huailing/刘 怀玲 <liuhuailing@fujitsu.com>
    Cc: pgsql-hackers@postgresql.org
    Subject: Re: SI messages sent when excuting ROLLBACK PREPARED command
    
    "liuhuailing@fujitsu.com" <liuhuailing@fujitsu.com> writes:
    > So, I think we needn't send SI messags when rollbacking the two-phase transaction.
    > Or Does it has something special because of two-phase transaction?
    
    Hmmm, yeah, I think you're right.  It probably doesn't make a big difference in the real world --- anyone who's dependent on the performance of 2PC rollbaxks is Doing It Wrong.  But we'd have already done LocalExecuteInvalidationMessage when getting out of the prepared transaction, so no other SI invals should be needed.
    
    			regards, tom lane
    
  4. RE: SI messages sent when excuting ROLLBACK PREPARED command

    liuhuailing@fujitsu.com <liuhuailing@fujitsu.com> — 2021-08-03T09:29:48Z

     Hi, tom
    
    > >Hmmm, yeah, I think you're right.  It probably doesn't make a big difference in
    > the real world --- anyone who's dependent on the performance of 2PC rollbaxks
    > is Doing It Wrong.
    > > But we'd have already done LocalExecuteInvalidationMessage when getting
    > out of the prepared transaction, so no other SI invals should be needed.
    > Yes, it does not make any error.
    > 
    > But for the beginner,  when understanding the code,  it may make confused.
    > And for the developer, when developing based on this code, it may make
    > unnecessary handling added.
    > 
    > So, I think it is better to optimize the code.
    > 
    > Here is the patch.
    There was a problem with the before patch when testing.  
    So resubmit it.
    
    Regards, Liu Huailing
    
    
  5. Re: SI messages sent when excuting ROLLBACK PREPARED command

    Michael Paquier <michael@paquier.xyz> — 2021-08-11T06:14:11Z

    On Tue, Aug 03, 2021 at 09:29:48AM +0000, liuhuailing@fujitsu.com wrote:
    > There was a problem with the before patch when testing.  
    > So resubmit it.
    
    FWIW, I see no problems with patch version 1 or 2, as long as you
    apply patch version 1 with a command like patch -p2.  One thing of
    patch 2 is that git diff --check complains because of a whitespace.
    
    Anyway, I also think that you are right here and that there is no need
    to run this code path with ROLLBACK PREPARED.  It is worth noting that
    the point of Tom about local invalidation messages in PREPARE comes
    from PostPrepare_Inval().
    
    I would just tweak the comment block at the top of what's being
    changed, as per the attached.  Please let me know if there are any
    objections. 
    --
    Michael
    
  6. Re: SI messages sent when excuting ROLLBACK PREPARED command

    Michael Paquier <michael@paquier.xyz> — 2021-08-13T12:50:17Z

    On Wed, Aug 11, 2021 at 03:14:11PM +0900, Michael Paquier wrote:
    > I would just tweak the comment block at the top of what's being
    > changed, as per the attached.  Please let me know if there are any
    > objections. 
    
    And applied as of 710796f.
    --
    Michael
    
  7. RE: SI messages sent when excuting ROLLBACK PREPARED command

    liuhuailing@fujitsu.com <liuhuailing@fujitsu.com> — 2021-08-19T07:52:01Z

    > On Wed, Aug 11, 2021 at 03:14:11PM +0900, Michael Paquier wrote:
    > > I would just tweak the comment block at the top of what's being
    > > changed, as per the attached.  Please let me know if there are any
    > > objections.
    > 
    > And applied as of 710796f.
    Thanks for your comment and commit.
    I've changed the patch's commit fest status to 'committed'.
    https://commitfest.postgresql.org/34/3257/
    
    Regards,
    Liu