PostgreSQL 19 Beta 2 发布
PostgreSQL 全球开发组发布了 PostgreSQL 19 的第二个 Beta。相比 Beta 1,这一版修掉了 vacuumdb --analyze-in-stages 在分区表上的回归、虚拟生成列的元组解构优化、FATAL 退出时 REPACK worker 未清理、逻辑解码激活时的竞态,以及 autovacuum 多事务年龄评分可能趋于无穷等问题。正式版预计 9 到 10 月发布。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
每日精选 PostgreSQL、数据库与云计算资讯
PostgreSQL 全球开发组发布了 PostgreSQL 19 的第二个 Beta。相比 Beta 1,这一版修掉了 vacuumdb --analyze-in-stages 在分区表上的回归、虚拟生成列的元组解构优化、FATAL 退出时 REPACK worker 未清理、逻辑解码激活时的竞态,以及 autovacuum 多事务年龄评分可能趋于无穷等问题。正式版预计 9 到 10 月发布。
CYBERTEC 发布 pg_hardstorage v1.0,Apache 2.0 授权,没有企业版分层,也不要求签 CLA。它通过原生复制协议流式接收 WAL,不需要配置 archive_command,可以直接用于 RDS、Cloud SQL、Aiven、Supabase 这类托管服务。特性包括 Patroni 感知的故障切换、内容寻址去重、五种 KMS 与存储后端、按租户的加密擦除和哈希链式审计日志。
目前 wal_compression = 'on' 固定映射到 pglz,那是 PostgreSQL 15 之前唯一支持的算法。提案要把 'on' 改成按 zstd、lz4、pglz 的优先级自动选择,默认值仍保持 'off'。Tomas Vondra、Andres Freund 和 Michael Paquier 都支持,Fujii Masao 反对。WAL 压缩数据不跨 pg_upgrade 保留,兼容风险比 TOAST 压缩低。
Henson Choi 用 Oracle 23ai 和 Trino 471 作参照,对约 1000 条 PATTERN 语句做了系统交叉验证。匹配器的优先级逻辑里查出三个正确性缺陷:循环守卫误判重复变量状态、空迭代停止规则处理不当、固定计数分组的快进顺序错误。上下文吸收优化里还发现两个错误结果和一处可能的规划期死循环。PostgreSQL 相比 Oracle 在解析阶段拒绝的 11 条查询都有记录在案的设计依据。
PostgreSQL 19 Beta 1 有个由提交 999dec9ec6a 引入的崩溃:并行 worker 退出时 pgstat_bktype_io_stats_valid() 断言失败。复现条件是 track_io_timing=on,当 WaitReadBuffers() 等待别的 backend 发起的外部 IO 时,会以 cnt=0 调用计时函数,写入非零读取时间却不增加读取计数。目前的主要候选方案是跳过这段外部等待时间。
Masahiko Sawada 审查在线修改 wal_level 的提交时发现两个问题。一是崩溃恢复期间的断言失败:实例在 wal_level='replica' 下建了逻辑槽,checkpointer 还没停用逻辑解码就崩溃,随后以 'minimal' 重启即触发。修复去掉了恢复结束时针对 minimal 的特殊处理,改为统一重算状态。二是 pg_controldata 没显示检查点记录里的逻辑解码状态。两个补丁都已提交。
Ilia Evdokimov 在测试 join MCV 统计的 v8 补丁时发现严重性能问题:给一张 50 万行和一张 2 万行的表建立 join MCV 统计之后,ANALYZE 的执行时间从约 36 秒涨到九分钟以上。性能剖析显示瓶颈在索引扫描期间取堆元组的阶段,绝大部分时间花在为每条索引项申请和释放缓冲区锁上,真正的 btree 遍历只占极小比例。他暂时没有明显的优化方案。
对无法重新压缩已有数据的系统来说,提升解压速度比换算法更现实。
改成 Assert 之后,非断言构建里传错缓冲区会静默改掉错误的 VM 页。
面向 DBA,按步骤覆盖认证强化、权限管理、网络访问控制与审计日志。
新函数与视图暴露 pg_hosts.conf 的解析规则,面向 PostgreSQL 20 开发版。
此前 --analyze-only 与 --analyze-in-stages 会把子分区重复分析一遍。
ESU 只提供安全更新,第一到第三年分别延续到 2027、2028 和 2029 年。
首方代码是 Apache-2.0,但仓库只是内部 monorepo 的定期同步,不收外部贡献。
预览功能,结果不阻塞合并,需要 CodeQL 默认配置并会消耗 AI credits。
576.0.0 起要保留旧行为得显式加 --do-not-decompress,同步脚本需回归。
ClickHouse 称其托管 PostgreSQL 在启动前预留约 25% 内存的 huge pages,校验池大小并要求 huge_pages = on,不足就让实例开通失败。文章以 100 GB 缓冲池、100 个连接为例,估算 4 KB 页的页表可能吃掉约 20 GB,而 2 MB 的大页能显著收窄这笔开销。shared_buffers 是每个 backend 都要映射的大共享内存段,规模上去后页表与 TLB 成本会变成浪费。
Denis Smirnov 发布了堆层批处理实验的 v2 双补丁,定位是 Amit 的 v8 系列的替代思路。第一个补丁复用 heapgettup_pagemode() 已收集的可见偏移量,避免在同一堆页内重复调用。第二个补丁按同一页面的批次对最多 64 个元组求顺序扫描的前缀条件,用 64 位掩码记录通过的行,直接调用现有标量算子,不引入 SIMD 或新的批处理接口。
Jingtang Zhang 报告关系扩展后调用 FreeSpaceMapVacuumRange() 时传入的排他终点不对,修复只改一行,把 last_block 换成 last_block + 1,第二个补丁补了一个跨 FSM 叶页边界的回归测试。Melanie Plageman 确认这是真实缺陷,但触发条件有限,只有新页正好是新 FSM 页的第一页时才碰得上。问题自 PostgreSQL 16 引入,需要回移,她当天完成了提交。
这个补丁让 postgres_fdw 绕开游标、改用流式抓取,从而允许并行计划。Yilin Zhang 报告了一个崩溃:排空过程中取消后端时 active_scan 没有清掉,留下悬垂指针,下次执行就崩溃。Rafia Sabih 无法复现该用例,同时在 pgfdw_abort_cleanup 里补上未完成排空时重置 active_scan,重构了写入 tuplestore 的函数,并在执行 DML 之前补齐排空调用。
Neon 把三项后端服务推到公开测试:与数据库分支机制集成的对象存储、与数据库同置的长时运行计算函数,以及通过统一 API 接入七家模型提供方的 AI Gateway,由 Databricks 提供支撑,费用合并成一张账单。这些组件可以在单个 neon.ts 文件里声明,用 neon deploy 部署,面向自动化或 agent 驱动的全栈交付,与 Neon 的 PostgreSQL 数据库协同运行。
AWS 文档列明 Microsoft 对 SQL Server 2016 的关键补丁支持在 2026 年 7 月 14 日结束,RDS for SQL Server 随之停止支持这个主版本,未升级的实例会被安排升到 SQL Server 2019 可用的最新小版本。AWS 建议用户自己挑时间先行升级,以免碰上自动变更。真正的风险不在数据库内核,而是没有在生产副本上验证过的应用兼容性和回退路径。
Mindgard 称 Cursor 在 Windows 打开项目后会从工作区等位置寻找 Git,如果仓库根目录放了恶意的 git.exe,工具会在没有点击、提示和批准的情况下执行它。报告称已在 Cursor 3.2.16 上验证,并叙述多次披露未获修复;这些是研究方的陈述,还不是 Cursor 的公开确认。在供应商给出说明之前,不可信仓库只应放进沙箱或一次性虚拟机里打开。
GitHub 宣布 Dependabot 默认等 registry 上的新版本存在至少三天,再创建版本更新的 PR,不需要额外配置。这个默认只作用于版本更新,安全更新仍然立即创建,维护者可以用 cooldown 配置改窗口或退出,GHES 3.23 会带上同一默认。恶意发布和账户接管的信号常在发布后不久才出现,延迟能压低发布即合并的风险,但替代不了锁文件、来源准入和人工审核。
剩余的验证性补丁等 buildfarm 确认,0002 待 WAL 日志支持补齐后再提交。
流复制收到的段不会被归档,原测试因此带上时序依赖,在 Windows 上失败。
并发 detach 时 get_partition_ancestors() 可能返回 NIL,触发断言失败。
buildfarm 出现过同一原因的失败,NULL 权限值改按序列缺失来处理。
补上 CREATE POLICY 文档表格的独立行,以及 SELECT 策略的回归测试。
弃用说明会回移到 v14 至 v19 各分支,引导用户改用原生外键。
v3 补丁仍可干净应用,但至今没有收到任何审查反馈。
缺少 LLVM bitcode 支持是软件包构建改用 Meson 的主要阻碍。
覆盖会话管理、对象检查、输出格式、计时以及用 .psqlrc 持久化配置。
支持快照隔离与 Gremlin,但示例构件仍是 0.5.0-SNAPSHOT,接口未稳定。
使用未注册传输的 socket 应用可能停止工作,RDP 新增 SHA-2 指纹支持。
记录里只剩 encrypted_content,content 为空,该 issue 仍处于开放状态。
Yandex 发布多线程连接池 Odyssey 的 1.5.1。新增简单共享池、事务池的 pool_pin_on_listen 选项、cpu_affinity、用 aws-lc 构建、SSLKEYLOGFILE 支持,以及 avg_wait_time 和 total_wait_time 两个排队指标。扩展协议支持经过重构,修掉多处协议违规并提升流水线性能,取消请求的竞态也一并修复。
ClickHouse 发布 pg_re2,提供基于 RE2 的函数、算子和索引支持,厂商称自有基准里函数快 1.8 到 8.6 倍,B-tree 与 GIN 检索快 1.1 到 1.8 倍。另一个动机是让正则语义与 pg_clickhouse 的推送路径保持一致。RE2 以有限自动机为基础,运行时间上界更可控,但这个保证来自受限的特性集,不是无成本替换,切换前应以原生结果为基准做差分测试。
Hans-Jürgen Schönig 解释 PostgreSQL 19 的 SQL/PGQ 本质上是解析层的改写:图查询被转成针对底层表的普通 join,交给标准优化器规划,所以性能可预期,现有索引直接生效,EXPLAIN 输出的也是普通连接树。索引策略与外键列一致,反向遍历要在目标列上单独建索引。当前不支持可变长度路径、ANY SHORTEST 和路径变量绑定,这些仍要用 WITH RECURSIVE。
Greg Burd 提交了三个补丁:把 clock sweep 批处理以减少 nextVictimBuffer 上的原子竞争;用 HOT 和 COOL 两态的冷却阶段驱逐器取代按 usage_count 的扫描;移除 BufferAccessStrategy。AWS m6id.metal 上的基准显示批量 UPDATE 慢约 5%,批量 INSERT 慢约 8 到 10%,VACUUM 快约 19%。回退主要来自失去 ring 策略的写回延迟。
Greg Burd 提交第四版补丁,把 port/atomics.h 重新实现在 C11 <stdatomic.h> 之上,由 -Duse_stdatomic 选项启用,默认关闭。关键发现是读操作必须用 seq_cst 而不是 relaxed,因为传统 volatile 读隐含的编译器排序需要等价保证,这由 RISC-V 上并行哈希连接的失败测试验证。写操作用 relaxed,避开 aarch64 上约 5 倍的争用开销。
Robert Haas 提交文档补丁,警告授予 TRIGGER 和 REFERENCES 权限的安全风险:这两种权限都可能让被授权方以表所有者的身份执行自己选择的代码,措辞参考了现有的 pg_execute_server_program 说明。Nathan Bossart 建议做成 note 或 warning 标记。Greg Sabino Mullane 等人主张干脆移除这两个权限,Tom Lane 指出它们是 SQL 规范要求的。
David Steele 的补丁给 ControlFileData 加一个 backupLabelRequired 标志,确保 pg_basebackup 生成的基础备份在缺少 backup_label 文件时无法恢复。补丁此前因长期无人跟进被撤回,后来重新提交了简化版。Solai 在 PostgreSQL 20devel 上测过:恢复后缺 backup_label 时集群拒绝启动并报错。标志在写备份控制文件时设置,恢复期间检查。
Precursor 在页面注入客户端脚本,持续产生信号并由 Cloudflare 更新会话状态,可以选择尽量少打扰用户,或者先用轻量 challenge 建立完整验证。官方文档说明它取代 JavaScript Detections 的单次执行,但不替代 challenge 页面;启用之后可能让已有的 clearance 失效,或在会话中再次要求验证。稳妥做法是先在低风险 zone 分流,比较分数分布、转化率和误封申诉。
一份抓包报告称,在特定版本和配置下观察到 Grok Build 独立上传 Git bundle,其中包含 agent 被要求不要读取的文件和提交历史。报告本身明确说没有证明每个用户都受影响、xAI 用这些数据训练或所有文件都被收集,xAI 的产品页把该工具标为早期测试版。稳妥做法是暂停在敏感仓库使用该客户端,保留日志,在隔离网络复测出网行为并轮换凭据。
难点是 PostgreSQL 没有通用的行过滤节点,ExecResult 不支持逐行循环过滤。
Andrey Borodin 指出恢复侧存在对称缺陷,回退路径每页都会重开 segment。
0005 修掉 NESTED PATH 约 3.7 倍的性能回退,0006 把冗余错误改成断言。
heap_update() 在两个位处于同一 VM 页时注册了错误的缓冲区标签。
后处理方案不影响计划结构,却算不进代价,EXPLAIN 的行数也会对不上。
Tristan Partin 的补丁同时覆盖递归下降解析器与增量解析器。
Robert Haas 认为超出 work_mem 极罕见,写进文档比直接报错更合适。
这是用 pg_timetable 替代 pgAgent 系列的第二篇。
公开条目没有给出容量、复制与灾备的工程细节,只能说明部署确实变了。
缓存断点可以复用固定系统指令与工具定义,各档模型的可用区域并不相同。
工作树与会话状态分开持久化,出网走虚拟机之外的 DNS 感知白名单。
公告列出七座燃气机组、三套电网级电池和核电增容等供电安排。
Dean Rasheed 发布全局临时表补丁集的 v9,回应 Japin Li 和 Zsolt Parragi 的审查意见。这一版对 pg_class 里非临时关系改用 reloncommit = 'n' 而不是 NULL,避免空值处理的复杂;修好 pg_dump 丢掉 ON COMMIT 子句和已中止事务错误固定 datfrozenxid 两个问题,并给子事务清理函数补上提前返回。此外还新增了 pg_dump 测试用例。
Matheus Alcantara 提交了把 Bloom filter 等运行时过滤器下推进规划器的 v5 PoC。候选过滤器不再限制为最优的三个,改按选择率阈值挑选;路径组合用广度优先逐步扩展,上限由新 GUC 控制,每种组合直接传给对应的真实路径构造函数而不是克隆已有路径。Tomas Vondra 调研 DuckDB、Spark 和 Trino 后发现它们都放在规划后处理阶段。自底向上规划估不准选择率仍是未解的核心问题。
Henson Choi 评审了行模式识别导航偏移量合并补丁的 v51。0001 修好 FIRST(expr, n>0) 丢失前向范围的回归,但他认为只做合并不够,会把原本 fail-closed 的错误变成静默的错误结果。评审列出 11 个缺陷,归为五个根因:偏移量在执行器初始化时冻结,感知不到 PARAM_EXEC 变化;volatile 检查跑在常量折叠之前;越界导航的语义不合标准。
PostgreSQL 17.7 的备库上出现 walsummarizer 反复记录 invalid record length ... got 0 且停滞不前的缺陷。Thom Brown 提交了分析和两个补丁:0001 把 read_upto 截断到时间线切换点,0002 把全零 WAL 当作 WAL 末尾而不是硬错误。Robert Haas 认为按 SummarizeWAL 的约定调用方本应已截断,0001 是多余的。全零文件的来源仍未查明。
Alena Rybakina 提交了 rebase 后的 vacuum 统计补丁系列 v40,每个提交对应一类统计。Bharath Rupireddy 审查后提出实质质疑:补丁新增的大部分统计项,包括堆和元组指标、WAL 用量、缓冲区用量、计时信息和可见性映射变更,在现有 vacuum 的输出里已经有了。他问能不能沿用 v28 里基于 hook 的外部模块方案,而不是在内核里新增视图,并建议先给出具体的自动调优用例。
Coverity 在 unicode_case.c 的 convert_case() 里报出潜在整数溢出:大小写转换让输出显著膨胀时 result_len 可能回绕。Tom Lane 指出即使输入长度在 size_t 范围内,输出长度也可能溢出,32 位平台尤其明显。Jeff Davis 引 Unicode 17.0 说明映射最多带来 3 倍码点扩展,叠加 UTF-8 单码点 4 字节,上限是 12 倍;但文本上限 1GB。
在 Aurora PostgreSQL 上重建大索引时,REINDEX 会把排序中间数据溢写到磁盘,临时空间不够就会失败。文章的做法是把重建放进蓝绿部署的 green 环境,配合 Aurora Optimized Reads,用带 NVMe 的实例让排序数据落到本地盘而不是走网络访问 EBS。实测一个膨胀到 8918 MB 的索引约四分钟重建到 4557 MB,期间写了约 19.5 GB 临时数据。
Rui Zhao 发现 launcher_exit() 有四处无锁读,v6 改用 launch_fast_checkpoint。
v2 顺带修了只读事务下 sequencesync worker 失败等几个问题。
vignesh C 把 NULL 权限值当作序列已不存在,走既有的缺失错误路径。
换掉废弃的 SSLv23_method 与 X509_NAME_get_text_by_NID,并修正协议检测宏。
游标配合 FETCH 1 可复现,标志在 ExecProcNode 再次执行之前就被重置。
Amit Kapila 计划改文档而不是改代码,修复提交到 HEAD 并回移至 PG14。
在 REST 接口之上做类型安全封装,替调用方处理资源就绪的轮询。
不留永久触发器或槽,按表名合并通知,不提供历史与恰好一次语义。
以协议层无状态取代 session id,要求新的请求头,官方称含破坏性变更。
Chrome 148 起该函数走宿主 std::tanh,不同 libm 的位级结果并不相同。
PoWA 团队发布了 powa-archivist 5.2.0,主要变化是支持 PostgreSQL 19,新增统计视图 pg_stat_recovery 和 pg_stat_lock,由 Julien Rouhaud 与 Georgy Shelkovy 贡献。powa-archivist 是 PostgreSQL Workload Analyzer 的采集底座,兼容所有仍受支持的大版本,能从多个实例采集并聚合指标,给出索引建议。
Thom Brown 测试了修复 JSON_TABLE PLAN 子句的一组补丁:0001 修好 pg_dump 里 ERROR ON EMPTY 的处理,0002 保住 PLAN 子句的括号,0003 防止列被静默丢弃。0003 起初会让自动生成的路径名与用户指定的名字冲突,Korotkov 随后发了修订版。此前 NESTED PATH 查询约 3.7 倍的性能回退,根因是嵌套路径被反复求值,由 0005 修复。Thom 确认全部解决。
Denis Smirnov 提交了一个 WIP 补丁,作为执行器批处理讨论中的堆层实验。补丁改 heap_getnextslot():页面模式扫描处理完页面上第一个元组之后,复用已经收集的可见元组偏移量,同时保留现有的 table AM 接口和逐元组的执行器接口。Apple M5 Pro 上的基准显示各类 count(*) 查询执行时间减少 4% 到 13%。与 Amit 的 v8 补丁集相比,pass-all 场景略逊。
Masahiko Sawada 和 Bharath Rupireddy 就核心设计达成一致:vacuum 遇到被活跃 walsender 持有的槽直接跳过,不阻塞等待,也不发信号,否则多个 autovacuum worker 反复碰到同一个槽会产生大量检查点请求。checkpointer 与副本上的 restartpoint 仍是兜底路径。v12 还把 vacuum、检查点和物理逻辑两类槽的测试合进了一个补丁。
有补丁提议新增 pg_stat_vfdcache 视图,暴露虚拟文件描述符缓存的统计,用来辅助调整 max_files_per_process。主要分歧在于暴露缓存总条目数还是只暴露活跃条目数,最终共识是两者都给。内存占用统计既不宜遍历全部 VFD,也不适合用固定常量估算文件名长度,Ayoub Kazar 改成运行时累计:打开文件时加上 sizeof(Vfd) 与文件名实际长度,释放时相应减去。
Scott Ray 正在开发一个视图,展示 xmin horizon 的各类贡献者,包括后端进程、prepared 事务、复制槽和 hot standby feedback 的 walsender,并显示移除每个持有者后 horizon 会怎样变化。这项工作源自 autovacuum 无法清理元组时如何报告最旧 xmin 的讨论。Scott 最终另开线程和 CF 条目,避免干扰 cfbot。
Daniel Gustafsson 建议在调用 SetDataChecksumsOff() 之前短暂持锁再读该字段。
公告没有给出完整特性矩阵,转换结果仍应按草案处理并保留人工例外清单。
只读分析 History Server 与执行器日志,可由兼容 MCP 的客户端直接调用。
源站 IP 地理定位模糊会让分层缓存选错上层节点,抬高回源时延。
改用少量 Unix 风格的探索工具,把路径收敛到 pull request 的证据上。
Peter Geoghegan 准备好索引预取补丁系列的 V30,计划在 7 到 10 天内提交 0001。Tomas Vondra 审查后指出 heap_fill_ios_slot 的命名和注释有误导,已改名为 index_fill_ios_slot 并移到 indexam.c,让它真正与 table AM 无关。另一处行为变更是 pgstat_count_index_tuples 改为每批计一次,语义与位图索引扫描一致。
Jelte Fennema-Nio 提出一个只读 GUC disconnect_requested,是早前 GoAway 提案的重新设计,不改动协议。该值为 on 时服务器发送 ParameterStatus 消息,建议客户端在合适时机断开重连;可以用新函数 pg_request_disconnect_backend(pid) 手动触发,并在 smart 关机模式下自动启用。PgBouncer 这类代理可借此做无停机重启。
Tomas Vondra 的 v4 补丁让在线启用或禁用数据校验和时可以使用分散检查点。Ewan Young 发现文档把 pg_disable_data_checksums 的 fast 参数默认值误记为 false,实际是 true,v4 已改正。Fujii Masao 又指出读取 DataChecksumState->fast_checkpoint 时没有持 DataChecksumsWorkerLock。Tomas 认为加锁未必必要,但同意修文档。
Joel Jacobson 审查了 Arne Roland 为 Key joins 提交的修订补丁系列。这一版把实现拆成十个更聚焦的提交,内容包括在基表之间证明 FOR KEY joins、错误信息机制、派生表、GROUP BY 与 DISTINCT、FILTER (WHERE ...) 子句,以及引用与被引用过滤条件的追踪。Joel 认可这种细粒度拆分,并指出第一个补丁里 parse_key_join.c 已有 1487 行。
Michael Paquier 正在重做 relfilenode 统计,重点是清理索引的关系统计:目前有大量字段常驻内存并写入磁盘,对索引却从来没被用过。Andres Freund 质疑索引统计的清理是否应该单独处理,而不是并进这次重设计。Michael 认为先把计数器分开,能让 relfilenode 统计的实现和 WAL 重放期间的重新计算逻辑都更清晰。Bertrand Drouvot 建议回到已有线程继续讨论。
Nebula Security 的报告把 GhostLock 描述为 rtmutex 代理路径错误清理 current->pi_blocked_on 造成的内核栈悬垂指针,称无权限用户可借此形成可控写并提权,影响自 Linux 2.6.39 以来的代码路径。要害是上游已修而资产基线未必已修:多租户宿主机、CI runner 和 Kubernetes 节点需按发行版公告核对内核版本与重启状态,不能只看上游版本号。
Scarf 保留原有的 Haskell API 和高性能 Gateway,把新增的 API route 放到 Python,两套并排部署、按路径路由逐步搬迁。作者给出的理由不是运行时性能,而是长冷构建、工具链和环境维护在多个编码 agent 并发时变成吞吐瓶颈。文中也强调迁移重新实现了认证、数据库访问、模型、镜像和测试。评估这类效率问题,值得量化从干净检出到第一个可靠测试结果的时间。
jump 字段同时用于组跳转和分支链接产生歧义,jian he 另提交 v51 修回归测试。
改为在 genericcostestimate() 里按 index->rel->tuples 重新估算 numIndexTuples。
扩展独占 schema 是为了降低权限提升风险,补丁等待其他人继续审查。
(connect = false) 在系统目录里没有独立状态,DROP SUBSCRIPTION 感知不到。
Amit Kapila 说 pg_subscription 设成共享目录只是为了跨库启动 worker。
目标是让 BigQuery 与开源引擎在共享存储上并发读写,减少重复管道。
按动态推导的信任等级给页面内容打标签,再限制可见范围与可用能力。
Noah Misch 在一次 AI 辅助审查中发现逻辑复制序列的缺陷:sequencesync worker 从发布端取到序列值之后,发布端的序列继续推进并执行了 REFRESH SEQUENCES,worker 随后把旧值写进订阅端,已订阅的序列就带着过期数据进入 READY 状态。提议的修复是对正在同步的序列跳过重新初始化并告警,提示用户等本轮同步结束后重跑。Vignesh 已提交 v1 补丁。
Melanie Plageman 更新了补丁,回应 Robert Haas 的审查意见。修复要求在清除 VM 位时,堆的 WAL 记录必须注册 VM 缓冲区,否则崩溃恢复后两边可能不一致。性能测试显示默认配置没有回退,但关掉 synchronous_commit 之后,因为持 VM 缓冲区锁的时间变长,TPS 下降 10 到 15%。Andrey Borodin 确认 v18 的回合补丁通过了 WAL 兼容性检查。
Imran Zaheer 提交了 Pipelined Recovery 补丁集的 v5。方案把 WAL 解码从 startup 进程里剥离,交给独立的 pipeline worker,两者用共享内存队列通信,序列化阶段改用 shm_mq_sendv() 避免额外拷贝。CPU 采样显示 startup 进程用于应用 WAL 记录的时间从约 47% 升到 89%,全内存工作负载下基准提升约 30%。审阅者 Xuneng Zhou 尚未做完整审查。
堆页剪枝过程中按需设置 Visibility Map 时,Free Space Map 没有跟着更新,VACUUM 可能因此跳过该页面,让空间信息一直过时。Melanie Plageman 提出在页面新近变为全可见时更新 FSM。Andres Freund 建议对没有删除任何元组的已满页面跳过这次更新,但认为在当前发布周期里用简单方案更稳妥,同时质疑原注释里说这类更新无关的说法缺乏依据。Melanie 已提交不含启发式优化的修复版本。
最近的提交给 pg_subscription 加了 subserver 和 subconflictlogrelid 两个字段,各自跨共享与非共享目录建立依赖。Noah Misch 指出,若在 subdbid 所指数据库之外执行 REASSIGN OWNED,这两个字段会被按当前数据库解释,导致报错或波及无关对象。修复思路是只处理 subdbid 与当前库匹配的行。Jeff Davis 认同并计划跟进。
EDB 发布了一套基于 EDB Postgres Advanced Server 的双层高可用参考架构。EDB Failover Manager 负责监控主备状态,在主库故障时自动完成切换;PgPool-II 部署在数据库节点前端,提供连接池与读写分离负载均衡,并用 watchdog 机制在三个实例之间做高可用,对外只暴露一个虚拟 IP。验证过的版本组合是 EPAS v16.4.1、EFM v4.9 和 PgPool v4.4.5。
GitHub 说明了它如何在 45 天内为活跃仓库建立经过校验的归属,并归档约 8000 个闲置仓库。owner 以 ownership-type 和 ownership-name 两个自定义属性记录,校验、警告和归档由 GitHub App 加 Kubernetes CronJob 驱动。理由是 secret scanning、依赖告警和供应链修复都需要知道谁能决定和修复;没有 owner,自动化最多发现问题,进不了闭环。
Cloudflare 称其多数流量已经用上 ML-KEM,接下来以 ML-DSA 推进认证一侧的防护,目标是在 2029 年实现全面后量子安全。文章也承认 ML-DSA 存在签名尺寸和实现上的限制,现有基于 RSA 与 ECC 的技巧不能完全照搬。后量子迁移的难点不在某一天换掉一个算法,而是证书、身份、签名、协议尺寸、设备兼容性和回滚链条构成的多年工程。
新实现的自旋锁持有时间比 dynahash 多 50 到 150 纳秒,扩容方案留待后续补丁。
位运算改成先减后加以避免重叠,此前 TerminateBufferIO 的 BM_IO_ERROR 标志会丢失。
按列名而非位置匹配源查询结果,即将发布的 SQL 标准允许同时给出显式列表。
自动生成列名与用户列名冲突还会误报重复,回退原因目前尚未查清。
Álvaro Herrera 去掉多余的系统缓存拷贝,并修复关系并发消失或被替换的处理。
schema 限定与 EXCEPT 列表的校验从语法层推迟到执行阶段集中处理。
基于 Rust 与 Apache DataFusion,性能和 GA 范围仍需用真实数据自行验证。
CVE-2026-53359 值得 KVM 宿主机核查补丁状态与嵌套虚拟化的暴露面。