9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered - Mailing list pgsql-general

From Craig Ringer
Subject 9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered
Date
Msg-id 507E3D6C.6040004@ringerc.id.au
Whole thread Raw
Responses Re: 9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered  ("Albe Laurenz" <laurenz.albe@wien.gv.at>)
List pgsql-general
Hi all

In this SO question:

http://dba.stackexchange.com/questions/26905/how-do-i-implement-insert-if-not-found-for-transactions-at-serializable-isolatio/26909#26909

the author is running a series of queries that I'd expect to abort on commit with a serialisation failure. No such failure occurs, and I'm wondering why.

SETUP

create table artist (id serial primary key, name text);



SESSION 1                                   SESSION 2

BEGIN ISOLATION LEVEL SERIALIZABLE;

                                            BEGIN ISOLATION LEVEL SERIALIZABLE;

                                            SELECT id FROM artist
                                            WHERE name = 'Bob';

INSERT INTO artist (name)
VALUES ('Bob')

                                            INSERT INTO artist (name)
                                            VALUES ('Bob')

COMMIT;                                     COMMIT;


I'd expect one of these two to abort with a serialization failure and I'm not sure I understand why they don't in 9.1/9.2's new serializable mode. Shouldn't the SELECT for "Bob" cause the insertion of "Bob" in the other transaction to violate serializability?

--
Craig Ringer

pgsql-general by date:

Previous
From: Chris Travers
Date:
Subject: Re: Does Postgres Object-Relational Syntax follow Standard?
Next
From: chinnaobi
Date:
Subject: Streaming replication failed to start scenarios