有人用 Palle Girgensohn 的 ICU 补丁在 Mac OS X 上构建过 Postgresql 吗?如果是这样,您遇到了什么问题,整理行为的变化是否令人满意?
我正在使用 Postgresql 9.2 和 Mac OS 10.7 和 10.8。
有人用 Palle Girgensohn 的 ICU 补丁在 Mac OS X 上构建过 Postgresql 吗?如果是这样,您遇到了什么问题,整理行为的变化是否令人满意?
我正在使用 Postgresql 9.2 和 Mac OS 10.7 和 10.8。
谷歌认为有问题的补丁是从 2005 年开始的。它干净地应用于 PostgreSQL 9.2 的可能性几乎为零。除非有人将工作向前移植到新版本,否则可能需要做很多工作来更新它。
您还没有定义您对当前排序行为的不满意之处 - 尽管坦率地说,鉴于 Mac OS X 的 libc,我想答案是“很多”。我认为您目前没有太多选择,除非您愿意努力向前移植 ICU 补丁。
我真的很想看到 PostgreSQL 能够支持 ICU 排序,如果我能找到时间做这种没人愿意资助的工作,它就在我的工作清单上。然而,实施它并不是说服团队接受改变,并缓解或解决任何性能问题的挑战。
就我个人而言,我只是在 Linux 上运行它,其中更明智的整理和编码支持将有很大帮助。
是的,这是可能的——我刚刚完成了基于 MacPorts 安装的过程(当前 PostgreSQL 版本为 9.3.5)。我使用了Palle 补丁页面中的 9.2.8补丁文件,参考 9.3.5 源代码库稍作修改并使用 autoconf 的 2.63 版本而不是 2.69,然后使用此 MacPorts 票证Portfile
中的修改来告诉 MacPorts 如何应用补丁文件。
我的初步测试结果大部分都很好,例如
postgres=# show server_encoding;
client_encoding
-----------------
UTF8
(1 row)
postgres=# select * from comments order by comment;
comment
---------
gros
gross
groß
grot
(4 rows)
postgres=# select * from comments order by comment collate "C";
comment
---------
gros
gross
grot
groß
(4 rows)
postgres=# select upper('ß');
upper
-------
SS
(1 row)
但请注意...
postgres=# select upper('ß') collate "C";
upper
-------
SS
(1 row)
(我本来期望只是'ß'。)
目前,补丁可用于 PostgreSQL 至 9.1 版本。我还没有测试过它,但我认为补丁本身工作得很好,因为它很小,而且,AFAIK,它默认在 FreeBSD 下使用。由于 Mac OS X 与 GNU autoconf 兼容,因此补丁应该可以直接使用。
对 C 有一定的了解,可以尝试自己升级到 PostgreSQL 9.2 或 9.3。此外,1C 提供了将 PostgreSQL 与他们的 1C:Enterprise 平台一起使用的补丁。这些补丁还提供了 ICU 库,PostgreSQL 有 9.1 和 9.2 两种版本。您可以查看并获得有关升级的一些想法。