incubator-hugegraph
incubator-hugegraph copied to clipboard
Inconsistent results in equivalent queries
trafficstars
Bug Type (问题类型)
gremlin (结果不合预期)
Before submit
- [X] 我已经确认现有的 Issues 与 FAQ 中没有相同 / 重复问题 (I have confirmed and searched that there are no similar problems in the historical issue and documents)
Environment (环境信息)
HugeGraph: v1.0.0
Expected & Actual behavior (期望与实际表现)
Query 1:
g.V().as('cccccccc').hasLabel('A').emit(__.loops().is(gte(1))).repeat(__.outE().inV()).times(2).emit(__.loops().is(gte(1))).repeat(__.outE().inV()).times(2).as('hketwcbf').hasLabel('B').bothE().dedup().by(__.path()).otherV().as('test').where(__.select('test').where(eq('cccccccc'))).select('hketwcbf').count()
Query 2:
g.V().as('cccccccc').hasLabel('A').bothE().dedup().by(__.path()).otherV().as('hketwcbf').hasLabel('B').emit(__.loops().is(gte(1))).repeat(__.inE().outV()).times(2).emit(__.loops().is(gte(1))).repeat(__.inE().outV()).times(2).as('test').where(__.select('test').where(eq('cccccccc'))).select('hketwcbf').count()
They are equivalent queries that have symmetric graph pattern. They would look like these in Cypher:
Q1: MATCH (cccccccc:A)-[]-(hketwcbf:B)<-[*1..2]-(ahdnqvvl)<-[*1..2]-(cccccccc:A) RETURN count(hketwcbf)
Q2: MATCH (cccccccc:A)-[*1..2]->(ahdnqvvl)-[*1..2]->(hketwcbf:B)-[]-(cccccccc:A) RETURN count(hketwcbf)
Vertex/Edge example (问题点 / 边数据举例)
No response
Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)
g.addV('A').as('n1').property(single, 'name', 56).property(single, 'id', 2).property(single, 'undefined', 18).addV('A').as('n2').property(single, 'name', 61).property(single, 'id', 61).addV('A').as('n3').property(single, 'name', 49).property(single, 'id', 92).property(single, 'undefined', 16).addV('B').as('n4').property(single, 'name', 79).property(single, 'id', 47).addV('B').as('n5').property(single, 'name', 22).property(single, 'id', 17).property(single, 'undefined', 74).addV('A').as('n6').property(single, 'name', 99).property(single, 'id', 95).addV('B').as('n7').property(single, 'name', 29).property(single, 'id', 25).property(single, 'undefined', 1).addV('A').as('n8').property(single, 'name', 65).property(single, 'id', 62).addV('B').as('n9').property(single, 'name', 34).property(single, 'id', 83).property(single, 'undefined', 24).addV('B').as('n10').property(single, 'name', 91).property(single, 'id', 74).addE('x').from('n1').to('n8').addE('y').from('n2').to('n9').addE('x').from('n3').to('n3').addE('y').from('n4').to('n1').addE('x').from('n5').to('n5').addE('y').from('n6').to('n5').addE('x').from('n7').to('n6').addE('y').from('n8').to('n7').addE('x').from('n9').to('n5').addE('y').from('n10').to('n5').addE('x').from('n1').to('n5').addE('y').from('n2').to('n8').addE('x').from('n3').to('n2').addE('y').from('n4').to('n3').addE('x').from('n5').to('n6').addE('y').from('n6').to('n10').addE('x').from('n7').to('n7').addE('y').from('n8').to('n8').addE('x').from('n9').to('n9').addE('y').from('n10').to('n9').addE('x').from('n1').to('n8').addE('y').from('n2').to('n3').addE('x').from('n3').to('n1').addE('y').from('n4').to('n6').addE('x').from('n5').to('n9').addE('y').from('n6').to('n6').addE('x').from('n7').to('n5').addE('y').from('n8').to('n5').addE('x').from('n9').to('n10').addE('y').from('n10').to('n3').addE('x').from('n1').to('n10').addE('y').from('n2').to('n6').addE('x').from('n3').to('n2').addE('y').from('n4').to('n4').addE('x').from('n5').to('n3').addE('y').from('n6').to('n8').addE('x').from('n7').to('n4').addE('y').from('n8').to('n3').addE('x').from('n9').to('n8').addE('y').from('n10').to('n9').addE('x').from('n1').to('n9').addE('y').from('n2').to('n5').addE('x').from('n3').to('n7').addE('y').from('n4').to('n9').addE('x').from('n5').to('n5').addE('y').from('n6').to('n5').addE('x').from('n7').to('n7').addE('y').from('n8').to('n7').addE('x').from('n9').to('n9').addE('y').from('n10').to('n5').barrier().limit(0)
If you mean the order of emit() step leads to different results, that's expected, please refer to: https://tinkerpop.apache.org/docs/current/reference/#repeat-step