Uploaded image for project: 'TinkerPop'
  1. TinkerPop
  2. TINKERPOP-1484

Bad interaction of long-typed vertex properties with TinkerGraph indexes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Invalid
    • 3.2.2, 3.2.3
    • None
    • tinkergraph
    • None
    • macOS Sierra (v10.12), jdk 1.8.0_102-b14

    Description

      In graphs with indexed properties, queries fail on certain vertices (but not all) with properties of type long.

      The following code reproduces the bug:

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

      The verbatim console session:

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

      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.

      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.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              fm@objectline.com Florin Mihaila
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: