rockspec_format = '3.0' package = 'tnt-postgres' version = 'scm-1' source = { url = 'git+https://github.com/tnt-skein/tnt-postgres.git', branch = 'main', } description = { summary = 'PostgreSQL для Tarantool: фасад над роком pg с пулом, сроком, повторами, транзакциями и отказом парой', detailed = [[ У Tarantool есть официальный неблокирующий рок pg, и пакет не пишет протокол заново, а доводит рок до надёжного драйвера. Рок срока не знает, отказывает строкой без кода, не говорит, сколько строк задел оператор, и вставляет пароль в строку соединения без экранирования; пакет ставит его форк с починками (make deps-pg) и закрывает остальное в фасаде. db:query и db:execute принимают пару «текст и параметры» — её собирает tnt-sql под диалект драйвера, — отдают записи по именам столбцов либо число затронутых строк. db:transaction держит транзакцию на одном соединении: отказ тела — откат и пара, исключение — выброс соединения. Соединения живут в пуле с проверкой живости без сети, срок один на вызов, а ответ рока ждётся в отдельном файбере; брошенный запрос сервер снимает сам по statement_timeout. Отказ — пара nil, err с родом по SQLSTATE сервера, признаком отправки и приговором повтору. Повторяет вызов tnt-retry, после отправки — только с согласия вызывающего. Строку соединения собирает фасад с экранированием, шифрование задаётся ключами libpq и без настройки tls явно выключено. Зависит от tnt-must (проверка настроек шифрования), tnt-log (журнал), tnt-pool (соединения), tnt-retry (повторы), tnt-sql (диалект postgres) и tnt-storage (срок, отказ с родом, значения и драйвер SQL над роком). Покрытие строк и убитых мутантов — 100 %. ]], homepage = 'https://github.com/tnt-skein/tnt-postgres', issues_url = 'https://github.com/tnt-skein/tnt-postgres/issues', maintainer = 'tnt-skein', license = 'MIT', labels = { 'tarantool', 'postgresql', 'sql', 'database', 'driver' }, } dependencies = { 'lua >= 5.1', -- Проверка настроек шифрования с виной на строке того, кто завёл драйвер. 'tnt-must', -- Журнал драйвера: выброшенное соединение, открытая транзакция при возврате. 'tnt-log', -- Соединения с проверкой живости и сбросом без сети. 'tnt-pool', -- Повторы вызова по полю retriable отказа. 'tnt-retry', -- Правила диалекта postgres для построителя запросов. 'tnt-sql', -- Срок, отказ с родом, значения и драйвер SQL над роком. 'tnt-storage', -- Рок `pg` здесь не объявлен, хотя без него драйвер не откроет -- ни одного соединения: нужен форк с починками — заплаты rocks/pg -- поверх закреплённого коммита, — а не выпуск 2.0.2 -- с rocks.tarantool.org, который установка пакета взялась бы собирать -- сама и упала бы на CMake 4. Ставится целью `make deps-pg`; -- `postgres.new` на узле без рока бросает сразу (docs/postgres.md). } build = { type = 'builtin', modules = { ['tnt.postgres'] = 'tnt/postgres.lua', ['tnt.postgres.rock'] = 'tnt/postgres/rock.lua', ['tnt.postgres.settings'] = 'tnt/postgres/settings.lua', }, }