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

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

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

ClickPipes для MySQL может обнаруживать изменения схемы в исходных таблицах и в некоторых случаях автоматически применять эти изменения к целевым таблицам. Ниже описано, как обрабатывается каждая 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`                                                                                                                                  |

<Note>
  Добавление столбцов при создании снимка в настоящее время не поддерживается. Рекомендуемый обходной путь — выполнять снимки до или после запланированных изменений схемы либо, если ClickPipe уже завершается с ошибкой, вручную добавить в целевую таблицу столбец подходящего типа.
</Note>

<div id="default-values-for-added-columns">
  ## Значения по умолчанию для добавленных столбцов
</div>

Для добавленного столбца ClickPipes передаёт значение по умолчанию только в том случае, если может безопасно преобразовать его в формат ClickHouse. Если значение по умолчанию передано, ClickHouse использует его при чтении частей данных, созданных до добавления нового столбца. В результате строки, уже имеющиеся в ClickHouse, получают исходное значение по умолчанию без полного обновления таблицы.

ClickPipes передаёт целочисленные, десятичные и литералы с плавающей точкой; булевы значения; простые строковые значения и значения дат; а также значения enum или set, если сервер MySQL предоставляет полные метаданные строк binlog. Строковые литералы преобразуются с использованием совместимого с ClickHouse заключения в кавычки.

ClickPipes намеренно не передаёт значения по умолчанию, которые не являются переносимыми литералами, включая `NULL`, битовые литералы, вызовы функций, такие как `CURRENT_TIMESTAMP`, `NOW()` или `UUID()`, а также строковые значения, содержащие обратную косую черту или управляющие символы. Столбец всё равно добавляется, но ClickHouse использует стандартное значение по умолчанию для его типа в частях, созданных до добавления столбца. Если эти существующие строки должны содержать исходное значение по умолчанию, необходимо полное обновление таблицы.

ClickPipes передаёт значения по умолчанию только в рамках `ALTER TABLE ADD COLUMN`. Последующие операции, изменяющие или удаляющие значение по умолчанию для столбца, не передаются в ClickHouse.

<div id="mysql-5-limitations">
  ### Ограничения MySQL 5.x
</div>

Версии MySQL ниже [8.0.1](https://dev.mysql.com/blog-archive/more-metadata-is-written-into-binary-log/) не включают полные метаданные столбцов в binlog (`binlog_row_metadata=FULL`), поэтому ClickPipes отслеживает столбцы по их порядковым позициям. Это означает следующее:

* **Добавление столбца в конец** (`ALTER TABLE ADD COLUMN ...`) поддерживается.
* **Любая DDL-операция, меняющая позиции столбцов**, приведёт к ошибке в пайпе, поскольку порядковые позиции больше нельзя надёжно сопоставить. Сюда относятся:
  * `ALTER TABLE DROP COLUMN ...`
  * `ALTER TABLE ADD COLUMN ... AFTER ...` / `FIRST`
  * `ALTER TABLE MODIFY COLUMN ... AFTER ...` / `FIRST`
  * `ALTER TABLE CHANGE COLUMN ... AFTER ...` / `FIRST`

Если вы столкнулись с этой ошибкой, потребуется повторно синхронизировать пайп.
