You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Florin Mihaila (JIRA)" <ji...@apache.org> on 2016/10/21 16:27:59 UTC

[jira] [Commented] (TINKERPOP-1484) Bad interaction of long-typed vertex properties with TinkerGraph indexes

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

Florin Mihaila commented on TINKERPOP-1484:
-------------------------------------------

This also affects querying the graph by vertex id. The automatically created id index seems to use longs, leading to vertices queried by id not to be found, unless the key is explicitly marked as long.

In continuation of the previous session:

{noformat}
gremlin> g.V().valueMap(true)
==>[other:[0],prop:[1],id:0,label:vertex]
==>[other:[1],prop:[12345678910],id:3,label:vertex]
gremlin> g.V().hasId(0)
gremlin> g.V().hasId(0L)
==>v[0]
{noformat}

This behaviour is expected based on the above discussion, but I am mentioning this for the benefit of others who may be tripped up by this behaviour.


> Bad interaction of long-typed vertex properties with TinkerGraph indexes
> ------------------------------------------------------------------------
>
>                 Key: TINKERPOP-1484
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1484
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: tinkergraph
>    Affects Versions: 3.2.2, 3.2.3
>         Environment: macOS Sierra (v10.12), jdk 1.8.0_102-b14 
>            Reporter: Florin Mihaila
>            Priority: Minor
>
>     In graphs with indexed properties, queries fail on certain vertices (but not all) with properties of type long.
>     
>     The following code reproduces the bug:
>     
> {code:title=bug.groovy}
>     graph = TinkerGraph.open() 
>     graph.createIndex('other', Vertex.class) // (A)
>     graph.createIndex('prop', Vertex.class)  // (B)
>       
>     v = graph.addVertex()
>     v.property('prop', (long)1)
>     v.property('other', 0)
>       
>     v = graph.addVertex()
>     v.property('prop', 12345678910)
>     v.property('other', 1)
>   
>     g = graph.traversal()
>     {code}
>     
>     The verbatim console session:
>       
>     {noformat}
>     $ bin/gremlin.sh bug.groovy
>       
>              \,,,/
>              (o o)
>     -----oOOo-(3)-oOOo-----
>     plugin activated: tinkerpop.server
>     plugin activated: tinkerpop.utilities
>     plugin activated: tinkerpop.tinkergraph
>     gremlin> g.V().valueMap()
>     ==>[other:[0],prop:[1]]
>     ==>[other:[1],prop:[12345678910]]
>     gremlin> g.V().has('prop', 1)   // (1)
>     gremlin> g.V().has('prop', (long)1)   // (2) 
>     ==>v[0]
>     gremlin> g.V().has('other', 0).has('prop', 1) // (3)
>     ==>v[0]    
>     gremlin> g.V().has('prop', 12345678910) // (4)
>     ==>v[3]
>     gremlin> 
>       
>     {noformat}  
>       
>     h4. Observations:
>     1. The node is _not_ found, although it's there.
>     2. The node _is_ found if the property value is explicitly cast to long.
>     3. The node _is_ found if the graph is queried on another indexed property first.
>     4. The node _is_ found if the property value is wider than an int.
>     
>     h4. Variations:
>     v1. If the 'other' property is not indexed (line A), query (2) fails.
>     v2. If the 'prop' property is not indexed (line B), all queries succeed!
>       
>     Tested on freshly built tinkerpop distributions, versions 3.2.2 and 3.2.3.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)