发布于 2026-09-10T10:59:48.785438Z · Bharath Rupireddy · PostgreSQL hackers

PL/pgSQL、PL/Perl 等语言的异常块捕获错误时,SQL 可调用的复制槽函数不会释放已获取的槽,因为异常处理跑在内部子事务里,绕过了顶层错误处理路径。修法是新增 AtEOSubXact_ReplicationSlot(),在子事务结束时释放。Bharath Rupireddy 在 v13 里处理了大部分审查意见,并提议回移到 PG14:这个缺陷用简单 SQL 就能复现,可能导致崩溃、槽泄漏和 vacuum 受阻。
PL/pgSQL、PL/Perl 等语言的异常块捕获错误时,SQL 可调用的复制槽函数不会释放已获取的槽,因为异常处理跑在内部子事务里,绕过了顶层错误处理路径。修法是新增 AtEOSubXact_ReplicationSlot(),在子事务结束时释放。Bharath Rupireddy 在 v13 里处理了大部分审查意见,并提议回移到 PG14:这个缺陷用简单 SQL 就能复现,可能导致崩溃、槽泄漏和 vacuum 受阻。
来源记录
- center.info_item · 493ca01aafa0383c · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · 493ca01aafa0383c · 2026-10-03T04:08:55.967155Z