_session_settings
— это временный системный спейс со списком настроек, которые во время текущего сеанса могут повлиять на поведение системы, в частности поведение SQL. Здесь используется специальный механизм под названием „service“. Каждый кортеж „service“ создается на лету, то есть при каждом обращении к _session_settings
создается кортеж. В каждом кортеже с настройками есть два поля: name
(первичный ключ) и value
. Далее указаны имена кортежей и значения, которые используются по умолчанию:
error_marshaling_enabled
: есть ли особая структура для объектов ошибок. По умолчанию стоит false.
sql_default_engine
: движок базы данных, который используется по умолчанию для создания SQL-таблиц. По умолчанию используется memtx.
sql_defer_foreign_keys
: откладывается ли проверка ограничений внешнего ключа до коммита. По умолчанию стоит false.
sql_full_column_names
: на данный момент никакого действия нет. По умолчанию стоит false.
sql_full_metadata
: будут ли метаданные результирующего набора SQL содержать другие данные, помимо имени и типа. По умолчанию стоит false.
sql_parser_debug
: показывать ли шаги работы анализатора для последующих выражений. По умолчанию стоит false.
sql_recursive_triggers
: может ли сработавший оператор активировать триггер. По умолчанию стоит true.
sql_reverse_unordered_selects
: находятся ли строки результата обычно в обратном порядке, если нет оператора ORDER BY. По умолчанию стоит false.
sql_select_debug
: показывать ли шаги выполнения во время SELECT. По умолчанию стоит false.
sql_vdbe_debug
: используется разработчиками Tarantool. По умолчанию стоит false.
Доступны 3 запроса: select, get и update. Например, после вызова s = box.space._session_settings
s:select('sql_default_engine')
вероятно вернет {'sql_default_engine', 'memtx'}
, а s:update('sql_default_engine', {{'=', 'value', 'vinyl'}})
изменит движок базы данных, который используется по умолчанию, на „vinyl“.
Значения sql_parser_debug
, sql_select_debug
или sql_vdbe_debug
обновятся, только если Tarantool был собран с DCMAKE_BUILD_TYPE=Debug. Чтобы это проверить, используйте require('tarantool').build.target
.