9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема 9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered
Дата
Msg-id 507E3D6C.6040004@ringerc.id.au
обсуждение исходный текст
Ответы Re: 9.1/9.2 SERIALIZABLE: expected serialization failure between INSERT and SELECT not encountered
Список 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 по дате отправления:

Предыдущее
От: Chris Travers
Дата:
Сообщение: Re: Does Postgres Object-Relational Syntax follow Standard?
Следующее
От: chinnaobi
Дата:
Сообщение: Streaming replication failed to start scenarios