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