Команда разработчиков 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 matchedVALUES (1, 2), (2, false);
--
-- error: VALUES types unsigned and bool cannot be matchedSELECT CASE WHEN true THEN 1 ELSE false END;
--
-- error: CASE/THEN types unsigned and bool cannot be matchedUPDATE t SET numeric_col = false;
--
-- error: column "numeric_col" is of type numeric, but expression is of type boolINSERT 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.