• Tom Lane's avatar
    In pg_dump, force reconnection after issuing ALTER DATABASE SET command(s). · 160a4f62
    Tom Lane authored
    The folly of not doing this was exposed by the buildfarm: in some cases,
    the GUC settings applied through ALTER DATABASE SET may be essential to
    interpreting the reloaded data correctly.  Another argument why we can't
    really get away with the scheme proposed in commit b3f84012 is that it
    cannot work for parallel restore: even if the parent process manages to
    hang onto the previous GUC state, worker processes would see the state
    post-ALTER-DATABASE.  (Perhaps we could have dodged that bullet by
    delaying DATABASE PROPERTIES restoration to the end of the run, but
    that does nothing for the data semantics problem.)
    
    This leaves us with no solution for the default_transaction_read_only issue
    that commit 4bd371f6 intended to work around, other than "you gotta remove
    such settings before dumping/upgrading".  However, in view of the fact that
    parallel restore broke that hack years ago and no one has noticed, it's
    fair to question how many people care.  I'm unexcited about adding a large
    dollop of new complexity to handle that corner case.
    
    This would be a one-liner fix, except it turns out that ReconnectToServer
    tries to optimize away "redundant" reconnections.  While that may have been
    valuable when coded, a quick survey of current callers shows that there are
    no cases where that's actually useful, so just remove that check.  While at
    it, remove the function's useless return value.
    
    Discussion: https://postgr.es/m/12453.1516655001@sss.pgh.pa.us
    160a4f62
pg_backup_archiver.c 121 KB