nebula GO语句where条件中tag相关的filter逻辑是否有pushDown到storage层

背景:问这个问题是因为我这边有不少稠密点,所以服务端开启了配置max_edge_returned_per_vertex,比如值配置为1000,但遇到了问题,当where条件以tag中的props做过滤时,经实践以及查看代码、发现tag的过滤条件并没有pushDonw到storage层;

导致的问题:拿到的数据rows_num少于真实数据集,举一个简单的例子来描述下场景,如下:
1.为了限制稠密点疯狂扩散,服务端storage配置:

  • UPDATE CONFIGS storage:enable_reservoir_sampling = false;
  • UPDATE CONFIGS storage:max_edge_returned_per_vertex=N; 这里设置N=2

2.具体执行过程如截图,最开始N还未设置为2:

您好,拿目标点的属性作为过滤条件,现在是没有做下推了,拿起点属性和边属性作为过滤条件才会做下推。

恩恩,那我的需求现在有办法满足么?既:
A是稠密点,往外1跳会扩散比如100W个点,实际返回N个dst就行了、但是这N个dst尽量是tag的prop满足某个条件的,如截图,N=2,people这个tag的age>3,然后给我返回两个dst、不要只返回1个dst

很抱歉,我们后续的版本,这种过滤是会下推到存储层的。现在的版本不支持,你那边假如内存够的话,就不要开启截断才能保证拿到您想要的所有数据,不然截断是会存在这个问题的。

了解了,感谢 :+1:

浙ICP备20010487号