"Goel, Dhruv" <goeld...@amazon.com> writes:
> Yes, you are correct. The test case here was that if a tuple is inserted 
> after the reference snapshot is taken in Phase 2 and before the index is 
> marked ready. If this tuple is deleted before the reference snapshot of Phase 
> 3, it will never make it to the index. I have fixed this problem by making 
> pg_index tuple updates transactional (I believe there is no reason why it has 
> to be in place now) so that the xmin of the pg_index tuple is same the xmin 
> of the snapshot in Phase 3.

I think you are mistaken that doing transactional updates in pg_index
is OK.  If memory serves, we rely on xmin of the pg_index row for purposes
such as detecting whether a concurrently-created index is safe to use yet.
So a transactional update would restart that clock and result in temporary
denial of service.

                        regards, tom lane


Reply via email to