E.3. 版本 9.4.24 #
发布日期:. 2019-08-08
本发行版包含对 9.4.23 的多项修复。有关 9.4 主版本中新功能的信息,请参见第 E.27 节。
PostgreSQL社区将于 2020 年 2 月停止发布 9.4.X 系列的更新。建议用户尽快更新到较新的版本分支。
E.3.2. 变更
要求使用函数式转换语法转换到临时类型时进行模式限定(Noah Misch)
我们长期以来一直要求临时函数的调用显式指定临时模式,即
pg_temp.。现在把这一要求同样应用于使用函数表示法转换到临时类型,例如func_name(args)pg_temp.。否则有可能截获使用临时对象的函数调用,从而以与我们在 CVE-2007-2138 中封堵的方式大致相同的途径实现权限提升。(CVE-2019-10208)type_name(arg)修复在一条命令中更改多列类型时
ALTER TABLE ... ALTER COLUMN TYPE的失败(Tom Lane)这修复了最近几个小版本中引入的回归:使用被更改列的索引未被正确处理,导致
ALTER TABLE期间的奇怪失败。修复重建外键约束时多列外键的处理不当(Tom Lane)
如果键的所有列不都是同一类型,
ALTER TABLE可能对是否需要重新验证外键做出错误决定。看来该错误的方向总是保守的,即不必要地重新验证。防止对以
infinity为端点的日期范围的错误规范化(Laurenz Albe)如果端点是无穷,试图通过递增或递减端点值把开区间转换为闭区间或反之都是不正确的;因此在这种情况下保持范围不变。
修复把非常大的
money值转换为numeric时小数位数的丢失(Tom Lane)修复 MIPS CPU 的自旋锁汇编代码,使其在 MIPS r6 上工作(YunQiang Su)
让 libpq 忽略连接服务文件中的回车(
\r)(Tom Lane、Michael Paquier)在某些边界情况下,包含 Windows 风格换行的服务文件可能被错误解析,导致连接失败。
修复 pg_dump 确保自定义操作符类以正确的顺序转储(Tom Lane)
如果用户定义的操作符类是某个用户定义范围类型的子类型操作符类,相关对象会以错误的顺序转储,产生无法恢复的转储。(操作符类依赖处理的这一底层失败也可能在其他情况下显现,但这是唯一已知的情况。)
修复
contrib/passwordcheck与check_password_hook的其他使用者共存的问题(Michael Paquier)修复
contrib/sepgsql测试在最近的 SELinux 版本下工作的问题(Mike Palmiotto)减少 pg_upgrade 测试脚本的 stderr 输出(Tom Lane)
支持用 Microsoft Visual Studio 2019 构建 Postgres(Haribabu Kommi)
在 Visual Studio 构建中,尊重
WindowsSDKVersion环境变量(如果已设置)(Peifeng Qiu)这修复了某些配置下的构建失败。
在 Visual Studio 构建中支持 OpenSSL 1.1.0 及更新版本(Juan José Santamaría Flecha、Michael Paquier)
避免 initdb 期间选择
localtime或posixrules作为TimeZone(Tom Lane)某些情况下 initdb 会选择这些人工时区名之一而不是“真实”时区名。让任何其他与 C 库时区行为相匹配的时区都优先于这两个。
调整
pg_timezone_names视图,使其仅当Factory时区有短缩写时才显示它(Tom Lane)历史上,IANA 为这个人工时区设置的“缩写”形如
Local time zone must be set--see zic manual page。现代版本的 tzdb 数据库显示-00,但某些平台修改了数据以显示历史措辞之一或另一个。仅当该时区使用现代缩写时才显示它。把我们的时区库副本与 IANA tzcode 版本 2019b 同步(Tom Lane)
这增加了对 zic 新的
-b slim选项的支持,以缩小安装的时区文件。我们目前没有使用它,但将来可能启用。更新时区数据文件到 tzdata 版本 2019b,涉及巴西的夏令时法规变更,以及香港、意大利和巴勒斯坦的历史修正。