选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

PostgreSQL 博览 RSS 订阅

当天收录 25 条。

TOAST 过程中丢锁可能让外键约束被绕过

Rui ZhaoPostgreSQL hackers

更新一行大值时,缓冲区锁会在 TOAST 期间被放开,这个窗口足以让外键校验失效。Rui Zhao 复核初版补丁后指出还剩三个问题:TOAST 之后的重检条件与释放锁的条件不一致,孤立的外键行因此能存活;toaster 原样返回输入元组时,新元组的 xmax 错误保留了仅锁定标志;存在真实的键共享锁定者时,更新事务号会在多事务标记里被重复写入。他给出了修复补丁和基于注入点的隔离测试。

count(DISTINCT) 会关掉整条语句的并行

Radim Marekboringsql.com

去重聚合没有合并函数,工作进程无法把各自的去重结果拼起来,于是这一个关键字就让整条语句退回串行。Radim Marek 的改法是把去重下推成 GROUP BY,先在子查询里按列分组再数行数,这样可以走并行哈希。在 1000 万行的表上,串行去重聚合耗时 1211 毫秒并落盘 115 MB,改写后只要 360 毫秒且全在内存,快约 3.4 倍。要近似值可以用 postgresql-hll。

keyv 等 npm 包家族被入侵,波及数百个包

AikidoAikido 安全博客

签名只能证明谁发布了某次构建,证明不了发布前的仓库状态没被改过。Aikido 报告攻击者接管维护者的 GitHub 账户,向多个包注入 preinstall 脚本,再由合法的 Actions 流水线发布,产物因此带着「正常」的出处。截至 8 月 4 日观察到至少 434 个包、1381 个版本。keyv 家族位于大量 Node.js 工具链的间接依赖路径上,命中受影响版本的开发机或 CI 应按凭据泄露处置。

GitHub 讲清了大小写折叠为何要先去掉提前退出

GitHubGitHub 工程博客

文本规范化被搜索、日志和索引反复执行,微小操作会被放大。GitHub 的 Blackbird 索引超过 1.8 亿个仓库、480 TB 源码,它开源的 casefold crate 对 ASCII 做一次没有数据相关退出的扫描。作者在 Apple M4 上用 5.7 KB 缓冲区测得从朴素循环的约 3.1 GiB/s 提到完全矢量化后的 45 GiB/s 以上。文章指出只把条件写成无分支却保留数据相关退出,反而更慢。