• Stephen Frost's avatar
    Dump sequence data based on the TableDataInfo flag · bec96c82
    Stephen Frost authored
    When considering a sequence's Data entry in dumpSequenceData, we were
    actually looking at the sequence definition's dump flag to decide if we
    should dump the data or not.  That's generally fine, except for when the
    sequence data entry was created by processExtensionTables() because it's
    a config sequence.  In that case, the sequence itself won't be marked as
    dumping data because it's part of an extension, leading to the need for
    processExtensionTables() to create the sequence data entry.
    
    This leads to extension config sequence data not being included in the
    dump when it should be.  Fix this by looking at the sequence data's dump
    flag instead, just as dumpTableData() was doing for tables (which is why
    config tables were correctly being handled), and add a regression test
    to make sure we don't break it moving forward.
    
    All of this is a bit round-about since we can now represent which
    components of a given dump item should be dumped out through the dump
    flag.  A future improvement might be to change checkExtensionMembership()
    to check for config sequences/tables and set the dump flag based on that
    directly, possibly removing the need for processExtensionTables().
    
    Bug found by Daniele Varrazzo.
    
    Discussion: https://postgr.es/m/CA+mi_8ZmxQM7+nZ7pJ8uyfxc9V3o=UAG14dVqvftdmvw8OJ3gQ@mail.gmail.com
    
    Patch by Michael Paquier, with some tweaking of the regression tests by
    me.
    
    Back-patch to 9.6 where the bug was introduced.
    bec96c82
pg_dump.c 505 KB