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

# 스키마 변경 전파 지원

> 소스 테이블에서 ClickPipes가 감지할 수 있는 스키마 변경 유형을 설명하는 페이지

ClickPipes for Postgres는 소스 테이블의 스키마 변경을 감지할 수 있으며, 경우에 따라 이러한 변경 사항을 대상 테이블에 자동으로 전파할 수 있습니다. 각 DDL 작업이 처리되는 방식은 아래에 설명되어 있습니다.

[//]: # "TODO 이 페이지에 rename, 데이터 타입 변경, truncate 동작과 호환되지 않는 스키마 변경 처리 방법에 대한 안내를 추가합니다."

| 스키마 변경 유형                                                  | 동작                                                                                                                                                       |
| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 새 컬럼 추가 (`ALTER TABLE ADD COLUMN ...`)                     | 테이블에 삽입/업데이트/삭제가 발생하면 자동으로 전파됩니다. 새 컬럼은 스키마 변경 이후 복제된 모든 행에 채워집니다                                                                                        |
| 기본값이 있는 새 컬럼 추가 (`ALTER TABLE ADD COLUMN ... DEFAULT ...`) | 테이블에 삽입/업데이트/삭제가 발생하면 자동으로 전파됩니다. [지원되는 기본값](#default-values-for-added-columns)도 ClickHouse 컬럼에 추가되므로, 스키마 변경 이후 복제된 행뿐 아니라 ClickHouse에 이미 있는 행에도 적용됩니다. |
| 기존 컬럼 삭제 (`ALTER TABLE DROP COLUMN ...`)                   | 감지되지만 **전파되지는** 않습니다. 삭제된 컬럼은 스키마 변경 이후 복제된 모든 행에서 `NULL`로 채워집니다                                                                                         |

컬럼 추가는 배치 동기화가 끝날 때 전파되며, 이는 동기화 인터벌에 도달하거나 pull 배치 크기에 도달한 후에 발생할 수 있습니다. 동기화 제어에 대한 자세한 내용은 [여기](/ko/integrations/clickpipes/postgres/controlling-sync)를 참조하십시오.

<div id="default-values-for-added-columns">
  ## 추가된 컬럼의 기본값
</div>

컬럼을 추가할 때 ClickPipes는 값을 ClickHouse로 안전하게 변환할 수 있는 경우에만 기본값을 전파합니다. 기본값이 전파되면 ClickHouse는 새 컬럼이 추가되기 전에 생성된 데이터 파트를 읽을 때 해당 값을 사용합니다. 따라서 ClickHouse에 이미 있는 행에는 PostgreSQL이 `ADD COLUMN` 이전의 행에 사용하는 것과 동일한 값이 표시되며, 전체 테이블 갱신은 필요하지 않습니다.

PostgreSQL에서 ClickPipes는 컬럼의 현재 기본 표현식이 아니라 PostgreSQL이 기존 행에 저장한 값을 읽습니다. 기본값이 표현식인 경우 이 점이 중요합니다. `now()`와 같은 비휘발성 표현식은 컬럼을 추가할 때 PostgreSQL에서 평가되며, ClickPipes는 표현식 자체가 아닌 그 결과값을 전파합니다. 이후 `SET DEFAULT` 또는 `DROP DEFAULT` 작업을 수행해도 기존 행에 사용되는 기본값은 변경되지 않으며 ClickHouse로 전파되지 않습니다.

다음 값이 전파됩니다.

* Boolean 및 유한한 숫자 값
* `varchar`, `char`, enum, UUID, JSON/JSONB, `hstore`, 네트워크 주소, 날짜를 포함한 텍스트 값
* 타임스탬프. 시간대가 있는 타임스탬프는 UTC로 정규화됩니다.

`NULL`, 유한하지 않은 숫자 값, `bytea`, 배열, 인터벌, 시간 값, 기하 타입 등 ClickHouse로 안전하게 이식할 수 없는 형식의 기본값은 생략됩니다. 컬럼은 계속 추가되지만, ClickHouse는 컬럼이 추가되기 전에 생성된 파트에 일반적인 타입 기본값을 사용합니다. 기존 행에 소스 기본값을 포함해야 하는 경우 전체 테이블 갱신이 필요합니다.
