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

Taylor Riggan updated TINKERPOP-2863:
-------------------------------------
    Description: 
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 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.

  was:
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 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.


> 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
>    Affects Versions: 3.6.2
>            Reporter: Taylor Riggan
>            Priority: Major
>
> 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 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