Обсуждение: more isolation tests for update tuple routing
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
Вложения
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
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