• Alvaro Herrera's avatar
    DETACH PARTITION: hold locks on indexes until end of transaction · 0c237715
    Alvaro Herrera authored
    When a partition is detached from its parent, we acquire locks on all
    attached indexes to also detach them ... but we release those locks
    immediately.  This is a violation of the policy of keeping locks on user
    objects to the end of the transaction.  Bug introduced in 8b08f7d4.
    
    It's unclear that there are any ill effects possible, but it's clearly
    wrong nonetheless.  It's likely that bad behavior *is* possible, but
    mostly because the relation that the index is for is only locked with
    AccessShareLock, which is an older bug that shall be fixed separately.
    
    While touching that line of code, close the index opened with
    index_open() using index_close() instead of relation_close().
    No difference in practice, but let's be consistent.
    
    Unearthed by Robert Haas.
    
    Discussion: https://postgr.es/m/CA+TgmoYruJQ+2qnFLtF1xQtr71pdwgfxy3Ziy-TxV28M6pEmyA@mail.gmail.com
    0c237715
tablecmds.c 457 KB