pgsql: Make DDL operations play nicely with Serializable Snapshot Isola

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Make DDL operations play nicely with Serializable Snapshot Isola
Date: 2011-06-08 11:13:06
Message-ID: E1QUGh8-0007Ra-5M@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Make DDL operations play nicely with Serializable Snapshot Isolation.

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.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/8f9622bbb3c02b06176760c3ca2d33c5b5f629a7

Modified Files
--------------
src/backend/catalog/heap.c | 9 +
src/backend/catalog/index.c | 13 +
src/backend/commands/cluster.c | 9 +
src/backend/commands/tablecmds.c | 19 +
src/backend/storage/lmgr/predicate.c | 521 ++++++++++++++++++++++++-----
src/include/storage/predicate.h | 2 +
src/include/storage/predicate_internals.h | 6 +-
7 files changed, 499 insertions(+), 80 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2011-06-08 16:53:25 pgsql: Allow domains over arrays to match ANYARRAY parameters again.
Previous Message Robert Haas 2011-06-08 02:17:19 pgsql: Complain politely about access temp/unlogged tables during recov