[ 
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 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.

  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 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