Jan Wieck <JanWieck@Yahoo.com> writes:
> It seems to me that buffers that are thrown away via
> StrategyInvalidateBuffer() do not get their relnode and blocknum cleaned
> out.
Mmmm. They definitely should be; if you look at the prior version of
buf_table.c, BufTableDelete did this:
/* * Clear the buffer's tag. This doesn't matter for the hash table, * since the buffer is already removed
fromit, but it ensures that * sequential searches through the buffer table won't think the buffer * is still
validfor its old page. */ buf->tag.rnode.relNode = InvalidOid; buf->tag.rnode.tblNode = InvalidOid;
I see you removed that from the current version, but the equivalent
thing needs to be done someplace. Is StrategyInvalidateBuffer the
right place?
BTW, it kinda looks like the BM_DELETED flag bit is useless now?
regards, tom lane