On Tue, May 24, 2016 at 3:54 PM, Andres Freund <and...@anarazel.de> wrote:
> what about e.g. concurrent index builds? E.g. IndexBuildHeapRangeScan()
> seem to contain any checks against outdated blocks
Why would it? We're talking about blocks where there were dead
tuples, with the transaction which updated or deleted the tuples
being complete, where those dead tuples were vacuumed away. These
should not appear in the index, should they?
> and that's certainly not ok?
> It appears that concurrent index builds are currently broken
> from a quick skim?
Either you don't understand this feature very well, or I don't
understand concurrent index build very well. I thought we burned a
lot of time going through the index an extra time just to get rid
of dead tuples -- why would it be a problem not to add them in the
>>> Is there anything preventing this from becoming a problem?
>> The fundamental approach that the error can only appear on
>> user-facing scans, not internal reads and positioning.
>> Unless there is some code path that uses a scan where the snapshot
>> age is checked, this cannot be a problem. I don't see any such
>> path, but if you do, please let me know, and I'll fix things.
> That scares me. Not throwing an error, and not being broken are entirely
> different things.
Absolutely, but let's not start pointing at random chunks of code
and asking why an error isn't thrown there without showing that you
get bad results otherwise, or at least some plausible argument why
The Enterprise PostgreSQL Company
Sent via pgsql-hackers mailing list (email@example.com)
To make changes to your subscription: