From: Tom Lane
[ re-reads thread... ] The extra assumption you need in order to have
trouble is that the blocks in question are dirty in shared buffers and
have never been written to disk since their rows were deleted. Then
the situation is that the page image on disk shows the rows as live,
while the up-to-date page image in memory correctly shows them as
dead.
Relation truncation throws away the page image in memory without ever
writing it to disk. Then, if the subsequent file truncate step fails,
we have a problem, because anyone who goes looking for that page will
fetch it afresh from disk and see the tuples as live.
Thank you so much, I got it! And I'm always impressed at how quick
and concise you are, while you are busy addressing multiple issues and
answering user questions. Maybe I wouldn't be surprised to hear that
there are multiple clones of Tom Lane.
I'd like to continue to think of a solution and create a patch, based
on the severity and how the customer will respond to our answer. I
have a feeling that we have to say it's a bit serious, since it
requires recovery from a base backup, not just rebuilding indexes.
The patch development may be after PGCon.
Regards
MauMau