> ## 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.

# external_table_* 세션 설정

> external_table_* 자동 생성 그룹에 속한 ClickHouse 세션 설정입니다.

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)에서 확인할 수 있으며 [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp)에서 자동 생성됩니다.

## external\_table\_functions\_use\_nulls

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

[mysql](/ko/reference/functions/table-functions/mysql), [postgresql](/ko/reference/functions/table-functions/postgresql), [odbc](/ko/reference/functions/table-functions/odbc) 테이블 함수가 널 허용 컬럼(Nullable columns)을 사용하는 방식을 정의합니다.

가능한 값:

* 0 — 테이블 함수가 널 허용 컬럼을 명시적으로 사용합니다.
* 1 — 테이블 함수가 널 허용 컬럼을 암시적으로 사용합니다.

**사용**

이 설정을 `0`으로 지정하면 테이블 함수는 컬럼을 널 허용으로 만들지 않으며, NULL 대신 기본값을 삽입합니다. 이는 배열 내부의 NULL 값에도 적용됩니다.

## external\_table\_strict\_query

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

true로 설정하면, 외부 데이터베이스로 푸시다운할 수 없는 외부 테이블(`MySQL`, `PostgreSQL`, `SQLite`, `ODBC`, `JDBC`) 컬럼에 대한 필터가 데이터를 가져온 후 로컬에서 적용되는 대신 예외를 발생시키며 거부됩니다.

이 검사는 최상위 `WHERE` 프레디케이트와 최상위 `AND`의 각 논리곱 항을 대상으로 합니다. 외부 테이블 컬럼에 대한 `PREWHERE`는 이 설정의 대상이 아닙니다. 해당 테이블 엔진은 `PREWHERE`를 지원하지 않으므로, 이러한 쿼리는 설정과 무관하게 `ILLEGAL_PREWHERE`로 거부됩니다. 검사는 필터를 실제로 푸시다운할 수 있는 위치에서만 실행됩니다. 즉, 외부 테이블이 쿼리의 유일한 테이블일 때, `INNER JOIN`의 양쪽일 때, 또는 외부 조인의 보존 측(`LEFT JOIN`의 왼쪽, `RIGHT JOIN`의 오른쪽)일 때입니다. `LEFT`/`RIGHT JOIN`의 비보존 측과 `FULL JOIN`의 양쪽에서는 아무것도 푸시다운되지 않고 검사도 이루어지지 않으므로, 외부 테이블 컬럼에 대한 필터는 엄격 모드에서도 조인 이후 로컬에서 적용됩니다. 검사가 실행되는 위치에서도, 주변 쿼리에서 조인된 다른 테이블을 참조하는 프레디케이트는 푸시다운되지 않으며 검사에서 제외됩니다. 조인된 측만 참조하는 경우(예: `WHERE r.flag`)와 하나의 비-`AND` 표현식 안에서 외부 테이블과 섞여 있는 경우(예: `WHERE l.id = 1 OR r.flag`)가 모두 여기에 해당합니다. 이러한 프레디케이트는 ClickHouse의 일반적인 평가 지점(조인 이후의 `WHERE`, 조인 이전의 `PREWHERE`)을 그대로 유지하며 거부되지 않습니다.
