Після року розробки опубліковано нова стабільна гілка СУБД PostgreSQL 12. Оновлення для нової гілки виходитимуть упродовж п'яти років до листопада 2024 року.
Додано підтримку «генерованих стовпців«, значення яких обчислюється на основі виразу, що охоплює значення інших стовпців у тій же таблиці (аналог уявлень, але окремих стовпців). Стовпчики, що генеруються, можуть бути двох типів - зберігаються і віртуальні. У першому випадку значення обчислюється у момент додавання чи зміни даних, тоді як у другому — при кожному читанні з урахуванням поточного стану інших стовпців. В даний час в PostgreSQL підтримуються тільки стовпці, що зберігаються;
Додано можливість виконання запитів даних із JSON-документів за допомогою Path-виразів, що нагадують XPath та визначених у стандарті SQL/JSON. Для підвищення ефективності обробки подібних виразів для документів, що зберігаються у форматі JSONB, застосовуються механізми індексування;
За замовчуванням включено застосування JIT-компілятора (Just-in-Time) на основі напрацювань LLVM для прискорення виконання деяких виразів у процесі обробки SQL-запиту. Наприклад, JIT застосовується для прискорення виконання виразів усередині блоків «WHERE», у вихідних списках (target lists), агрегатних виразах та деяких внутрішніх операціях;
Істотно збільшено продуктивність індексування. Індекси B-tree оптимізовані для роботи в умовах частої зміни індексів - у тестах TPC-C спостерігається загальне підвищення продуктивності та зниження споживання дискового простору в середньому на 40%. Знижено накладні витрати при генерації лога попереджувального запису (WAL) для типів індексів GiST, GIN та SP-GiST. Для GiST додана можливість створення індексів-оберток (через вираз INCLUDE), що включають додаткові стовпці. В операції СТВОРИТИ СТАТИСТИКУ забезпечено підтримку статистики про найбільш типові значення (MCV), що дозволяє генерувати більш оптимальні плани запитів при використанні нерівномірно розподілених стовпців;
Реалізація секціонування (партикування) оптимізована для запитів, що охоплюють таблиці з тисячами секцій, але обмежуються вибіркою обмеженого підмножини даних. Збільшено продуктивність додавання даних до секційованих таблиць за допомогою операцій INSERT та COPY, а також забезпечено можливість додавання нових секцій через «ALTER TABLE ATTACH PARTITION» без блокування виконання запитів;
Додано підтримку автоматичного inline-розгортання узагальнених табличних виразів (Загальний вираз таблиці, CTE), що дозволяють використовувати тимчасові іменовані результуючі набори, що задаються оператором WITH. Inline-розгортання дозволяє підвищити продуктивність більшості запитів, але поки що застосовується тільки для нерекурсивних CTE;
Додана підтримка недетермінованих властивостей локалі «Collation», що дозволяє задавати правила сортування та методи зіставлення з урахуванням сенсу символів (наприклад, при сортуванні цифрових значень враховується наявність мінуса і точки перед числом та різні види написання, а при порівнянні не береться до уваги регістр символів та знака наголосу) ;
Додано підтримку багатофакторної аутентифікації клієнта, при якій pg_hba.conf для аутентифікації можна комбінувати аутентифікацію за SSL-сертифікатом (clientcert=verify-full) c додатковим методом аутентифікації, таким як scram-sha-256;
Додано підтримку шифрування каналу зв'язку при аутентифікації через GSSAPIяк на стороні клієнта, так і на стороні сервера;
Додано підтримку визначення LDAP-серверів на основі записів «DNS SRV», якщо PostgreSQL зібраний з OpenLDAP;
Додано операцію «REINDEX CONCURRENTLY» для перебудови індексів без блокування операцій запису до індексу;
Додана команда pg_checksums, що дозволяє для існуючої БД включати та вимикати перевірку контрольних сум сторінок даних (раніше ця операція підтримувалася лише під час ініціалізації БД);
Забезпечено виведення індикатора прогресу виконання операцій CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL та pg_checksums;
Додана команда «CREATE ACCESS METHODдля підключення обробників нових методів зберігання таблиць, оптимізованих для різних специфічних завдань. В даний час єдиним вбудованим методом доступу до таблиць є "heap";
Файл конфігурації recovery.conf об'єднаний із postgresql.conf. Як індикатори переходу в стан відновлення після збою тепер випливає використовувати файли recovery.signal та standby.signal.