• Peter Eisentraut's avatar
    Make identity sequence management more robust · 19781729
    Peter Eisentraut authored
    Some code could get confused when certain catalog state involving both
    identity and serial sequences was present, perhaps during an attempt
    to upgrade the latter to the former.  Specifically, dropping the
    default of a serial column maintains the ownership of the sequence by
    the column, and so it would then be possible to afterwards make the
    column an identity column that would now own two sequences.  This
    causes the code that looks up the identity sequence to error out,
    making the new identity column inoperable until the ownership of the
    previous sequence is released.
    
    To fix this, make the identity sequence lookup only consider sequences
    with the appropriate dependency type for an identity sequence, so it
    only ever finds one (unless something else is broken).  In the above
    example, the old serial sequence would then be ignored.  Reorganize
    the various owned-sequence-lookup functions a bit to make this
    clearer.
    Reported-by: default avatarLaurenz Albe <laurenz.albe@cybertec.at>
    Discussion: https://www.postgresql.org/message-id/flat/470c54fc8590be4de0f41b0d295fd6390d5e8a6c.camel@cybertec.at
    19781729
identity.sql 7.96 KB