概要
制約の定義
user.xml 設定ファイルの profiles セクションで
定義できます。これにより、ユーザーが
SETステートメントを使用して一部の設定を変更することを
禁止できます。
制約は次のように定義します。
制約の種類
minmaxdisallowedreadonly(別名const)changeable_in_readonly
min 制約と max 制約は、数値設定の上限値と下限値を指定するもので、組み合わせて使用できます。
disallowed 制約は、特定の設定に対して許可しない特定の値を指定するために使用できます。
readonly または const 制約は、ユーザーが対応する設定を一切変更できないことを示します。
changeable_in_readonly 制約タイプでは、readonly 設定が 1 に設定されている場合でも、設定を min/max の範囲内で変更できます。
それ以外の場合、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 プロファイルに定義された
すべての制約はデフォルトの制約となるため、各ユーザーに対して明示的に上書きされない限り、
すべてのユーザーに適用されます。MergeTree 設定の制約
<constraints> セクションで参照する場合、MergeTree 設定名の先頭に
merge_tree_ プレフィックスを付ける必要があります。
例
storage_policy を明示的に指定した新しいテーブルの作成を禁止できます