• Heikki Linnakangas's avatar
    Make DDL operations play nicely with Serializable Snapshot Isolation. · 8f9622bb
    Heikki Linnakangas authored
    Truncating or dropping a table is treated like deletion of all tuples, and
    check for conflicts accordingly. If a table is clustered or rewritten by
    ALTER TABLE, all predicate locks on the heap are promoted to relation-level
    locks, because the tuple or page ids of any existing tuples will change and
    won't be valid after rewriting the table. Arguably ALTER TABLE should be
    treated like a mass-UPDATE of every row, but if you e.g change the datatype
    of a column, you could also argue that it's just a change to the physical
    layout, not a logical change. Reindexing promotes all locks on the index to
    relation-level lock on the heap.
    
    Kevin Grittner, with a lot of cosmetic changes by me.
    8f9622bb
predicate.h 2.52 KB