• Alvaro Herrera's avatar
    Fix failure to create FKs correctly in partitions · 55173d2e
    Alvaro Herrera authored
    On a multi-level partioned table, when adding a partition not directly
    connected to the root table, foreign key constraints referencing the
    root were not cloned to the new partition, leading to the FK being
    possibly inadvertently violated later on.
    
    This was caused by fuzzy thinking in CloneFkReferenced (commit
    f56f8f8d): it was skipping constraints marked as having parents on
    the theory that cloning those would create duplicates; but that's only
    correct for the top level of the partitioning hierarchy.  For levels
    below that one, such constraints must still be considered and only
    skipped if later on we see that we'd create duplicates.  Apparently, I
    (Álvaro) wrote the comments right but the code implemented something
    slightly different.
    
    Author: Jehan-Guillaume de Rorthais
    Discussion: https://postgr.es/m/20200206004948.238352db@firost
    55173d2e
foreign_key.sql 61.5 KB