PostgreSQL 修复哈希桶分裂期间的查询漏行
PostgreSQL 主线修复了哈希索引在桶分裂期间启动扫描时漏行的问题。旧代码读完第一个桶后可能提前结束,没有继续读取另一半;触发还要求分裂开始后插入了匹配记录,且首桶最后读取的页含匹配项。补丁统一正反向跨桶逻辑,并加入可复现测试。提交标注回补至 14 分支,使用哈希索引的实例应关注后续维护版;回归验证可覆盖并发插入以及正反向扫描这两类路径。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 26 条。
PostgreSQL 主线修复了哈希索引在桶分裂期间启动扫描时漏行的问题。旧代码读完第一个桶后可能提前结束,没有继续读取另一半;触发还要求分裂开始后插入了匹配记录,且首桶最后读取的页含匹配项。补丁统一正反向跨桶逻辑,并加入可复现测试。提交标注回补至 14 分支,使用哈希索引的实例应关注后续维护版;回归验证可覆盖并发插入以及正反向扫描这两类路径。
PostgreSQL 已提交一组优化器正确性修复。表达式缩减为输入列时保留类型修饰与排序规则,避免 CASE、NULLIF、COALESCE 改写影响排序或分组;同时修复分区虚拟生成列的非空误判,并恢复 ON CONFLICT 对简化索引表达式的匹配。提交均标注回补至 19,其中旧版 CASE 与 NULLIF 的问题因兼容性顾虑暂不回补。测试 PG19 时需以包含修复的新构建复核。
Now-Next 在 PostgreSQL 17、18 上实测发现,一租户一分区配合仅在 RLS 中设置租户条件,会把小查询变成大量规划与加锁工作。其千分区样例从显式租户条件下约 0.25 毫秒升至约 77 毫秒,每次查询持有约 2,003 个关系锁,并发时耗尽共享锁表。提前写明租户谓词可在规划阶段裁剪分区;测试用小表和热缓存,反映的是固定开销,不能直接用于容量规划。
Pettus 对照 Aurora、pg_lake、ColdFront 与 pg_clickhouse,指出湖仓查询的关键差别在于由哪个引擎掌握规划权。完整下推可把连接交给湖端;部分下推只传递扫描,本地规划仍可能缺少统计信息。类型与排序规则也会改变执行路径,pg_lake 通过独立进程运行 DuckDB。这份比较依据项目文档,并未同场跑分,选型时应检查普通表与湖表混合连接的执行计划,再核对写入与事务边界。
MariaDB 基金会为测试框架 TAF 加入 PostgreSQL 插件,把安装、实例生命周期、SQL 执行、负载运行与结果报告接入同一流程。插件可运行 HammerDB 的 TPROC-C、TPROC-H 及 sysbench 负载,并生成可复现的配置文件与性能剖析。PostgreSQL 的负载配置仍标作测试版;sysbench 必须编入对应的 PostgreSQL 支持,否则框架会告警并跳过。
Docker Engine 29.9.0 修复了加密覆盖网络的一处保密性缺陷:内核加密规则配置失败时,部分数据包可能以明文发出。接收端会拒绝这些包,因此影响主要是单向流量与未完成握手,而非已建立连接的全部内容。新版同时通过更新 Go 修复多项 HTTP/2 拒绝服务问题,并修正镜像可运行却缺少导出所需层文件、无根模式连接泄漏等故障。使用 Swarm 加密网络的团队应结合更新安排检查节点网络行为。
重复触发读取错误可能耗尽文件描述符并导致 PANIC;修复改变内部 ABI,仅进入开发主线,未回补 19。
此前只为子表输出 NO_GATHER 仍可能留下上层并行计划;修复增加父表建议,并校正单子列表 JOIN_ORDER 的匹配反馈。
同一成员查询可因策略写法相差数个数量级;安全定义函数还需固定搜索路径、限制执行权限,并单独设置写入策略。
Pettus 的双核实测中,并行计划在单客户端略快,却在双客户端下输给串行;两个成本参数只影响计划选择,不决定工作进程数。
只存视图定义的数据库可只读挂载远端 Parquet,使用者仍需底层数据权限,目录更新后须重新上传。
自定义 OIDC 接入限 Enterprise,要求 26.4 起;临时用户过期后清理,配额与行策略按稳定身份保留。
承接 2.15.3 安全修复并修正 ECR 推送复制回归;内部地址限制改为显式启用,需核对现有防护配置。
修复跨主机重定向泄露令牌、WebDAV/NFS 路径穿越及 S3 多租户分片隔离,并加强自更新哈希校验。