You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Taylor Riggan (Jira)" <ji...@apache.org> on 2023/02/01 17:47:00 UTC
[jira] [Created] (TINKERPOP-2863) HasId Step generates incorrect results when given a list of IDs mid-traversal
Taylor Riggan created TINKERPOP-2863:
----------------------------------------
Summary: 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
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)