• Simon Riggs's avatar
    During Hot Standby, set DatabasePath correctly during relcache init file · 42edbd16
    Simon Riggs authored
    deletion, so that we attempt to unlink the correct filepath. unlink()
    errors are ignorable there, so lack of a DatabasePath initialization step
    did not cause visible problems until a related bug showed up on Solaris.
    
    Code refactored from xact_redo_commit() to
    ProcessCommittedInvalidationMessages() in inval.c. Recovery may replay
    shared invalidation messages for many databases, so we cannot
    SetDatabasePath() once as we do in normal backends. Read the databaseid
    from the shared invalidation messages, then set DatabasePath
    temporarily before calling RelationCacheInitFileInvalidate().
    
    Problem report by Robert Treat, analysis and fix by me.
    42edbd16
sinval.h 4.1 KB