> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Поддержка распространения изменений схемы

> Страница с описанием типов изменений схемы, которые ClickPipes может обнаруживать в исходных таблицах

ClickPipes для Postgres может обнаруживать изменения схемы в исходных таблицах и в некоторых случаях автоматически применять их к целевым таблицам. Ниже описано, как обрабатывается каждая DDL-операция:

[//]: # "TODO Дополнить эту страницу описанием поведения при переименовании, изменениях типа данных и truncate, а также рекомендациями по обработке несовместимых изменений схемы."

| Тип изменения схемы                                                                            | Поведение                                                                                                                                                                                                                                                                                                                                   |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Добавление нового столбца (`ALTER TABLE ADD COLUMN ...`)                                       | Распространяется автоматически, как только в таблице происходит вставка/обновление/удаление. Новые столбцы будут заполняться для всех строк, реплицированных после изменения схемы                                                                                                                                                          |
| Добавление нового столбца со значением по умолчанию (`ALTER TABLE ADD COLUMN ... DEFAULT ...`) | Распространяется автоматически, как только в таблице происходит вставка/обновление/удаление. [Поддерживаемые значения по умолчанию](#default-values-for-added-columns) также добавляются в столбец ClickHouse, поэтому они применяются как к строкам, уже находящимся в ClickHouse, так и к строкам, реплицированным после изменения схемы. |
| Удаление существующего столбца (`ALTER TABLE DROP COLUMN ...`)                                 | Обнаруживается, но **не** распространяется. Для всех строк, реплицированных после изменения схемы, в удалённых столбцах будет значение `NULL`                                                                                                                                                                                               |

Обратите внимание, что добавление столбца распространяется по завершении синхронизации батча, что может произойти после достижения интервала синхронизации или размера батча выборки. Подробнее об управлении синхронизацией — [здесь](/docs/ru/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.

Распространяются следующие значения:

* Булевы и конечные числовые значения.
* Текстовые значения, включая `varchar`, `char`, перечисления, UUID, JSON/JSONB, `hstore`, сетевые адреса и даты.
* Временные метки. Временные метки с часовыми поясами нормализуются до UTC.

Значения по умолчанию не распространяются, если их невозможно безопасно преобразовать для ClickHouse, включая `NULL`, неконечные числовые значения, `bytea`, массивы, интервалы, значения времени суток и геометрические типы. Столбец всё равно добавляется, но ClickHouse использует обычное значение по умолчанию для его типа в частях, созданных до добавления столбца. Полное обновление таблицы требуется, если эти существующие строки должны содержать значение по умолчанию из источника.
