Thread

Commits

  1. Test some more cases with partitioned tables in EvalPlanQual.

  1. more isolation tests for update tuple routing

    Amit Langote <langote_amit_f8@lab.ntt.co.jp> — 2019-04-09T09:19:49Z

    Continuing the discussion at:
    https://www.postgresql.org/message-id/26571.1554741097%40sss.pgh.pa.us
    
    Tom wrote:
    > It struck me just as I was pushing it that this test doesn't exercise
    > EPQ with any of the interesting cases for partition routing (ie where
    > the update causes a move to a different partition).  It would likely
    > be a good idea to have test coverage for all of these scenarios:
    >
    > * EPQ where the initial update would involve a partition change,
    > and that's still true after reapplying the update to the
    > concurrently-updated tuple version;
    >
    > * EPQ where the initial update would *not* require a partition change,
    > but we need one after reapplying the update to the
    > concurrently-updated tuple version;
    >
    > * EPQ where the initial update would involve a partition change,
    > but that's no longer true after reapplying the update to the
    > concurrently-updated tuple version.
    
    Per what Andres mentioned in his reply on the original thread [1], in
    scenarios 1 and 2 where the 1st session's update causes a row to move,
    session 2 produces the following error when trying to update the same row:
    
    ERROR:  tuple to be locked was already moved to another partition due to
    concurrent update
    
    Do we want those tests like that (with the error that is) in the
    eval-plan-qual isolation suite?
    
    I came up with the attached.
    
    Thanks,
    Amit
    
    [1]
    https://www.postgresql.org/message-id/20190408164138.izvfg2czwcofg5ev%40alap3.anarazel.de
    
  2. Re: more isolation tests for update tuple routing

    Tom Lane <tgl@sss.pgh.pa.us> — 2019-04-09T15:45:20Z

    Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> writes:
    > Per what Andres mentioned in his reply on the original thread [1], in
    > scenarios 1 and 2 where the 1st session's update causes a row to move,
    > session 2 produces the following error when trying to update the same row:
    > ERROR:  tuple to be locked was already moved to another partition due to
    > concurrent update
    
    > Do we want those tests like that (with the error that is) in the
    > eval-plan-qual isolation suite?
    
    Sure, but I think one such test is enough.
    
    > I came up with the attached.
    
    I changed the last case so it actually did what I had in mind
    (initial state of the update would be a partition move, but after
    fetching up-to-date tuple it isn't) and pushed it.  Thanks for
    doing the legwork!
    
    			regards, tom lane
    
    
    
    
  3. Re: more isolation tests for update tuple routing

    Amit Langote <langote_amit_f8@lab.ntt.co.jp> — 2019-04-10T00:34:43Z

    On 2019/04/10 0:45, Tom Lane wrote:
    > Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> writes:
    >> Per what Andres mentioned in his reply on the original thread [1], in
    >> scenarios 1 and 2 where the 1st session's update causes a row to move,
    >> session 2 produces the following error when trying to update the same row:
    >> ERROR:  tuple to be locked was already moved to another partition due to
    >> concurrent update
    > 
    >> Do we want those tests like that (with the error that is) in the
    >> eval-plan-qual isolation suite?
    > 
    > Sure, but I think one such test is enough.
    > 
    >> I came up with the attached.
    > 
    > I changed the last case so it actually did what I had in mind
    > (initial state of the update would be a partition move, but after
    > fetching up-to-date tuple it isn't) and pushed it.  Thanks for
    > doing the legwork!
    
    Thank you.
    
    Regards,
    Amit