Перейти к основному содержимому
Перейти к основному содержимому

Ограничения на настройки

Ограничения на настройки могут быть определены в разделе profiles файла конфигурации user.xml и запрещают пользователям изменять некоторые настройки с помощью запроса SET. Ограничения определены следующим образом:

Если пользователь попытается нарушить ограничения, будет выброшено исключение, и настройка не будет изменена. Поддерживаются несколько типов ограничений: min, max, readonly (синоним const) и changeable_in_readonly. Ограничения min и max указывают верхние и нижние границы для числовых настроек и могут использоваться в комбинации. Ограничение readonly или const указывает на то, что пользователь не может изменять соответствующую настройку вообще. Тип ограничения changeable_in_readonly позволяет пользователю изменять настройку в пределах диапазона min/max, даже если настройка readonly установлена в 1, в противном случае изменения в настройках не разрешены в режиме readonly=1. Обратите внимание, что changeable_in_readonly поддерживается только если включено settings_constraints_replace_previous:

Если у пользователя активны несколько профилей, то ограничения объединяются. Процесс объединения зависит от settings_constraints_replace_previous:

  • true (рекомендуется): ограничения для одной и той же настройки заменяются в процессе объединения, так чтобы последнее ограничение использовалось, а все предыдущие игнорировались, включая поля, которые не указаны в новом ограничении.
  • false (по умолчанию): ограничения для одной и той же настройки объединяются таким образом, что каждый не установленный тип ограничения берется из предыдущего профиля, а каждый установленный тип ограничения заменяется значением из нового профиля.

Режим исключительно для чтения включается с помощью настройки readonly (чтобы не путать с типом ограничения readonly):

  • readonly=0: Нет ограничений на чтение.
  • readonly=1: Разрешены только запросы на чтение, и настройки не могут быть изменены, если не установлено changeable_in_readonly.
  • readonly=2: Разрешены только запросы на чтение, но настройки могут быть изменены, кроме самой настройки readonly.

Пример: Пусть users.xml содержит строки:

Следующие запросы все выбрасывают исключения:

Примечание: профиль default имеет специальную обработку: все ограничения, определенные для профиля default, становятся ограничениями по умолчанию, поэтому они ограничивают всех пользователей, пока не будут явно переопределены для этих пользователей.

Ограничения на настройки Merge Tree

Возможно установить ограничения для настроек merge tree. Эти ограничения применяются при создании таблицы с движком merge tree или при изменении ее настроек хранения. Имя настройки merge tree должно начинаться с префикса merge_tree_ при ссылке в разделе <constraints>.

Пример: Запретить создание новых таблиц с явно указанной storage_policy