请注意,新增列会在某个批次同步结束时才传播,这可能发生在达到同步时间间隔或拉取批次大小之后。有关如何控制同步的更多信息,请参见此处
新增列的默认值
ADD COLUMN 的行使用的相同值;无需完整刷新表。
对于 PostgreSQL,ClickPipes 读取的是 PostgreSQL 为已有行存储的值,而不是该列当前的默认表达式。当默认值为表达式时,这一点尤为重要:例如,now() 等非易变表达式会在添加列时由 PostgreSQL 求值,ClickPipes 传播的是求值结果,而非表达式本身。后续的 SET DEFAULT 或 DROP DEFAULT 操作不会改变现有行使用的默认值,也不会传播到 ClickHouse。
以下值会被传播:
- 布尔值和有限数值。
- 文本值,包括
varchar、char、枚举、UUID、JSON/JSONB、hstore、网络地址和日期。 - 时间戳。带时区的时间戳会归一化为 UTC。
NULL、非有限数值、bytea、数组、时间间隔、时刻值和几何类型。该列仍会被添加,但对于早于该列创建的数据分区片段,ClickHouse 会使用该类型的常规默认值。如果这些现有行必须包含源默认值,则需要完整刷新表。