[ 
https://issues.apache.org/jira/browse/TINKERPOP-2897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yang Xia closed TINKERPOP-2897.
-------------------------------
    Resolution: Not A Bug

> Merged query using logical operator OR returns false results
> ------------------------------------------------------------
>
>                 Key: TINKERPOP-2897
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2897
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: driver, server
>    Affects Versions: 3.6.2
>         Environment: - TinkerGraph Version: 3.6.2
> - Operating system: macOS 13.2.1
> - API/Driver: Java
>            Reporter: Zeyang Zhuang
>            Priority: Major
>
> We discovered a bug that Syntax error using logical operator AND.
>  - TinkerGraph Version: 3.6.2
>  - Operating system: macOS 13.2.1
>  - API/Driver: Java
> *Expected behavior:*
> We construct the following scenario: we randomly generate two queries Q1, Q2, 
> and merge these two queries using OR logical operator into a new query Q3. 
> Based on the OR calculation. The Q3 query result set should be the union of 
> result sets from Q1 and Q2.
> We generate graph schema and data based on random strings and values. Here is 
> one of our examples that triggered the bug.
> 1) `g.V().or(__.values('vp2'))` returns `[0, 18, 2]`
> 2) `g.V().out('el2','el1')` returns `[0, 0, 0, 0, 10, 12, 14, 16, 16, 18, 18, 
> 2, 2, 2, 4, 6]`
> 3) `g.V().or(or(__.values('vp2')),out('el2','el1'))` returns `[0, 10, 14, 16, 
> 18, 2, 4, 8]`
> We calculate the union result set of Q1 and Q2, which is `[0, 0, 0, 0, 10, 
> 12, 14, 16, 16, 18, 18, 2, 2, 2, 4, 6]`.
> The union result set doesn't equal to Q3 result set.
> *Actual behavior:*
> The union result set should equal to Q3 result set. We did trigger some cases 
> conform to this requirement, but still there're some cases that violate this 
> constraint. This might be a duplicate but the query and logical operator is 
> different so I reported it just in case.
> *Steps to reproduce:*
> We create a graph with 10 nodes and 20 edges. We try to make it clear to 
> reproduce the bugs, *{*}hope{*}* to not cause much inconvenience to your 
> reviewing, but we believe the problem does exist.
> Following the following graph data generation query, we can reproduce the 
> bugs:
> Create data
> ```
> Vertex:
> g.addV('vl0').property('vp2',''-|꿃x\'').property(T.id,0)
> g.addV('vl0').property('vp2',''6j}ꎱY'').property(T.id,2)
> g.addV('vl1').property('vp0','-1469571896011420642').property(T.id,4)
> g.addV('vl1').property('vp0','-8118881859321711963').property(T.id,6)
> g.addV('vl1').property('vp0','5851992385413580838').property(T.id,8)
> g.addV('vl1').property('vp0','-4650710188385909827').property(T.id,10)
> g.addV('vl1').property('vp0','-1088319260591605148').property(T.id,12)
> g.addV('vl1').property('vp0','7016141397206128700').property(T.id,14)
> g.addV('vl1').property('vp0','6786856070484969672').property(T.id,16)
> g.addV('vl0').property('vp2',''6j}ꎱY'').property(T.id,18)
> Edge:
> g.V(10).as('10').V(18).as('18').addE('el2').from('10').to('18')
> g.V(18).as('18').V(14).as('14').addE('el1').from('18').to('14')
> g.V(0).as('0').V(16).as('16').addE('el1').from('0').to('16')
> g.V(0).as('0').V(6).as('6').addE('el0').from('0').to('6')
> g.V(18).as('18').V(12).as('12').addE('el0').from('18').to('12')
> g.V(2).as('2').V(4).as('4').addE('el1').from('2').to('4')
> g.V(0).as('0').V(10).as('10').addE('el1').from('0').to('10')
> g.V(14).as('14').V(2).as('2').addE('el2').from('14').to('2')
> g.V(0).as('0').V(4).as('4').addE('el1').from('0').to('4')
> g.V(2).as('2').V(8).as('8').addE('el0').from('2').to('8')
> g.V(4).as('4').V(0).as('0').addE('el2').from('4').to('0')
> g.V(12).as('12').V(2).as('2').addE('el2').from('12').to('2')
> g.V(2).as('2').V(8).as('8').addE('el1').from('2').to('8')
> g.V(0).as('0').V(10).as('10').addE('el0').from('0').to('10')
> g.V(6).as('6').V(0).as('0').addE('el2').from('6').to('0')
> g.V(2).as('2').V(14).as('14').addE('el1').from('2').to('14')
> g.V(16).as('16').V(0).as('0').addE('el2').from('16').to('0')
> g.V(18).as('18').V(8).as('8').addE('el1').from('18').to('8')
> g.V(0).as('0').V(14).as('14').addE('el1').from('0').to('14')
> g.V(16).as('16').V(2).as('2').addE('el2').from('16').to('2')
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to