Облако напомнило, что пора бы обновить Postgres, потому что используемая версия (14) невероятно устарела. Я осознал, что мои знания о функциональности в новых версиях остановились где-то в районе 10 версии (работает и ладно же), а сейчас уже скоро будет 18, решил почитать, что нового там появилось.

Среди кучи улучшений производительность и новых фич, которые я вряд ли использую, с удивлением обнаружил, что в 15 версии добавили MERGE. Оказывается, эта команда так вообще часть стандарта SQL, причем достаточно старого, 2003. При этом проблема upsert в Postgres издревле решалась через INSERT ... ON CONFLICT ....

Нюанс в том, что MERGE решает немного другие проблемы, чем upsert. MERGE лучше предназначен для пакетных операций, и при параллельных транзакциях все равно может быть проблема, ON CONFLICT надежнее в этом плане, поскольку он атомарный.

Вроде полезно релиз-ноты читать, но у устоявшихся технологий мало что революционного происходит.

А еще SQL стандарт развивается. Теперь там еще и JSON есть, в 2023.