Merge в postgres

PCContra
Дата: 16.04.2015 14:58:08
в 2008 году merge приняли в состав стандарта. Почему его нет в postgres, который всегда соответствовал стандартам?
Maxim Boguk
Дата: 16.04.2015 15:14:25
PCContra
в 2008 году merge приняли в состав стандарта. Почему его нет в postgres, который всегда соответствовал стандартам?


Соответствие стандартам это не тоже самое что полная реализация стандарта. Полный даже ANSI SQL 1992 - он настолько обьемен и местами настолько дурной что целиком его не сделать (одни nchar/nvachar чего стоят... это я скажу как человек который в in-house разработке пытался это впилить в Postgresql для внутренних целей).

А вообще на счет совместимости смотрите тут: http://www.postgresql.org/docs/9.4/interactive/features.html


--
Maxim Boguk
www.postgresql-consulting.ru
PCContra
Дата: 16.04.2015 15:17:49
Максим, у меня такой задачи использовать merge не было. Он вообще нужен?
И да, я согласен, что в стандарте 92 года много того, что сейчас кажется абсурдным и в реализации ни мне, ни кому бы то ни было, не нужно и вряд ли будет нужно когда-нибудь
Maxim Boguk
Дата: 16.04.2015 15:21:20
PCContra
Максим, у меня такой задачи использовать merge не было. Он вообще нужен?
И да, я согласен, что в стандарте 92 года много того, что сейчас кажется абсурдным и в реализации ни мне, ни кому бы то ни было, не нужно и вряд ли будет нужно когда-нибудь


Да merge бывает очень удобен. Но поскольку обычно это легко решалось костыльным триггером то особо никто не заморачивался (ибо очень геморойная реализация).
Насколько я понимаю в 9.5 он уже будет (судя по всему).

--
Maxim Boguk
www.postgresql-consulting.ru
p2.
Дата: 16.04.2015 16:15:38
PCContra
не нужно и вряд ли будет нужно когда-нибудь
Один оператор заменяет блок по проверке существования записи, вставке или обновления, обработки коллизии, если этот же блок с тем же ключом идет в другой сессии, и повтор операции.
Подобный блок операторов корректно реализуют только процентов 10% разработчиков с опытом более года. Неплохой вопрос для собеседований по применению различных уровней изоляции.
Flash Gordon
Дата: 16.04.2015 16:34:36
Есть один способ: https://pgolub.wordpress.com/2015/02/26/merge-in-postgresql/

Но нужно понимать, что он не атомарен. Как, впрочем, и мерж в оракле.
Ivan Durak
Дата: 16.04.2015 17:26:58
нифига себе не нужен. Людей спросили?
http://postgresql.uservoice.com/forums/21853-general
топовый запрос!!
qwwq
Дата: 16.04.2015 21:36:10
Ivan Durak
нифига себе не нужен. Людей спросили?
http://postgresql.uservoice.com/forums/21853-general
топовый запрос!!

дык
"у дураков мысли сходятся"
, евпочя

ах да, невольная рифма, простите , если обидел

вот чего действительно сложно на коленке собрать -- того бакланы и не просят

http://postgresql.uservoice.com/forums/21853-general/suggestions/1378161-insert-nowait-update-nowait#comments

без апдейта можно обойтись, эмулируется захватом записи. а вот с инсертом -- оно интереснее.
есть таки такие задачки ( ну или я люблю их себе придумывать -- захват ресурсов без ожидания)
p2.
Дата: 17.04.2015 18:57:54
qwwq
вот чего действительно сложно на коленке собрать
для целок - pg_try_advisory_lock
p2.
Дата: 17.04.2015 19:11:09
Flash Gordon
Но нужно понимать, что он не атомарен. Как, впрочем, и мерж в оракле.
А как это проявляется в оракле?