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

# Compatibilidad con la propagación de cambios en el esquema

> Página que describe los tipos de cambios de esquema que ClickPipes puede detectar en las tablas de origen

ClickPipes for Postgres puede detectar cambios de esquema en las tablas de origen y, en algunos casos, propagar automáticamente esos cambios a las tablas de destino. A continuación se documenta cómo se gestiona cada operación DDL:

[//]: # "TODO Ampliar esta página con el comportamiento para renombrado, cambios de tipo de datos y truncate, además de orientación sobre cómo manejar cambios de esquema incompatibles."

| Tipo de cambio de esquema                                                                       | Comportamiento                                                                                                                                                                                                                                                                                                                |
| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Añadir una nueva columna (`ALTER TABLE ADD COLUMN ...`)                                         | Se propaga automáticamente una vez que la tabla recibe un insert/update/delete. Las nuevas columnas se rellenarán en todas las filas replicadas después del cambio de esquema                                                                                                                                                 |
| Añadir una nueva columna con un valor predeterminado (`ALTER TABLE ADD COLUMN ... DEFAULT ...`) | Se propaga automáticamente una vez que la tabla recibe un insert/update/delete. Los [valores predeterminados admitidos](#default-values-for-added-columns) también se añaden a la columna de ClickHouse, por lo que se aplican a las filas que ya están en ClickHouse y a las filas replicadas después del cambio de esquema. |
| Eliminar una columna existente (`ALTER TABLE DROP COLUMN ...`)                                  | Se detecta, pero **no** se propaga. Las columnas eliminadas se rellenarán con `NULL` en todas las filas replicadas después del cambio de esquema                                                                                                                                                                              |

Ten en cuenta que la adición de columnas se propagará al final de la sincronización de un batch, lo que puede ocurrir una vez alcanzado el intervalo de sincronización o el tamaño del pull batch. Más información sobre cómo controlar las sincronizaciones [aquí](/es/integrations/clickpipes/postgres/controlling-sync)

<div id="default-values-for-added-columns">
  ## Valores predeterminados para columnas añadidas
</div>

Para una columna añadida, ClickPipes propaga un valor predeterminado solo cuando puede traducirlo de forma segura a ClickHouse. Cuando se propaga un valor predeterminado, ClickHouse lo usa al leer partes de datos anteriores a la nueva columna. Como resultado, las filas ya presentes en ClickHouse muestran el mismo valor que PostgreSQL usa para las filas anteriores a `ADD COLUMN`; no es necesario actualizar toda la tabla.

En PostgreSQL, ClickPipes lee el valor que PostgreSQL almacenó para las filas preexistentes, en lugar de la expresión predeterminada actual de la columna. Esto es importante cuando el valor predeterminado es una expresión: PostgreSQL evalúa una expresión no volátil, como `now()`, al añadir la columna, y ClickPipes propaga el valor resultante, no la expresión. Las operaciones posteriores `SET DEFAULT` o `DROP DEFAULT` no modifican el valor predeterminado usado para las filas existentes ni se propagan a ClickHouse.

Se propagan los siguientes valores:

* Valores booleanos y numéricos finitos.
* Valores de texto, incluidos `varchar`, `char`, enums, UUIDs, JSON/JSONB, `hstore`, direcciones de red y fechas.
* Marcas de tiempo. Las marcas de tiempo con zonas horarias se normalizan a UTC.

Los valores predeterminados se omiten cuando su representación no puede trasladarse de forma segura a ClickHouse, incluidos `NULL`, valores numéricos no finitos, `bytea`, arrays, intervalos, valores de hora del día y tipos geométricos. La columna se añade igualmente, pero ClickHouse usa el valor predeterminado normal de su tipo para las partes anteriores a la columna. Es necesario actualizar toda la tabla si esas filas existentes deben contener el valor predeterminado de origen.
