Match语句报错, 服务后台报错

-nebula 版本:3.2.0
-部署方式:分布式
-安装方式:RPM
-是否为线上版本:Y
-硬件信息
-磁盘 单节点 40T+ 机械盘, 一共5 个节点
-CPU、 单节点40核
-内存信息 单节点256G
问题的具体描述
“match p=(v1)-->(v2) where id(v1) in [” + idlist + “] and id(v2) in [” + idlist + “] return p” 执行没问题
改成 or
“match p=(v1)-->(v2) where id(v1) in [” + idlist + “] or id(v2) in [” + idlist + “] return p” 执行报错
Scan vertices or edges need to specify a limit number, or limit number can not push down.

加 limit 50 也不好使

过一会执行啥语句都执行不了, 报错如下
Storage Error: part: 151, error: E_RPC_FAILURE(-3).

查看服务运行日志如下

服务状态正常吗, 看日志是向 storage 发rpc请求失败了, 也贴下 storage 日志吧

昨天重启后解决了, 下次再碰到了我截取一下, 上面那个match 查询的呢帮忙看看, and 好使, or 就不好使了

这是一个已知问题了, 过滤含 id 表达式又包含 or 的时候没办法下推 limit, 一个方法是在 v1 v2 后面指定一下 tag, 如 match p=(v1)-[]->(v2:player) where id(v1) in ["Tim Duncan"] or id(v2) in ["Tony Parker"] return p LIMIT 30

收到,明天我测一下

这样说也可以但不是很准确。limit 能不能下推跟是否包含 or 其实没啥关系,而 where 子句包含 id 表达式或 and 相连的 id 表达式确实可以执行但和 limit 下推也没什么关系。