使用 Go 多边查询时用 where 过滤出来的结果不符合预期

  • nebula 版本:v1.2.0

  • 部署方式(分布式 / 单机 / Docker / DBaaS):docker-compose

  • 硬件信息

    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述

查询语句:

GO 1 TO 2 STEPS FROM 1 
OVER created,knows BIDIRECT 
WHERE created.weight<=0.4 OR knows.weight>0.5 
YIELD DISTINCT created._src,created._dst,created._rank,created._type,created.weight,knows._src,knows._dst,knows._rank,knows._type,knows.weight | LIMIT 1000

想问下为啥标记的 [knows]1->2 这条边 weight=0.5,为什么也能查出来呢?
使用的图数据集是这样的:

看了一下,原因是where条件中,对 float和double的精度的控制问题。
@steam 我们可以把这个问题同步到jira。

1 个赞

@hippiebaby233 好奇这个图你是怎么画的啊 挺好看的

1 个赞

where 中 float 类型的精度问题在 2.0 中也会存在,我之前有在 tck 的测试用例中 cc @Aiee

gremlin的例子

1 个赞

这个是 gremlin 的练习数据集……

请问一下,这个问题预计在哪个版本修复呢?

你好,已经在这个pr里修复了2.0版本的这个问题, https://github.com/vesoft-inc/nebula-graph/pull/963
可以用nightly的代码试一下

1.0的目前还没有

2 个赞