Tom Lane wrote:
Jan Wieck <[EMAIL PROTECTED]> 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 from it, but it ensures that
     * sequential searches through the buffer table won't think the buffer
     * is still valid for 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?

Yeah, looks like ... but I actually want to have a clean reproduction of the error before I attempt to fix it. Will look at it deeper.



BTW, it kinda looks like the BM_DELETED flag bit is useless now?

I think so, together with the BM_FREE which was redundant anyway.



Jan


--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #


---------------------------(end of broadcast)--------------------------- TIP 7: don't forget to increase your free space map settings

Reply via email to