夏令时跳变让两种时间戳比较出错
Jacob Brazeal 报告 datetime_ops 运算符族的一处不一致:在夏令时向前拨的那一小时里,timestamp 之间比较 02:30 小于 03:00,但同一个值与等于 03:00 的 timestamptz 比较时却被判为更大,于是索引扫描、合并连接和分区裁剪都可能给出错误结果。Laurenz Albe 建议把跨类型运算符移出运算符族,Tom Lane 列了几条修法:降级比较、改运算符语义或改转换规则,尚未定论。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 20 条。
Jacob Brazeal 报告 datetime_ops 运算符族的一处不一致:在夏令时向前拨的那一小时里,timestamp 之间比较 02:30 小于 03:00,但同一个值与等于 03:00 的 timestamptz 比较时却被判为更大,于是索引扫描、合并连接和分区裁剪都可能给出错误结果。Laurenz Albe 建议把跨类型运算符移出运算符族,Tom Lane 列了几条修法:降级比较、改运算符语义或改转换规则,尚未定论。
备库的冲突解决存在缺陷:ResolveRecoveryConflictWithSnapshot 只调用一次 GetConflictingVirtualXIDs,随后逐个等待返回的虚拟事务号消失。可是在 ProcArrayLock 释放之后,别的后端还能从这些冲突事务里导入快照,产生新的冲突事务号,这个函数完全看不到。后果是备库可能删掉仍被导入快照使用的元组版本或索引项。提议的修法是循环调用直到结果为空。
Radim Marek 把 PostgreSQL 的 MVCC 摆上审判席:索引多的表更新一个未加索引的列,每行产生 7.1 条 WAL 记录,精简表只要 3.0;回滚掉的百万行更新让表涨到 178 MB、死元组占 47%;一个空闲事务持着快照就能让全库清理停摆。但换成别的引擎只是换人付账:Oracle 与 InnoDB 的 undo 让读者重建版本,SQL Server 把版本堆进 tempdb,LSM 用持续合并换掉 VACUUM。
WarehousePG 是从 Greenplum 衍生出来的大规模并行分析型数据库。Greenplum 停止开源后,EnterpriseDB 接手维护,继续按 Apache 许可发布,如今在 AWS 上提供。与按用量计费、账单容易失控的云分析平台不同,它按核心数定价,成本可预期,厂商称总体拥有成本最多可降 58%。这类口径需要用自己的负载核算,但对已经用 Greenplum 的团队来说,至少给出一条有人维护的延续路线。
Surya Poondla 的原型保留模式和 OID 命名,提供已删对象目录与恢复接口,先按 contrib 扩展做。
WAL 接收进程重启把已写位置回退时,被摘出堆的等待者可能再也收不到通知,改由等待方复查重注册。
争论集中在多表统计的锚表由谁指定、n 路连接是否先给实验补丁,以及无索引时回退顺序扫描采样。