[ 
https://issues.apache.org/jira/browse/TINKERPOP-2863?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17711591#comment-17711591
 ] 

ASF GitHub Bot commented on TINKERPOP-2863:
-------------------------------------------

xiazcy opened a new pull request, #2020:
URL: https://github.com/apache/tinkerpop/pull/2020

   Same changes as #2019, but for 3.6-dev instead, as there was an added null 
check in hasId() for 3.6, which led to changes to the Gherkin test suites. 
   
   It appears that the previous implementation of hasId() omitted adding `null` 
to the Bytecode step if `otherIds` were `null`, which unintentionally removed 
tailing nulls from traversals and in the test files.
   
   I'll squash all commits into one when this is ready to merge. 




> HasId Step generates incorrect results when given a list of IDs mid-traversal
> -----------------------------------------------------------------------------
>
>                 Key: TINKERPOP-2863
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2863
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.6.2
>            Reporter: Taylor Riggan
>            Priority: Critical
>
> In most situations, hasId() will accept a list of potential IDs to filter on 
> and implicitly use within() filtering semantics to return the correct 
> results.  Examples:
> {code:java}
> g.V().hasId(['1','2'])
> {code}
> returns:
> {code:java}
> [v[1], v[2]]{code}
> or
> {code:java}
> g.E().hasId(['5140','5261']){code}
> returns:
> {code:java}
> [e[5140][1-route->51], e[5261][1-route->398]]{code}
> However, when using the same form of semantics mid-traversal, both of these 
> queries return empty results:
> {code:java}
> g.V().has('code','ATL').outE('route').hasId(['5140','5261'])
> g.V().has('code','ATL').outE('route').inV().hasId(['2','3'])
> {code}
> When using profile() against both queries, the hasId() bytecode gets 
> transformed into
> {code:java}
> HasStep([~id.eq([5140, 5261])]) {code}
> This equates to finding a vertex or edge with an ID that matches the entire 
> list instead of the elements within the list.
> The preceding was tested against Gremlin Server 3.6.2 with the Airroutes 
> dataset.



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

Reply via email to