On Wed, 2010-02-03 at 10:48 -0500, Tom Lane wrote:
> > If so, there is some minor code cleanup and comment changes in
> > ProcessCommittedInvalidationMessages(). Would you like me to do that, or
> > should we wait?
>
> I saw that. I didn't touch it because it's not directly relevant to
> what I'm doing right now, but I would like to go back and see whether
> that routine can't be got rid of completely. It seems to me to be a
> very klugy substitute for having enough information. I'm inclined to
> think that we should emit an sinval message (or maybe better a separate
> WAL entry) for initfile removal, instead of trying to reverse-engineer
> whether one happened.
An additional sinval message type would work. There is a requirement for
us to run RelationCacheInitFileInvalidate() both before and after the
other messages. So we would need to append and prepend the new message
type onto the array of messages if transInvalInfo->RelcacheInitFileInval
is true. That way we would just do SendSharedInvalidMessages() in
xact_redo_commit and remove ProcessCommittedInvalidationMessages(),
adding other code to handle the inval message. Doesn't seem any easier
though.
Another WAL record would definitely be cumbersome.
--
Simon Riggs www.2ndQuadrant.com