Alvaro Herrera <alvhe...@alvh.no-ip.org> writes: > Tom Lane wrote: >> So: I put the blame on the fact that summarize_range() thinks that >> the tuple offset it has for the placeholder tuple is guaranteed to >> hold good, even across possibly-long intervals where it's holding >> no lock on the containing buffer.
> Yeah, I think this is a pretty reasonable explanation for the problem. > I don't understand why it doesn't fail in 9.6. Yeah, we're still missing an understanding of why we didn't see it before; the inadequate locking was surely there before. I'm guessing that somehow the previous behavior of PageIndexDeleteNoCompact managed to mask the problem (perhaps only by not throwing an error, which doesn't imply that the index state was good afterwards). But I don't see quite how it did that. One thing I think we do know now is that the bug is triggered by two concurrent executions of summarize_range. So I'd look for edge cases like whether the placeholder tuple can be deleted and then reinserted into the same lp index. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers