gpt4 book ai didi

postgresql - 防止Postgresql中递归查询中的无限循环

转载 作者:行者123 更新时间:2023-11-29 12:08:05 25 4
gpt4 key购买 nike

此处:( To find infinite recursive loop in CTE ) 讨论了如何防止递归查询中的无限循环。递归在“查询级别”被阻止——至少在关于 Postgresql 的回答中是这样。

在 Postgresql (10) 中有没有办法实现某种安全网来防止无限递归?为此使用 statement_timeout 是一种可行的方法还是有任何其他被广泛接受的方法?

最佳答案

在我的开发环境中,我总是使用两个熔断器来进行递归查询或函数。我的客户端在启动时自动设置

set statement_timeout to '10s'

我很少需要更多,而且它经常使我免于死循环。

当我从头开始编写递归查询时,我总是使用一个额外的列来限制所涉及的级别数,如下所示:

with recursive cte (root, parent, depth) as (
select id, parent_id, 1
from ...
union all
select c.id, t.parent_id, depth+ 1
from ...
where depth < 10
)
select *
from cte;

在生产中,这两种方式都可能存在问题。相反,您可以调整配置参数的值 max_stack_depth (integer)操作系统和/或硬件的预期需求和功能。

另见 this answer了解 Postgres 14+ 中新功能的替代方法和示例。

关于postgresql - 防止Postgresql中递归查询中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51025607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com