> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# validate_* 세션 설정

> validate_* 생성된 그룹의 ClickHouse 세션 설정입니다.

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["버전", "기본값", "설명"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        버전 이력
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>유형</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>기본값</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          재시작 없이 변경 가능
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

이 설정들은 [system.settings](/ko/reference/system-tables/settings)에서 확인할 수 있으며 [소스 코드](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)를 기반으로 자동 생성됩니다.

<h2 id="validate_enum_literals_in_operators">
  validate\_enum\_literals\_in\_operators
</h2>

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.1"},{"label": "0"},{"label": "새로운 설정"}]}]} />

활성화하면 `IN`, `NOT IN`, `==`, `!=` 같은 연산자에서 enum 리터럴이 enum 유형에 맞는지 검사하며, 리터럴이 유효한 enum 값이 아니면 예외를 발생시킵니다.

<h2 id="validate_group_by_all_key_types">
  validate\_group\_by\_all\_key\_types
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "`GROUP BY ALL`이 `SELECT` 표현식을 확장하여 만드는 키 타입에 대한 유효성 검사는 26.7 또는 26.8과의 `compatibility` 설정에서도 그대로 유지됩니다. 이전 값을 새 값과 의도적으로 동일하게 둔 것은, 해당 버전들에서 이미 그러한 키를 거부했고 26.7 이전 버전에서만 기존의 허용 동작이 복원되기 때문입니다."}]}, {"id": "row-2","items": [{"label": "26.7"},{"label": "1"},{"label": "`GROUP BY ALL`이 `SELECT` 표현식을 확장하여 만드는 키 타입의 유효성 검사를 제어하는 새로운 설정입니다. 26.7부터 해당 위치에서 `Variant`\/`Dynamic` 키를 거부하기 시작했으며, 이전 버전에서는 분석기가 활성화된 상태(`enable_analyzer = 1`, 기본값)에서 이를 허용했습니다(구 분석기는 26.7 이전에도 그러한 키를 거부했습니다). 따라서 이전 값은 `false`이며, 26.7 이전 버전과의 `compatibility`를 지정하면 기존의 허용 동작이 복원됩니다."}]}]} />

`GROUP BY ALL`이 `SELECT` 표현식을 확장하여 만드는 그룹화 키를 [allow\_suspicious\_types\_in\_group\_by](/ko/reference/settings/session-settings/allow-suspicious#allow_suspicious_types_in_group_by)에 따라 검사할지 여부를 제어합니다. 이 설정을 비활성화하면 26.7 이전 버전의 동작, 즉 `GROUP BY ALL`로 작성된 [Variant](/ko/reference/data-types/variant) 또는 [Dynamic](/ko/reference/data-types/dynamic) 키(예: 타입이 지정되지 않은 JSON 하위 경로를 그룹화 키로 사용하는 경우)를 허용하는 동작이 복원됩니다. 이 설정은 분석기가 활성화된 경우(`enable_analyzer = 1`, 기본값)에만 적용됩니다. 구 분석기에서는 26.7 이전에도 그러한 키가 거부되었으므로 복원할 동작이 없습니다. 명시적인 `GROUP BY`는 이 설정의 영향을 받지 않고 어느 경우에도 그러한 키를 계속 거부합니다. 따라서 이 설정은 명시적인 `GROUP BY`에서도 그러한 키를 허용하는 `allow_suspicious_types_in_group_by`보다 적용 범위가 좁습니다.

가능한 값:

* 0 - `GROUP BY ALL`이 확장하여 만드는 키 타입에 대해 유효성 검사를 수행하지 않습니다.
* 1 - 명시적인 `GROUP BY`가 자체 키를 검사하는 것과 마찬가지로 유효성 검사를 수행합니다.

<h2 id="validate_mutation_query">
  validate\_mutation\_query
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.11"},{"label": "1"},{"label": "기본적으로 뮤테이션 쿼리를 검사하는 새로운 설정입니다."}]}]} />

뮤테이션 쿼리를 허용하기 전에 검사합니다. 뮤테이션은 백그라운드에서 실행되므로 유효하지 않은 쿼리를 실행하면 뮤테이션이 중단된 채로 남아 수동 개입이 필요할 수 있습니다.

이전 버전과 호환되지 않는 버그가 발생한 경우에만 이 설정을 변경하십시오.

<h2 id="validate_polygons">
  validate\_polygons
</h2>

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "20.4"},{"label": "1"},{"label": "기본적으로 `pointInPolygon` 함수에서 유효하지 않은 다각형에 대해 잘못된 결과를 반환할 수 있는 대신 예외를 발생시킵니다"}]}]} />

다각형이 자체 교차하거나 자기 자신에 접하는 경우 [pointInPolygon](/ko/reference/functions/regular-functions/geo/coordinates#pointinpolygon) 함수에서 예외를 발생시킬지 여부를 활성화하거나 비활성화합니다.

가능한 값:

* 0 — 예외 발생이 비활성화됩니다. `pointInPolygon`은 유효하지 않은 다각형을 허용하며, 이에 대해 잘못된 결과를 반환할 수 있습니다.
* 1 — 예외 발생이 활성화됩니다.
