副本模式并不会关掉 CHECK、唯一约束和行级安全
Seedfast 的 Mikhail Shytsko 在 PostgreSQL 18.6 与 19beta3 上逐项验证 session_replication_role = replica:外键、ON DELETE CASCADE、规则和事件触发器确实静默,标记 ENABLE REPLICA 的触发器反而开始触发,而 CHECK、NOT NULL、唯一约束和行级安全照常拦截。恢复时只有 NOT ENFORCED 切回会扫表。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 21 条。
Seedfast 的 Mikhail Shytsko 在 PostgreSQL 18.6 与 19beta3 上逐项验证 session_replication_role = replica:外键、ON DELETE CASCADE、规则和事件触发器确实静默,标记 ENABLE REPLICA 的触发器反而开始触发,而 CHECK、NOT NULL、唯一约束和行级安全照常拦截。恢复时只有 NOT ENFORCED 切回会扫表。
PostgreSQL 19 新的外键快速路径批处理层被查出两个缺陷:在 AFTER 触发器里执行 ALTER TABLE ... ADD FOREIGN KEY 时,验证检查被错误并入外层批次,外键检查因此被跳过,孤立行会当作合法数据提交;SET CONSTRAINTS ... IMMEDIATE 启动嵌套触发周期时则触发断言崩溃并漏检。两个补丁已就绪,要等批处理层是否从 19 回退有结论才推送。
Ajit Awekar 的补丁修复了 2018 年就已知的缺陷:通过 postgres_fdw 对分区外表批量 DELETE/UPDATE 会造成数据逻辑损坏。Jakub Wartak 审查后指出代价不小:补丁用 ROW() 和列名各传一次数据,所有 postgres_fdw 外表的 CPU 开销约翻倍;逐行发出的语句无法按 tableoid 做分区裁剪,性能随行数与分区数之积恶化。部分问题还没有明确方案。
PostgreSQL 19 的 REPACK 在 beta 末期集中修补三处限制:对不支持逻辑解码的非 heap 访问方法执行 REPACK (CONCURRENTLY) 可能静默丢数据,Bharath Rupireddy 的补丁补上访问方法检查;标记 user_catalog_table 的表将被禁止并发重整,以免内容对输出插件不可见;表所有者缺少 CONNECT 权限时的失败也已修好。
Sami Imseih 把修复分区索引重建丢失 replica identity 的补丁拆成 v18 三部分:非后代分区的 DEPENDS ON EXTENSION 保留、SET EXPRESSION 的覆盖,以及后代分区索引属性的保留。Zsolt Parragi 测试时发现新的名称冲突:把某个分区索引改名成另一个分区的默认索引名之后,再用 ALTER TABLE 改列类型会报 relation already exists。
启用 sync_replication_slots 时失效无法持久:同步 worker 会用更新的 catalog_xmin 把槽重建回来。
Michael Paquier 为 v20 的 8 字节 TOAST 值预留命名,扩展开发者可能要跟着改。
v6 补丁补上命中与未命中的活动测试,视图还给出 cache_bytes、max_open_fds 与命中率。
RSA 密钥交换时没有协商组,函数拆成保留 NULL 的底层实现和过滤 NULL 的外层。
find_all_inheritors_ordered() 用 Kahn 排序保证祖先先于后代,简化了 CHECK 约束的既有修复。
Tom Lane 提醒 INTERNAL 状态要自备 serialize/deserialize 函数,并非无条件更优。
relhassubclass 在继承解除后仍为真,postgres_fdw 只看这个字段,误报将写进文档。
最省的 GPT-5 Nano 约 3 分钟跑完,最快的 Llama 3.1 8B 只有 34 条通过准确性检验。