Csaba Nagy wrote:

> session_1=> create table test (col smallint primary key);
> NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
> "test_pkey" for table "test"
> CREATE TABLE
> session_1=> begin;
> BEGIN
> cnagy=> insert into test values (1);
> INSERT 165068987 1
> 
> session_2=> begin;
> BEGIN
> session_2=> insert into test values (1);
> 
> [session_2 is now waiting]

This only happens because of the unique index.  There's no predicate
locking involved.  The btree code goes some lengths to make this work;
it would be probably simple to modify this to support MERGE or REPLACE
on the limited cases where there's a UNIQUE index.  Tom has already said
this twice (on this thread only; he has already said it before IIRC.)

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to