Nebula Java 客户端match语句聚合查询的bug

提问参考模版:

  • nebula 版本:3.2.0
    nebula-java版本:3.0.0、3.3.0
    nebula-studio版本:3.2.5

有如下语句:
MATCH p=(v)-[e:PaperReferences]->(v2) WHERE id(v2)==2294053032 and v.Papers.isDelete is null RETURN count(v);
在Nebula-studio的查询结果是256,用nebula-java客户端查询结果是272.
分析了一下,发现 v.Papers.isDelete is null 这个条件在nebula-java执行的时候被忽略掉了,导致结果不一致。

然后我又尝试了一下将上面的match语句改为下面的go语句:
go from 2294053032 over PaperReferences reversely where $$.Papers.isDelete is null yield src(edge)| yield count(*);

nebula-studio和nebula-java的结果这次都是256,是一致的。

image

image

你把版本号对齐了再试试。

nebula-java的版本号是对齐了的,studio的版本号有差异。
但是现在是nebula-java的结果不对呀,我尝试了3.0.0和3.3.0,match的结果都不对

你去把结果都同 nebula-console 对比下,先排除版本原因。

同一个版本match和go语句返回的结果不一致,就已经能说明原因了吧。
而且同一个match语句where后一个条件和两个条件的结果是一样的。说明第二个条件没生效。这已经很明显了吧

MATCH p=(v)-[e:PaperReferences]->(v2) WHERE id(v2)==2294053032 RETURN count(v);
我尝试了一下这个语句,结果就是272

会不会是数据导入之后创建了索引导致数据不同,你试试 rebuild index 之后,再执行下 match 查询,看看是不是数量还不一致呢。

没有创建索引呢,根据id查询的

请问这里是被谁忽略了?是发给 server 端的语句就没有这个条件吗?

应该是被nebula-java客户端忽略了。
发给server端的语句是有这个条件的,但是得到的结果跟没有这个条件的结果是一致的。
我用nebula-java执行的语句同样在studio执行,是没有这个bug的

不是很明白。如果是被客户端忽略了,发给 server 端的语句就应该没有这个条件了吧?

可以抓包看下发出去的内容,看看语句是不是全的。如果语句是全的,那么回来的结果是不是全的。这些事情都可以通过抓包确定。最好截图贴出来。

我们需要这些信息才好明确发生了什么事情。

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。