丹尼尔·维里特:ICU 73 的排序版本问题

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

ICU-73存在一个错误,会在不升级到新的Unicode版本的情况下更改根排序顺序,给Postgres带来问题。当Postgres加载ICU排序时,它会将之前存储的版本与当前库报告的版本进行比较。如果它们不同,它会发出警告。不能忽略此警告,因为它可能导致数据损坏。最简单的解决方法是重建所有引用文本列的索引。ICU-74没有这个问题。升级到ICU-73时,应像Postgres发出警告一样处理。使用按字节排序存储内容的数据库不涉及这些升级困难。

🎯

关键要点

  • ICU-73存在一个错误,会在不升级到新的Unicode版本的情况下更改根排序顺序。
  • Postgres在加载ICU排序时会比较之前存储的版本与当前库报告的版本,如果不同会发出警告。
  • 不能忽略此警告,因为可能导致数据损坏,最简单的解决方法是重建所有引用文本列的索引。
  • ICU-74没有这个问题,升级到ICU-73时应像Postgres发出警告一样处理。
  • 使用按字节排序存储内容的数据库不涉及这些升级困难。
  • 在Fedora 38和Fedora 39的升级过程中,Postgres未发出版本不匹配的警告,导致索引查找失败。
  • 通过amcheck检查索引后发现其不可用,重建索引后问题解决。
  • ICU-74即将发布,不存在ICU-73的问题,Postgres用户应注意升级时的警告。
  • 使用字节排序的数据库不受这些升级问题的影响,建议在Postgres数据库中更频繁地选择字节排序。
➡️

继续阅读