メインコンテンツまでスキップ
メインコンテンツまでスキップ

設定に関する制約

設定に関する制約は user.xml 構成ファイルの profiles セクションで定義され、ユーザーが SET クエリを使用して一部の設定を変更することを禁止します。 制約は以下のように定義されます:

ユーザーが制約を破ろうとした場合、例外がスローされ、設定は変更されません。 サポートされている制約のタイプは、minmaxreadonly (エイリアス const) および changeable_in_readonly です。minmax の制約は数値設定の上限と下限を指定し、組み合わせて使用することができます。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 プロファイルで定義されたすべての制約はデフォルト制約となり、これらの制約は明示的にオーバーライドされない限りすべてのユーザーを制限します。

マージツリー設定に関する制約

マージツリー設定に対して制約を設定することが可能です。これらの制約は、マージツリーエンジンのテーブルが作成されるときや、そのストレージ設定が変更されるときに適用されます。マージツリー設定の名前は <constraints> セクションで参照される際に merge_tree_ プレフィックスを追加する必要があります。

例: 明示的に指定された storage_policy で新しいテーブルの作成を禁止