E.10. 版本 9.6.15 #
发布日期:. 2019-08-08
此版本包含自 9.6.14 以来的多种修复。有关 9.6 大版本中新特性的信息,参见第 E.25 节。
E.10.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期间的奇怪失败。当涉及的表是继承父表时,不要优化掉
GROUP BY列(David Rowley)通常,如果表的主键列包含在
GROUP BY中,去掉其他分组列是安全的,因为主键列足以使分组唯一。但如果查询还读取继承子表,这条规则就不成立;父表的唯一性不会延伸到子表。避免对某些带
GROUPING SETS的查询使用不必要的排序步骤(Andrew Gierth、Richard Guo)修复重建外键约束时多列外键的处理不当(Tom Lane)
如果键的所有列不都是同一类型,
ALTER TABLE可能对是否需要重新验证外键做出错误决定。看来该错误的方向总是保守的,即不必要地重新验证。避免升级元组锁时的虚假死锁错误(Oleksii Kliukin)
当两个或更多事务在等待事务 T1 释放元组级锁,而 T1 把它的锁升级到更高级别时,T1 结束后可能在等待的事务之间报告虚假死锁。
修复未能解决涉及多个并行工作者进程的死锁的问题(Rui Hai Jiang)
尚不清楚此 bug 是否可被非人工查询触达,但如果确实发生,本可解决的死锁中涉及的查询会阻塞直到被取消。
防止对以
infinity为端点的日期范围的错误规范化(Laurenz Albe)如果端点是无穷,试图通过递增或递减端点值把开区间转换为闭区间或反之都是不正确的;因此在这种情况下保持范围不变。
修复把非常大的
money值转换为numeric时小数位数的丢失(Tom Lane)修复 MIPS CPU 的自旋锁汇编代码,使其在 MIPS r6 上工作(YunQiang Su)
让 libpq 忽略连接服务文件中的回车(
\r)(Tom Lane、Michael Paquier)在某些边界情况下,包含 Windows 风格换行的服务文件可能被错误解析,导致连接失败。
在 psql 中,避免在
SET之后提供错误的 Tab 补全选项(Tom Lane)variable=修复 pg_dump 确保自定义操作符类以正确的顺序转储(Tom Lane)
如果用户定义的操作符类是某个用户定义范围类型的子类型操作符类,相关对象会以错误的顺序转储,产生无法恢复的转储。(操作符类依赖处理的这一底层失败也可能在其他情况下显现,但这是唯一已知的情况。)
修复
contrib/passwordcheck与check_password_hook的其他使用者共存的问题(Michael Paquier)修复
contrib/sepgsql测试在最近的 SELinux 版本下工作的问题(Mike Palmiotto)改进
src/test/recovery回归测试的稳定性(Michael Paquier)减少 pg_upgrade 测试脚本的 stderr 输出(Tom Lane)
修复 TAP 测试在 msys Perl 下、构建目录位于非根 msys 挂载点时的工作问题(Noah Misch)
支持用 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)
允许在顶层调用非 GNU make 时把 make 选项传递给 gmake(Thomas Munro)
避免 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,涉及巴西的夏令时法规变更,以及香港、意大利和巴勒斯坦的历史修正。