Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Руководство: модуль compat

В этом руководстве рассматриваются API модуля compat и его использование:

Вывод списка параметров

Список параметров сериализуется в интерактивной консоли с дополнительными деталями для удобства пользователя:

  • Все неиспользуемые (устаревшие) параметры в порядке: new > old > default.
  • Сериализация возвращает массивоподобную таблицу с таблицами вида {<option> = <value>}.
  • Результат сериализации compat можно индексировать как обычную таблицу ключ-значение. .. code-block:: lua

tarantool> compat = require('compat') — ...

tarantool> compat — - - json_escape_forward_slash: new - - option_2: old - - option_default_old: default (old) - - option_default_new: default (new) ...

Подробности о параметрах в списке

  • current — текущее состояние параметра.
  • default — состояние параметра по умолчанию.
  • brief — текстовое описание параметра со ссылкой на более подробное описание. .. code-block:: lua

tarantool> compat.option_default_new — - current: old default: new brief: <...> ...

Изменение значения параметра

Это можно сделать напрямую или передав таблицу с парами параметр-значение. Допустимые значения: 'new', 'old' и 'default'.

tarantool> compat.json_escape_forward_slash = 'old'---...tarantool> compat{json_escape_forward_slash = 'new', option_2 = 'default'}---...

Восстановление значений по умолчанию

Установив значение 'default' для параметра:

tarantool> compat.option_2 = 'default'---...tarantool> compat.option_2---- current: default- default: new- brief: <...>...

Получение конфигурации compat с помощью compat.dump()

tarantool> compat({         >     obsolete_set_explicitly = 'new',         >     option_set_old = 'old',         >     option_set_new = 'new'         > })---...tarantool> compat---- - option_set_old: old- - option_set_new: new- - option_default_old: default (old)- - option_default_new: default (new)...# Obsolete options are not returned in serialization, but have the following values:# - obsolete_option_default: default (new)# - obsolete_set_explicitly: new# nil does output obsolete unset options as 'default'tarantool> compat.dump()---- require('compat')({            option_set_old          = 'old',            option_set_new          = 'new',            option_default_old      = 'default',            option_default_new      = 'default',            obsolete_option_default = 'default', -- obsolete since X.Y            obsolete_set_explicitly = 'new',     -- obsolete since X.Y    })...# 'current' is the same as nil with default set to current valuestarantool> compat.dump('current')---- require('compat')({            option_set_old          = 'old',            option_set_new          = 'new',            option_default_old      = 'old',            option_default_new      = 'new',            obsolete_option_default = 'new',     -- obsolete since X.Y            obsolete_set_explicitly = 'new',     -- obsolete since X.Y    })...# 'new' outputs obsolete as 'new'.tarantool> compat.dump('new')---- require('compat')({            option_set_old          = 'new',            option_set_new          = 'new',            option_default_old      = 'new',            option_default_new      = 'new',            obsolete_option_default = 'new',     -- obsolete since X.Y            obsolete_set_explicitly = 'new',     -- obsolete since X.Y    })...# 'old' outputs obsolete options as 'new'.tarantool> compat.dump('old')---- require('compat')({            option_set_old          = 'old',            option_set_new          = 'old',            option_default_old      = 'old',            option_default_new      = 'old',            obsolete_option_default = 'new',     -- obsolete since X.Y            obsolete_set_explicitly = 'new',     -- obsolete since X.Y    })...# 'default' does output obsolete options as default.tarantool> dump('default')---- require('compat')({            option_set_old          = 'default',            option_set_new          = 'default',            option_default_old      = 'default',            option_default_new      = 'default',            obsolete_option_default = 'default', -- obsoleted since X.Y            obsolete_set_explicitly = 'default', -- obsoleted since X.Y    })...

Установка всех параметров в определённое значение с помощью compat.dump()

  • вызовите compat.dump() для получения нужной конфигурации
  • скопируйте и вставьте результат в консоль (или используйте loadstring()) .. code-block:: lua

tarantool> compat.dump('new') — - require('compat')({ option_2 = 'new', json_escape_forward_slash = 'new', }) ... tarantool> require('compat')({ option_2 = 'new', json_escape_forward_slash = 'new', }) — ...

tarantool> compat — - - json_escape_forward_slash: new - - option_2: new ...

Добавление параметра во время выполнения

Пользователь должен передать таблицу со следующими полями:

  • name (строка)
  • default ('new' / 'old')
  • brief (описание параметра, может быть многострочной строкой)
  • obsolete ('X.Y' / nil) — версия Tarantool, в которой параметр был помечен как устаревший. Если значение nil, параметр считается неиспользуемым (не устаревшим)
  • action — функция (аргумент — логическое значение is_new, изменяет поведение соответственно)
  • run_action_now (true / false / nil) — если add_options должна выполнить action после добавления, по умолчанию false Горячая перезагрузка параметра:

Существующий параметр можно изменить во время выполнения с помощью add_option() — будут обновлены все поля, но текущее выбранное поведение сохранится, если оно задано. После этого будет вызвана новая функция action.

tarantool> compat.add_option{                 name = 'option_4',                 default = 'new',                 brief = "<...>",                 obsolete = nil,          -- you can explicitly mark the option as non-obsolete                 action = function(is_new)                      print(("option_4 action was called with is_new = %s!"):format(is_new))                 end,                 run_action_now = true           }option_4 postaction was called with is_new = true!---...tarantool> compat.add_option{             -- hot reload of option_4                 name = 'option_4',                 default = 'old',         -- different default                 brief = "<...>",                 action = function(is_new)                      print(("new option_4 action was called with is_new = %s!"):format(is_new))                 end           }---...         -- action is not called by default