Вышел PostgreSQL 10
- среда, 11 октября 2017 г. в 03:15:25

На самом деле прошло уже два дня, но статью на Хабр никто до сих пор не написал, так что придется мне устранять это упущение, что и делаю с удовольствием.
Итак, что же нового в этой версии PostgreSQL?
Во-первых, изменилось само версионирование. До "десятки" мы наблюдали множество минорных версий 9.x, которые выходили примерно раз в год и при этом вносили серьезные, далеко не минорные изменения. Поэтому с версии 10 было принято решение сделать нумерацию 10, 11, 12 и т.д. Кстати, MySQL, похоже пошел по тому же пути, прыгнул с 5.7 на 8.0
Ладно, это всё мелочи, перейдем к существу вопроса
Это то, чего все ждали давным-давно. Замена различным расширениям а ля slony (репликация на триггерах) и другим костылям.
Теперь вы можете из коробки делать репликацию отдельных таблиц на другие базы.
Репликация делается с помощью команд CREATE PUBLICATION и CREATE SUBSCRIPTION. Всё достаточно просто.
Понятно, что фича достаточно новая, поэтому на данный момент в логической репликации отсутствуют некоторые фичи.
Тем не менее это все равно огромный шаг вперед, в каких-то случаях можно выкинуть slony!
Если раньше партиции можно было накостылять через наследование таблиц, то в десятке появилось для этого встроенное средство, которое называется declarative partitioning.
Для этого у главной таблицы добавляется ключевое слово PARTITON BY RANGE (или LIST), которое говорит, что эта таблица партициирована (или как это правильно сказать по-русски?).
У конкретных партиций с помощью выражения PARTITION OF ... FOR VALUES FROM (...) TO (...) задается диапазон их данных.
У партиций есть ряд ограничений, которые стоит иметь в виду, прежде чем использовать на продакшене: Limitations of declarative partitioning in PostgreSQL 10
Если вкратце, то появилась возможность писать
id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEYвместо
id serial PRIMARY KEY Что это дает?
Дело в том, что слово serial — это грубо говоря алиас к конструкции DEFAULT nextval('имя сиквенса'). Т.е. по сути таблица отдельно, сиквенс отдельно. Это бывает удобно, а бывает нет. Например, это приводит к тому, что если вы даете права на вставку в таблицу (GRANT INSERT), вам приходится еще отдельно давать гранты на сиквенс.
Кстати, новая запись соответствует стандарту SQL.
Полный список изменений можно посмотреть здесь.
Если кто-то уже успел попробовать v10 в бою, поделитесь, плиз, своими впечатлениями в комментариях.
UPDATE. Есть мнение, что система версий не очень. Надо было называть PostgreSQL X, чтобы быть в тренде :)