beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2007-02-06 11:04 pm
Entry tags:

Рабочие будни


Я уж думал, этот баг в PostgreSQL давно пофиксили - таблица с уникальным ключом по дате, делаем апдейт, увеличивая дату на день - получаем нарушение уникальности. Во времена коммунивера я на такое тоже натыкался, как сейчас припоминаю. Если дату уменьшать, а не увеличивать - все нормально.

Еще один сюрприз - то, что в PostgreSQL нет dirty read. Как следствие триггер BEFORE INSERT, обеспечивающий отсутствие пересечения диапазонов, можно обмануть и вставить из разных транзакций диапазоны, которые все-таки пересекутся. Предыдущий автор кода от этого застраховался LOCK TABLE. Что естественно, не фонтан.


Но это все фигня. Через неделю надеюсь похвастаться результатом, имеющим публичное значение.

http://npj.ru/arioch

[identity profile] arioch [npj.ru] (from livejournal.com) 2007-02-15 06:17 pm (UTC)(link)
ЕМНИП, Postgres - версионник ? Как ты в версионнике сделаешь dirty read ? Не все режимы блокировочников можно перевести на версионники и наоборот. В Firebird то же самое должно быть.

А через Check constraint это нельзя слелать ? Туда нельзя вложить select ? Хотя это м.б. еще тяжелее блокировки будет.

...или промежуточный слой сделать :-)

[identity profile] arioch [npj.ru] (from livejournal.com) 2007-02-15 06:41 pm (UTC)(link)
sorry за ссылку.
not intentional.

Промахнулся и вбил ее вместо имени в тему :-(

[identity profile] beldmit.livejournal.com 2007-02-15 07:10 pm (UTC)(link)
Так. Наблюдаю отсылки к какой-то теории, которую я не знаю, но знать должен. Можно
подробностей?