PG19 外键快速路径有越界写入与漏检的约束
Amit Langote 发出针对 PG19 外键批量检查快速路径的 v2 补丁。先前的修复把批处理限制在顶层事务,Noah Misch 批评这在用 savepoint 时会掉性能,也不符合按子事务追踪资源的惯例。新版改为新增 AtEOSubXact_RI(),在每个缓存条目上记录子事务号。随后又发现缓存只以约束 OID 为键,导致同一约束的嵌套检查复用了外层条目,v2 把键改成约束 OID 加查询深度。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 32 条。
Amit Langote 发出针对 PG19 外键批量检查快速路径的 v2 补丁。先前的修复把批处理限制在顶层事务,Noah Misch 批评这在用 savepoint 时会掉性能,也不符合按子事务追踪资源的惯例。新版改为新增 AtEOSubXact_RI(),在每个缓存条目上记录子事务号。随后又发现缓存只以约束 OID 为键,导致同一约束的嵌套检查复用了外层条目,v2 把键改成约束 OID 加查询深度。
Kubernetes 靠 container_memory_working_set_bytes 决定驱逐哪个 Pod,这个值只扣掉不活跃的页缓存 inactive_file。Jeremy Schneider 用六组测试说明:Postgres 的 shared buffers 以 shmem 形式存在,内核回收不了,而活跃页缓存明明可回收却被算了进去,指标给不出有用的预警。他建议改用当前用量减去全部页缓存,并把 shmem 与 anon 分开采集。
Christopher Winslett 复盘 Crunchy Data 过去写下的建议在 19 里的变化。异步 I/O 让后端可以排队多个读请求,云盘上最高快 3 倍,BRIN 与并行顺序扫描的取舍需要重新测。JIT 从 12 以来一直默认开启,19 因可靠性问题改为默认关闭,分析型负载要自己打开并复核计划。TOAST 默认压缩由 pglz 换成 LZ4,只影响新写入的值。
Steve Dille 介绍 pgvector 的 HNSW 二值量化:binary_quantize() 把 float32 每维压成一比特,索引体积最多缩小 32 倍,普通实例的缓冲池就能装下完整索引,查询时再对候选做全精度重排补回召回率。在 LAION 100M、OpenAI 5M 和 Cohere 10M 上,向量分布均匀时建索引速度和查询吞吐都优于磁盘型 ANN。分布集中的嵌入模型量化后掉得厉害,上线前须用真实数据验证召回。
Command Prompt 发布列式表访问方法 PgColumnar 的 1.0 Alpha2。这一版新增只读的 Apache Iceberg 表支持和 S3 兼容对象存储上的 Parquet、Iceberg 读取,带来自动维护守护进程,并根据对抗性审计修掉六处内存安全问题。性能方面,参数化谓词现在能驱动块组跳过,删除向量改走索引而非顺序扫描。项目提醒接口在 1.0 之前仍可能变动。
Dimitri Fontaine 放出免费教程 YeSQL:24 节短课,每节一个概念配一条可运行的查询,不需要注册。内容分 SQL 基础、窗口函数、聚合、连接、性能、模式设计六个方向,涵盖 NULL 语义、运行总计、LATERAL 连接和 EXPLAIN 阅读。查询用 PGlite 在浏览器里直接执行,数据是 F1 赛事等真实数据集。每节都链到《The Art of PostgreSQL》的对应章节。
DuckDB 公布 2.0 预览,计划秋季发布。列出的能力包括稳定版 Quack、远程 CONNECT、触发器、VARIANT 类型、异步 I/O、新的 SQL 解析器和新的默认存储格式。Quack 与远程连接改变了 DuckDB 一直以来只做嵌入式的部署假设,而解析器、存储格式和 C API 的变动意味着升级要当作一次真正的大版本迁移来对待,需要提前建立文件格式、扩展、各语言客户端和并发写入的兼容矩阵。
Wiz 称其 Red Agent 在 snowflake-connector-net 中发现工作流脚本注入:构造特定的 issue 标题就能让未认证用户在 runner 上执行任意命令。Wiz 称 6 月 23 日通报、当日修复并轮换凭据,随后修正措辞,只确认 Copilot 审查没有标出风险。把 issue 标题、分支名这类不可信元数据直接拼进 shell 的老问题依然存在,有 AI 辅助审查的流程同样会漏掉。
Jakub Wartak 发现补丁用大量自旋锁更新简单布尔值;长跑时提升会从约 42% 降到 14–20%。
streaming=on 时未恢复 remote_xid 会记错事务号,预备事务路径同样漏更新提交信息。
Andres Freund 担心新测试模块要单独 initdb,完整测试在 macOS 上已产生约 73GB 写入。
把逻辑复制槽提前同步到备机,主备切换后订阅者可直接续传,不必重建槽和全量重同步。
用 CYBERTEC PG Operator 0.9.2 与 PostgreSQL 18.4 建双实例集群,单节点 minikube 需关掉 Pod 反亲和。
jit_dump_bitcode 会持续往数据目录写 .bc 文件且从不清理,开着就是定时的磁盘写满事故。
DROP DATABASE WITH (FORCE) 终止的后端提交时被 WALWriteLock 挡住,重试五秒后放弃。
三周内两台机器在 test_shm_mq 上耗尽 max_worker_processes,autovacuum 已被排除。
每个集群的 agent 把操作转成 CRD,状态存本地 etcd,中心 API 靠操作 ID 去重并写只追加日志。
Git 操作、Webhooks、API、Issues、PR、Actions、Pages 与 Copilot 均受影响,21:15 UTC 标记解决。