PostgreSQL 资讯
保留原始来源与发布日期的新闻、博客和活动。
Thunderbird 公开桌面日历重设计的过程
Racket 9.3 发布,可生成 Markdown 文档
一篇 RISC-V 设计批评文章引发密集技术讨论
GCC 16 保证不捕获的嵌套函数不需要 trampoline
BriskDB 作为早期数据库项目出现在 HN
Keeta 共识协议的形式化建模与验证论文
行模式识别补丁收到 nodeWindowAgg 可读性建议
tsqueryout() 改用 StringInfo 替代自制缓冲区
Zsh 历史记录神秘消失的原因被定位到重写路径
作者改动 Zsh 让异常路径提早崩溃,再靠 core dump 收敛根因,问题出在历史文件的重写流程上。
Debian 就 LLM 在发行版中的使用启动全体投票
九个选项从社会契约禁令到有条件接受,8 月 28 日截止,结果会影响补丁溯源与贡献审查方式。
备机同步槽将纳入 XID 年龄失效检查
同步槽的豁免会从 CanInvalidateXidAgedSlot() 移除,idle_replication_slot_timeout 的豁免保留。
执行器批处理方案收到来自存储引擎侧的异议
Mats Kindahl 反对强制转成原生列存格式,主张把过滤和聚合下推进 TTS,由存储引擎按自己的格式执行。
GSoC 的 B-tree 叶页合并补丁修掉插入丢失问题
新插入的元组可能落在已标记 BTP_MERGED_AWAY 的页面上导致不可见,新补丁已修复,WAL 支持还没做。
JIT 的两个子开关只应在排查问题时使用
两个参数都默认开启,前者把 WHERE 子句、目标列表和聚合状态转换编译成机器码,后者生成专用的元组解构代码。Christophe Pettus 提醒两者并不对称:解构代码只在编译消费它的表达式时才产生,关掉 jit_expressions 整个 JIT 块就消失了。它们归在开发者选项下,只适合排查时用来判断是不是表达式编译器出错;要控制 JIT 开销应该调代价阈值或整体关闭。
pgsonify 把数据库健康状况变成大象叫声
Dinesh Kumar 用 Go 写了 MIT 许可的 pgsonify,把数据库健康状况变成实时音效。它默认每 5 秒采样 pg_stat_activity、pg_locks、pg_stat_database 和检查点视图,不需要扩展或超级用户权限,据此算出 0 到 1 的压力分,驱动背景轰鸣的音高与节奏,分 CALM、ALERT、PANIC 三档。作者定位于开发、测试和教学,不替代生产监控。
PL/Perl 处理 tied 对象的缺陷得到系统性修复
Tom Lane 修掉 PL/Perl 的两个缺陷:hstore_plperl 的空指针解引用,以及处理 Perl tied 对象时的无限循环,两者都不算安全漏洞,未进上一轮安全补丁。修复后取到的却是 SQL NULL,Andrey Rachitskiy 解释 tied hash 不把值放在 HeVAL() 里,必须经 hv_iterval() 加 SvGETMAGIC() 才触发 FETCH,随后提交了覆盖所有转换路径的补丁和回归测试。
共享缓冲区哈希表改用两步删除,按 Buffer 删快三成
Heikki Linnakangas 指出新的 BufTableDelete() 让 InvalidateBuffer() 持缓冲区头部自旋锁的时间过长。Alexandre Felipe 认为问题不在持锁时长,而在自旋锁下操作的安全性难以论证,提出两步删除:取锁前完成查找,持锁期间只断开链表。他在 Dhruv Aron 的补丁上实现了这一方案,并加了按 Buffer 删除的变体,比按 BufferTag 删除快约 30%。
gistkillitems 重扫描时可能标错死元组
Peter Geoghegan 指出 gistkillitems() 在 rescan 时可能把 LP_DEAD 标记打到错误的元组上,问题很可能由提交 9c9ddf109 引入,只影响 master,但各版本在 rescan 时都没有正确重置状态。Michael Paquier 和 Andrey Borodin 确认,即便开着 wal_consistency_checking,buildfarm 也没能抓到,因为现有测试没进主回归套件。