Restrict Apache Iceberg™ binary columns to maximum size (Pending)¶
为 Apache Iceberg™ 表中的列指定二进制数据类型时,该列将始终映射到 Iceberg 二进制数据类型。
- 变更前:
您可以为 Iceberg 表中的新列指定
binary(L)数据类型,该类型与最大长度 L 相关联。binary(L)数据类型映射到 Iceberg:code:fixed(L)数据类型,而不是 Iceberg 二进制数据类型。此外,您可以为新结构化类型列的键和元素指定 binary(L) 数据类型,该类型也会映射到 Iceberg:code:fixed(L)数据类型。对于 CTAS 语句,源表中的binary(L)列会在新表中以binary(L)列的形式创建。- 变更后:
在 Iceberg 表中,您必须将
binary data类型指定为二进制或binary(67108864)。当您创建新列或定义结构化类型列的键或元素时,此要求适用。这两种类型都会映射到 Iceberg 二进制数据类型。对于 CTAS 语句,源表中的binary(L)列会在新表中以binary(67108864)列的形式创建。此变更仅影响新表和现有表中的新列。
引入此行为变更是为了使 Iceberg 表上的 Snowflake 二进制列与 Apache Iceberg™ 表规范中的 Iceberg 二进制类型保持一致,该类型没有最大长度限制。此变更消除了与 Iceberg 规范冲突的模糊 binary(L) 定义,并避免了与外部引擎的互操作性问题。例如,在进行此变更之前,您可以添加一个二进制数据类型具有关联的最大长度的新列,例如 binary(10)。然后,外部引擎可能会在此列中插入超过定义的最大长度的值。
参考:2244