• Bruce Momjian's avatar
    > Alvaro Herrera <alvherre@atentus.com> writes: · ba8e20a6
    Bruce Momjian authored
    > > I'm looking at pg_dump/common.c:flagInhAttrs() and suspect that it can
    > > be more or less rewritten completely, and probably should to get rigth
    > > all the cases mentioned in the past attisinherited discussion.  Is this
    > > desirable for 7.3?  It can probably be hacked around and the rewrite
    > > kept for 7.4, but I think it will be much simpler after the rewrite.
    >
    > If it's a bug then it's fair game to fix in 7.3.  But keep in mind that
    > pg_dump has to behave at least somewhat sanely when called against older
    > servers ... will your rewrite behave reasonably if the server does not
    > offer attinhcount values?
    
    Nah.  I don't think it's worth it: I had forgotten that older versions
    should be supported.  I just left the code as is and added a
    version-specific test.
    
    This patch allows pg_dump to dump correctly local definition of columns.
    In particular,
    
    CREATE TABLE p1 (f1 int, f2 int);
    CREATE TABLE p2 (f1 int);
    CREATE TABLE c () INHERITS (p1, p2);
    ALTER TABLE ONLY p1 DROP COLUMN f1;
    CREATE TABLE p3 (f1 int);
    CREATE TABLE c2 (f1 int) INHERITS (p3);
    
    Will be dumped as
    CREATE TABLE p1 (f2 int);
    CREATE TABLE p2 (f1 int);
    CREATE TABLE c (f1 int) INHERITS (p1, p2);
    CREATE TABLE c2 (f1 int) INHERITS (p3);
    
    (Previous version will dump
    CREATE TABLE c () INHERITS (p1, p2)
    CREATE TABLE c2 () INHERITS (p3) )
    
    Alvaro Herrera
    ba8e20a6
common.c 13.3 KB