• Yorick Peterse's avatar
    Hash concurrent foreign key names similar to Rails · 79696f5b
    Yorick Peterse authored
    This was initially not implemented simply because I forgot about the
    size limit of constraint names in PostgreSQL (63 bytes). Using the old
    technique we can't add foreign keys for certain tables. For example,
    adding a foreign key on
    protected_branch_merge_access_levels.protected_branch_id would lead to
    the following key name:
    
        fk_protected_branch_merge_access_levels_protected_branches_protected_branch_id
    
    This key is 78 bytes long, thus violating the PostgreSQL size
    requirements.
    
    The hashing strategy is copied from Rails' foreign_key_name() method,
    which unfortunately is private and subject to change without notice.
    79696f5b
migration_helpers_spec.rb 7.88 KB