• Tom Lane's avatar
    Clean up some aspects of pg_dump/pg_restore item-selection logic. · 0d4e6ed3
    Tom Lane authored
    Ensure that CREATE DATABASE and related commands are issued when, and
    only when, --create is specified.  Previously there were scenarios
    where using selective-dump switches would prevent --create from having
    any effect.  For example, it would fail to do anything in pg_restore
    if the archive file had been made by a selective dump, because there
    would be no TOC entry for the database.
    
    Since we don't issue \connect either if we don't issue CREATE DATABASE,
    this could result in unexpectedly restoring objects into the wrong
    database.
    
    Also fix pg_restore's selective restore logic so that when an object is
    selected to be restored, we also restore its ACL, comment, and security
    label if any.  Previously there was no way to get the latter properties
    except through tedious mucking about with a -L file.  If, for some
    reason, you don't want these properties, you can match the old behavior
    by adding --no-acl etc.
    
    While at it, try to make _tocEntryRequired() a little better organized
    and better documented.
    
    Discussion: https://postgr.es/m/32668.1516848577@sss.pgh.pa.us
    0d4e6ed3
pg_dump.c 551 KB