Команда разработчиков Picodata рада сообщить о выпуске новой версии нашего основного программного продукта — Picodata 25.2. В этой версии добавлены новые команды SQL, внедрена система определения типов данных, улучшена поддержка протокола PostgreSQL, добавлены новые метрики, улучшена работа в консоли и сделано множество небольших, но важных доработок.
Расширение возможностей SQL
В Picodata 25.2 мы расширили возможности языка SQL в Picodata, добавив поддержку новых команд:
TRUNCATE
для очистки таблицыALTER TABLE t ADD COLUMN
для добавления колонки к таблицеALTER TABLE old_table_name RENAME TO new_table_name
для переименования таблицы
Также добавлена новая скалярная функция instance_uuid
.
Новая система типов
Другое крупное улучшение — новая система типов, которая также расширяет возможности SQL и важна с точки зрения совместимости с PostgreSQL. Раньше, в параметризованных запросах было необходимо указывать типы явно. Сделать это можно было явно с помощью клиентской библиотеки, но не все клиенты это поддерживали. В подобных случаях типы параметров приходилось указывать в SQL через CAST параметра к нужному типу. С новой системой для большинства запросов в этом пропадает необходимость, но сохраняется возможность указать типы явно через CAST
. Кроме того, новая система типов позволяет выводить более осмысленные сообщения об ошибках для неверных запросов, а также использует более удобные для пользователя умолчания.
Примеры обработки ошибок:
SELECT int_col + text_col;
--
-- error: could not resolve operator overload for +(int, text)
SELECT COALESCE(int_col, text_col);
--
-- error: COALESCE types int and text cannot be matched
VALUES (1, 2), (2, false);
--
-- error: VALUES types unsigned and bool cannot be matched
SELECT CASE WHEN true THEN 1 ELSE false END;
--
-- error: CASE/THEN types unsigned and bool cannot be matched
UPDATE t SET numeric_col = false;
--
-- error: column "numeric_col" is of type numeric, but expression is of type bool
INSERT INTO t (int_col, numeric_col) VALUES (false, 1);
--
-- error: INSERT column at position 1 is of type int, but expression is of type bool
В ряде случаев теперь нужно указывать тип явно. Так, вместо
SELECT 1 + (SELECT $1);
следует использовать
SELECT 1 + (SELECT $1)::int;
Система типов теперь пытается автоматически определить тип данных из контекста. Это позволяет не указывать тип явно в таких случаях как:
SELECT * FROM t WHERE a = $1
(тип $1
будет взят из колонки a
), или:
INSERT INTO t (int_col) VALUES ($1)
UPDATE t SET int_col = $1
(в обоих случаях тип $1
будет взят из колонки int_col
).
При отсутствии контекста (например, SELECT $1
), система типов по умолчанию считает переданный параметр текстом.
Совместимость c PostgreSQL
В Picodata 25.2 мы отказались от устаревшей встроенной консоли (picodata connect
) и сосредоточились на поддержке подключения по протоколу PostgreSQL. Рекомендуемый способ взаимодействия с Picodata — использовать клиентское приложение PostgreSQL, такое как psql
. Для готовых пакетов Picodata мы добавили psql
в качестве зависимости, а в остальных случаях его можно легко установить в Linux отдельно (без необходимости устанавливать сам сервер БД PostgreSQL). Также, при подключении по протоколу PostgreSQL теперь по умолчанию включен безопасный режим (SSL).
Улучшенный мониторинг
В Picodata 25.2 доработан дашбоард для мониторинга кластера через Grafana. Также добавлены новые метрики в формате Prometheus. Мониторинг кластера стал более информативным:

…и многое другое!
Другие заметные новинки и изменения в Picodata 25.2:
- Пользователи с ролью
public
теперь по умолчанию могут читать системные таблицы_pico_instance
и_pico_peer_address
- Привилегия
DROP
не позволяет удалять системные таблицы - В административной консоли (
picodata admin
) в Lua-режиме (\lua
) больше не требуется разделитель команд - В командной строке теперь допускается указывать только полную комбинацию
HOST:PORT
- Для команды
picodata expel
больше не требуется указывать имя кластера (параметр--cluster-name
будет удален в следующем мажорном релизе Picodata) - Команда
picodata status
теперь показывает больше полезной информации и использует компактное форматирование вывода - Задание/изменение пароля для пользователя с типом аутентификации LDAP запрещено в SQL
- RPC-запросы со стороны плагинов теперь исполняются локально во всех случаях, когда это возможно
Полный список нововведений и список исправленных ошибок доступны в документе CHANGELOG.
Роль Picodata для Ansible
Дополнительно, мы развиваем роль Picodata для Ansible, что позволяет удобно управлять распределенным кластером. С picodata-ansible доступны все возможности, включая работу с тирами, развертывание плагинов, а также многие дополнительные функции (например, возможность использования системы управления процессами supervisord
взамен systemd
для управления кластером).
Попробуйте Picodata в деле!
Для установки Picodata 25.2 следуйте инструкциям на сайте. Кстати, мы обновили список поддерживаемых ОС и теперь предоставляем пакеты для следующих дистрибутивов Linux:
- Astra 1.8
- Debian 12 (bookworm)
- RHEL/Rocky 9
- Fedora 41–42
Инструкции и руководства по установке, использованию и администрированию Picodata размещены на портале документации Picodata.
Вопросы и пожелания направляйте в наш Telegram-чат @picodataru.