diff --git a/janusgraph-backend-testutils/src/main/java/org/janusgraph/graphdb/JanusGraphIndexTest.java b/janusgraph-backend-testutils/src/main/java/org/janusgraph/graphdb/JanusGraphIndexTest.java index 19c897ea39..ce98558f6d 100644 --- a/janusgraph-backend-testutils/src/main/java/org/janusgraph/graphdb/JanusGraphIndexTest.java +++ b/janusgraph-backend-testutils/src/main/java/org/janusgraph/graphdb/JanusGraphIndexTest.java @@ -4434,4 +4434,31 @@ public void testGetIndexInfo() throws DecoderException { assertEquals(1, indexInfo.getCompositeIndexType().getInlineFieldKeys().length); assertEquals("id", indexInfo.getCompositeIndexType().getInlineFieldKeys()[0]); } + + @Test + public void testOrderingListProperty() { + PropertyKey strSingle = mgmt.makePropertyKey("strSingle").dataType(String.class).cardinality(Cardinality.SINGLE) + .make(); + PropertyKey strList = mgmt.makePropertyKey("strList").dataType(String.class).cardinality(Cardinality.LIST) + .make(); + + mgmt.buildIndex("mixedStrSingle", Vertex.class).addKey(strSingle, Mapping.STRING.asParameter()) + .buildMixedIndex(INDEX); + mgmt.buildIndex("mixedStrList", Vertex.class).addKey( + strList, Mapping.STRING.asParameter()) + .buildMixedIndex(INDEX); + finishSchema(); + + tx.addVertex("strSingle", "val1", "strList", "val1"); + tx.addVertex("strSingle", "val2"); + tx.addVertex("strList", "val3"); + tx.addVertex("strSingle", "val4", "strList", "val4", "strList", "val5", "strList", "val6"); + tx.addVertex("strSingle", "val7", "strList", "val7"); + tx.commit(); + + clopen(option(FORCE_INDEX_USAGE), false); + + assertEquals(4, tx.traversal().V().has("strSingle").order().by("strSingle").count().next()); + assertEquals(4, tx.traversal().V().has("strList").order().by("strList").count().next()); + } } diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/query/graph/GraphCentricQueryBuilder.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/query/graph/GraphCentricQueryBuilder.java index bfc51f394b..ab55289250 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/query/graph/GraphCentricQueryBuilder.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/query/graph/GraphCentricQueryBuilder.java @@ -15,7 +15,6 @@ package org.janusgraph.graphdb.query.graph; import com.google.common.base.Preconditions; -import org.janusgraph.core.Cardinality; import org.janusgraph.core.JanusGraphEdge; import org.janusgraph.core.JanusGraphElement; import org.janusgraph.core.JanusGraphQuery; @@ -201,8 +200,6 @@ public GraphCentricQueryBuilder orderBy(String keyName, org.apache.tinkerpop.gr Preconditions.checkArgument(key!=null && order!=null,"Need to specify and key and an order"); Preconditions.checkArgument(Comparable.class.isAssignableFrom(key.dataType()), "Can only order on keys with comparable data type. [%s] has datatype [%s]", key.name(), key.dataType()); - Preconditions.checkArgument(key.cardinality()== Cardinality.SINGLE, - "Ordering is undefined on multi-valued key [%s]", key.name()); Preconditions.checkArgument(!orders.containsKey(key), "orders [%s] already contains key [%s]", orders, key); orders.add(key, Order.convert(order)); return this; diff --git a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/step/HasStepFolder.java b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/step/HasStepFolder.java index bcf6d78444..c96485cd3b 100644 --- a/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/step/HasStepFolder.java +++ b/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/step/HasStepFolder.java @@ -37,7 +37,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.AndP; import org.apache.tinkerpop.gremlin.process.traversal.util.ConnectiveP; import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper; -import org.janusgraph.core.Cardinality; import org.janusgraph.core.JanusGraphTransaction; import org.janusgraph.core.PropertyKey; import org.janusgraph.graphdb.query.JanusGraphPredicateUtils; @@ -120,8 +119,7 @@ static boolean validJanusGraphOrder(OrderGlobalStep orderGlobalStep, Traversal r final JanusGraphTransaction tx = JanusGraphTraversalUtil.getTx(rootTraversal.asAdmin()); final PropertyKey pKey = tx.getPropertyKey(key); if (pKey == null - || !(Comparable.class.isAssignableFrom(pKey.dataType())) - || (isVertexOrder && pKey.cardinality() != Cardinality.SINGLE)) { + || !(Comparable.class.isAssignableFrom(pKey.dataType()))) { return false; } }