Zheng Qin created TINKERPOP-2604:
------------------------------------

             Summary: TinkerGraph could not order vertex/edge without specified 
property.
                 Key: TINKERPOP-2604
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2604
             Project: TinkerPop
          Issue Type: Bug
          Components: tinkergraph
    Affects Versions: 3.4.10
         Environment: Version: 3.4.10
OS : CentOS8
Storage Backend: in-memory
            Reporter: Zheng Qin


h2. TinkerGraph could not order vertex/edge without specified property
h3. Environment
bq. Version: 3.4.10
bq.OS : CentOS8
bq.Storage Backend: in-memory
h3. Bug description
We expect to get the vertexes/edges ordered by their ID using gremlin *order* 
query without specified property like `"g.V()/E().order().by(asc/desc)"` in 
TinkerGraph, as we can get the result by the same query in JanusGraph.
h3. Current behavior
An exception was thrown:

{code:java}
java.util.concurrent.ExecutionException: 
org.apache.tinkerpop.gremlin.driver.exception.ResponseException: 
org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex cannot be cast 
to java.lang.Comparable
        at 
java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
        at 
java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
        at 
org.gdbtesting.validation.ValidateTinkerOrderAsc.main(ValidateTinkerOrderAsc.java:27)
Caused by: org.apache.tinkerpop.gremlin.driver.exception.ResponseException: 
org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex cannot be cast 
to java.lang.Comparable
{code}
h3. Reproduce

{code:java}
GraphTraversalSource g = connection.getG();
g.E().drop().iterate();
g.V().drop().iterate();
try {
    Vertex v1 = g.addV().property("price",3).next();
    Vertex v2 = g.addV().property("price",4).next();
    Vertex v3 = g.addV().property("price",5).next();
    Vertex v4 = g.addV().property("price",6).next();

    String query = "g.V().order().by(asc)";
    System.out.println("query: " + query);
    try{
         List<Result> results;
         results = connection.getClient().submit(query).all().get();
         for (Result r : results) {

             System.out.println(r);

          }
        }catch(Exception e){
             e.printStackTrace();
        }

     } catch (Exception e) {
          e.printStackTrace();
} finally {
     System.exit(0);
}
{code}
We could successfully run the *order()* step with specified property in 
TinkerGraph, like using "g.V().id().order().by(asc)" to get vertexes ordered by 
vertex ID. We bring up the issue for we are wondering whether query without 
specified property, like "g.V()/E().order().by(asc/desc)", is grammatically 
correct or not, as we find it could be accepted in JanusGraph while get 
exception above in TinkerGraph.






--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to