TOAST 过程中丢锁可能让外键约束被绕过
更新一行大值时,缓冲区锁会在 TOAST 期间被放开,这个窗口足以让外键校验失效。Rui Zhao 复核初版补丁后指出还剩三个问题:TOAST 之后的重检条件与释放锁的条件不一致,孤立的外键行因此能存活;toaster 原样返回输入元组时,新元组的 xmax 错误保留了仅锁定标志;存在真实的键共享锁定者时,更新事务号会在多事务标记里被重复写入。他给出了修复补丁和基于注入点的隔离测试。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 25 条。
更新一行大值时,缓冲区锁会在 TOAST 期间被放开,这个窗口足以让外键校验失效。Rui Zhao 复核初版补丁后指出还剩三个问题:TOAST 之后的重检条件与释放锁的条件不一致,孤立的外键行因此能存活;toaster 原样返回输入元组时,新元组的 xmax 错误保留了仅锁定标志;存在真实的键共享锁定者时,更新事务号会在多事务标记里被重复写入。他给出了修复补丁和基于注入点的隔离测试。
去重聚合没有合并函数,工作进程无法把各自的去重结果拼起来,于是这一个关键字就让整条语句退回串行。Radim Marek 的改法是把去重下推成 GROUP BY,先在子查询里按列分组再数行数,这样可以走并行哈希。在 1000 万行的表上,串行去重聚合耗时 1211 毫秒并落盘 115 MB,改写后只要 360 毫秒且全在内存,快约 3.4 倍。要近似值可以用 postgresql-hll。
签名只能证明谁发布了某次构建,证明不了发布前的仓库状态没被改过。Aikido 报告攻击者接管维护者的 GitHub 账户,向多个包注入 preinstall 脚本,再由合法的 Actions 流水线发布,产物因此带着「正常」的出处。截至 8 月 4 日观察到至少 434 个包、1381 个版本。keyv 家族位于大量 Node.js 工具链的间接依赖路径上,命中受影响版本的开发机或 CI 应按凭据泄露处置。
文本规范化被搜索、日志和索引反复执行,微小操作会被放大。GitHub 的 Blackbird 索引超过 1.8 亿个仓库、480 TB 源码,它开源的 casefold crate 对 ASCII 做一次没有数据相关退出的扫描。作者在 Apple M4 上用 5.7 KB 缓冲区测得从朴素循环的约 3.1 GiB/s 提到完全矢量化后的 45 GiB/s 以上。文章指出只把条件写成无分支却保留数据相关退出,反而更慢。
Amit Langote 的 v2 补丁改为在约束缓存失效回调里连同元数据一起删除,避免悬空指针。
Michael Paquier 计划只在主干修复并补注释,暂不回补稳定分支以规避回归风险。
Melanie Plageman 确认修复已回补到 18,并分析 17 在非刻意构造的场景下不会触发。
ALTER SUBSCRIPTION 在加锁前就读了订阅信息,删除完成后它仍会重建 init 状态的行。
新增专用回调,每批元组以文本格式经 COPY FROM STDIN 流到远端,有行后触发器时不生效。
事件触发器触发时会段错误,命令标签不一致,改表空间还可能把索引留在旧表空间。
两种实现取舍不同:转成 JSON_QUERY 更贴标准,转成 -> 操作符更快但标量会被数组包裹。
8 月 10 日仓库转为归档、包与镜像标记弃用,8 月 31 日官方支持结束,源码仍可 fork。
涉及 DNS 预取、WebAuthn 关联来源校验与 WebTransport,报告方称 iCloud 私密转发同受影响。
前提是终端已被恶意软件控制,重点提醒依赖方必须自行校验 WebAuthn 的用户验证标志。