同样的语句,是用 executeWithParameter 报 "IndexNotFound: No valid index found“

  • nebula 版本:3.2.0,3.3.0
  • 部署方式:单机
  • 安装方式:RPM
  • 是否为线上版本:N
  • 硬件信息
    • 磁盘 : 机械硬盘
    • CPU :Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
    • 内存: 32G
  • 问题的具体描述

使用 Java Client 3.0.0 版本执行如下查询语句,报 "IndexNotFound: No valid index found”

MATCH p = (n1:TagA)-[:EdgeA{type:'RunsOn'}]->(n2:TagA)<-[*..3]-(n3:TagA) 
WHERE id(n1) == $n1_resId AND n3.TagA.classCode IN $n3_classCode 
RETURN n3, p LIMIT 6

其中,$n1_resId 为字符串形式的ID,$n3_classCode 为字符串形式的数组

但是,如果将以上查询语句中的参数占位符替换为实际的参数值,则可以执行成功:

MATCH p = (n1:TagA)-[:EdgeA{type:'RunsOn'}]->(n2:TagA)<-[*..3]-(n3:TagA) 
WHERE id(n1) == 'id1' AND n3.TagA.classCode IN ["code1", "code2"]
RETURN n3, p LIMIT 6

不明白是哪里的问题,请指点迷津。

  • 相关的 meta / storage / graph info 日志信息:
  1. graph 日志:
  2. meta 和 storage 异常

可以麻烦用 master 试一下么?最近修复了几个参数化下的优化规则问题。

如果还是不行就是一个新的 bug,咱们去提一个 issue 哈~

好的

我忘记提了,classCode 上是创建了索引的