SQL 变更 – 常规:正确设置 VARCHAR 字符串列 byteLength(待定)¶
此行为变更修复了 VARCHAR 列的字节长度计算方式,使其能够始终按 UTF-8 编码(每个字符 4 字节)进行计算。在本次修复之前,字符长度大于 4,194,304 且不超过 16,777,216 的 VARCHAR 列可能会出现字节长度计算错误的情况。
- 变更前:
VARCHAR 列的字符长度 > 4,194,304 and <= 16,777,216, the
byteLength被错误地限制为 16,777,216 字节。这没有正确考虑 UTF-8 编码,每个字符最多需要 4 个字节。例如:
结果:
byteLength应为 40,000,000 (4 x 10,000,000),但错误地将上限设置为了 16,777,216。- 变更后:
VARCHAR 列的字符长度 > 4,194,304 and <= 16,777,216, the
byteLength正确计算为 4 x character_length,正确考虑了 UTF-8 编码中每个字符最多可占 4 个字节的情况。使用相同的示例:
此变更仅影响新的字符串列。字符串列的字符长度 > 16,777,216 are not affected because byteLength is already correctly set for those cases. The byteLength 上限仍为 134,217,728。
参考:2286