发布于 2026-09-10T10:59:42.396414Z · Nikolay Samokhvalov · pgsql-hackers

Nikolay Samokhvalov 在 PostgreSQL 19 新增的外键检查快速路径里发现三处问题。这条路径把外键检查攒成批处理,但延迟刷批时会执行用户定义的转换函数或操作符,于是给了重入的机会:满批刷新时重入会造成越界写入并可能崩溃;子事务回滚会丢掉父事务缓冲的行,导致外键检查被跳过、孤儿数据得以提交;跨表重入还会让哈希迭代漏掉条目。三者都能由普通用户用带隐式转换的自定义类型复现。Amit Langote 已确认并开始排查。
Nikolay Samokhvalov 在 PostgreSQL 19 新增的外键检查快速路径里发现三处问题。这条路径把外键检查攒成批处理,但延迟刷批时会执行用户定义的转换函数或操作符,于是给了重入的机会:满批刷新时重入会造成越界写入并可能崩溃;子事务回滚会丢掉父事务缓冲的行,导致外键检查被跳过、孤儿数据得以提交;跨表重入还会让哈希迭代漏掉条目。三者都能由普通用户用带隐式转换的自定义类型复现。Amit Langote 已确认并开始排查。
来源记录
- center.info_item · 226c163c263bab15 · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 226c163c263bab15 · 2026-10-03T04:08:55.967155Z