On Fri, Apr 6, 2018 at 2:34 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> a...@novozymes.com (Adam =?utf-8?Q?Sj=C3=B8gren?=) writes:
> >> [... still waiting for the result, I will return with what it said
> >> when the server does ...]
>
> > It did eventually finish, with the same result:
>
> Huh.  So what we have here, apparently, is that regular MVCC snapshots
> think there is exactly one copy of the 1698936148/0 row, but TOAST fetches
> think there is more than one.  This is darn odd, not least because we
> never do UPDATEs in toast tables, only inserts and deletes, so there
> certainly shouldn't be update chains there.
>
> It seems like you've got some corner case wherein SnapshotToast sees a row
> that isn't visible according to MVCC --- probably a row left over from
> some previous cycle of life.  That is, I'm imagining the OID counter
> wrapped around and we've reused a toast OID, but for some reason there's
> still a row in the table with that OID.  I'm not sure offhand how we could
> get into such a state.  Alvaro, does this ring any bells (remembering that
> this is 9.3)?
>

FWIW one of our support customers reported a very similar TOAST table
corruption issue last week which nearly caused an outage. After a lot of
analysis, I think I've now fully understood the reasons behind the
corruption, the underlying bug(s) and possible remedy. I am currently
working on writing a reproducible test case to demonstrate the problem and
writing the fix. More details on that soon.

Thanks,
Pavan

-- 
 Pavan Deolasee                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Reply via email to