Search in sources :

Example 1 with ASC

use of com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC in project grakn by graknlabs.

the class RocksIteratorTest method attributesRetrievedAscending.

@Test
public void attributesRetrievedAscending() {
    List<String> strings = new ArrayList<>();
    for (int i = 0; i < 10_000; i++) {
        strings.add(UUID.randomUUID().toString());
    }
    try (TypeDB.Transaction transaction = session.transaction(WRITE)) {
        AttributeType.String stringValueType = transaction.concepts().getAttributeType("string-value").asString();
        for (String string : strings) {
            stringValueType.put(string);
        }
        transaction.commit();
    }
    // test ascending order
    strings.sort(Comparator.naturalOrder());
    try (CoreTransaction transaction = session.transaction(READ)) {
        Storage.Data storage = transaction.graphMgr.data().storage();
        AttributeType.String stringValueType = transaction.concepts().getAttributeType("string-value").asString();
        VertexIID.Type iid = ((AttributeTypeImpl) stringValueType).vertex.iid();
        Storage.Key.Prefix<VertexIID.Thing> iteratePrefix = VertexIID.Thing.Attribute.String.prefix(iid);
        List<String> values = storage.iterate(iteratePrefix, ASC).map(kv -> kv.key().asAttribute().asString().value()).toList();
        assertEquals(strings, values);
    }
    // test descending order
    strings.sort(Comparator.reverseOrder());
    try (CoreTransaction transaction = session.transaction(READ)) {
        Storage.Data storage = transaction.graphMgr.data().storage();
        AttributeType.String stringValueType = transaction.concepts().getAttributeType("string-value").asString();
        VertexIID.Type iid = ((AttributeTypeImpl) stringValueType).vertex.iid();
        Storage.Key.Prefix<VertexIID.Thing> iteratePrefix = VertexIID.Thing.Attribute.String.prefix(iid);
        List<String> values = storage.iterate(iteratePrefix, DESC).map(kv -> kv.key().asAttribute().asString().value()).toList();
        assertEquals(strings, values);
    }
}
Also used : BeforeClass(org.junit.BeforeClass) WRITE(com.vaticle.typedb.core.common.parameters.Arguments.Transaction.Type.WRITE) Factory(com.vaticle.typedb.core.database.Factory) MB(com.vaticle.typedb.core.common.collection.Bytes.MB) ASC(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC) DESC(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.DESC) Arguments(com.vaticle.typedb.core.common.parameters.Arguments) ArrayList(java.util.ArrayList) Storage(com.vaticle.typedb.core.graph.common.Storage) AttributeTypeImpl(com.vaticle.typedb.core.concept.type.impl.AttributeTypeImpl) VertexIID(com.vaticle.typedb.core.graph.iid.VertexIID) READ(com.vaticle.typedb.core.common.parameters.Arguments.Transaction.Type.READ) After(org.junit.After) CoreFactory(com.vaticle.typedb.core.database.CoreFactory) Path(java.nio.file.Path) Before(org.junit.Before) AfterClass(org.junit.AfterClass) CoreDatabaseManager(com.vaticle.typedb.core.database.CoreDatabaseManager) Options(com.vaticle.typedb.core.common.parameters.Options) Test(org.junit.Test) IOException(java.io.IOException) UUID(java.util.UUID) TypeDB(com.vaticle.typedb.core.TypeDB) CoreSession(com.vaticle.typedb.core.database.CoreSession) List(java.util.List) Paths(java.nio.file.Paths) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) Comparator(java.util.Comparator) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Assert.assertEquals(org.junit.Assert.assertEquals) Util(com.vaticle.typedb.core.test.integration.util.Util) ArrayList(java.util.ArrayList) TypeDB(com.vaticle.typedb.core.TypeDB) CoreTransaction(com.vaticle.typedb.core.database.CoreTransaction) Storage(com.vaticle.typedb.core.graph.common.Storage) VertexIID(com.vaticle.typedb.core.graph.iid.VertexIID) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) Test(org.junit.Test)

Example 2 with ASC

use of com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC in project grakn by graknlabs.

the class RelationIterator method createIterator.

private Forwardable<ThingVertex, Order.Asc> createIterator(int pos) {
    StructureEdge<?, ?> edge = edges.get(pos);
    ThingVertex player = answer.get(edge.to().id().asVariable().asRetrievable()).asThing();
    return SortedIterators.Forwardable.merge(iterate(edge.asNative().asRolePlayer().types()).map(roleLabel -> {
        TypeVertex roleVertex = graphMgr.schema().getType(roleLabel);
        return player.ins().edge(ROLEPLAYER, roleVertex).fromAndOptimised().filter(relRole -> relationTypes.contains(relRole.key().type().properLabel()));
    }), ASC).filter(relRole -> !scoped.contains(relRole.value())).mapSorted(relRole -> {
        scoped.record(pos, relRole.value());
        return relRole.key();
    }, relation -> new KeyValue<>(relation, null), ASC);
}
Also used : ILLEGAL_STATE(com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE) KeyValue(com.vaticle.typedb.core.common.collection.KeyValue) Identifier(com.vaticle.typedb.core.traversal.common.Identifier) Order(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order) StructureEdge(com.vaticle.typedb.core.traversal.structure.StructureEdge) HashMap(java.util.HashMap) ASC(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) AbstractFunctionalIterator(com.vaticle.typedb.core.common.iterator.AbstractFunctionalIterator) NoSuchElementException(java.util.NoSuchElementException) Label(com.vaticle.typedb.core.common.parameters.Label) GraphManager(com.vaticle.typedb.core.graph.GraphManager) RelationTraversal(com.vaticle.typedb.core.traversal.RelationTraversal) VertexMap(com.vaticle.typedb.core.traversal.common.VertexMap) FunctionalIterator(com.vaticle.typedb.core.common.iterator.FunctionalIterator) Iterator(java.util.Iterator) Set(java.util.Set) SortedIterators(com.vaticle.typedb.core.common.iterator.sorted.SortedIterators) Vertex(com.vaticle.typedb.core.graph.vertex.Vertex) Forwardable(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) List(java.util.List) Retrievable(com.vaticle.typedb.core.traversal.common.Identifier.Variable.Retrievable) ROLEPLAYER(com.vaticle.typedb.core.graph.common.Encoding.Edge.Thing.Optimised.ROLEPLAYER) Iterators.iterate(com.vaticle.typedb.core.common.iterator.Iterators.iterate) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex)

Example 3 with ASC

use of com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC in project grakn by graknlabs.

the class ThingTypeImpl method ownsAttribute.

private void ownsAttribute(AttributeTypeImpl attributeType) {
    validateIsNotDeleted();
    Forwardable<AttributeType, Order.Asc> owns = getSupertypes().filter(t -> !t.equals(this)).mergeMap(ThingType::getOwns, ASC);
    if (owns.findFirst(attributeType).isPresent()) {
        throw exception(TypeDBException.of(OWNS_ATT_NOT_AVAILABLE, attributeType.getLabel()));
    }
    TypeVertex attVertex = attributeType.vertex;
    TypeEdge keyEdge;
    if ((keyEdge = vertex.outs().edge(OWNS_KEY, attVertex)) != null)
        keyEdge.delete();
    vertex.outs().put(OWNS, attVertex);
}
Also used : TypeEdge(com.vaticle.typedb.core.graph.edge.TypeEdge) INVALID_UNDEFINE_NONEXISTENT_OWNS(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_NONEXISTENT_OWNS) RelationImpl(com.vaticle.typedb.core.concept.thing.impl.RelationImpl) ASC(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC) ThingType(com.vaticle.typedb.core.concept.type.ThingType) Iterators.loop(com.vaticle.typedb.core.common.iterator.Iterators.loop) OWNS_KEY_PRECONDITION_UNIQUENESS(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_KEY_PRECONDITION_UNIQUENESS) FunctionalIterator(com.vaticle.typedb.core.common.iterator.FunctionalIterator) OWNS_KEY_PRECONDITION_NO_INSTANCES(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_KEY_PRECONDITION_NO_INSTANCES) OWNS_KEY_VALUE_TYPE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_KEY_VALUE_TYPE) SUB(com.vaticle.typedb.core.graph.common.Encoding.Edge.Type.SUB) EntityImpl(com.vaticle.typedb.core.concept.thing.impl.EntityImpl) INVALID_UNDEFINE_NONEXISTENT_PLAYS(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_NONEXISTENT_PLAYS) Forwardable(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable) INVALID_UNDEFINE_PLAYS_HAS_INSTANCES(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_PLAYS_HAS_INSTANCES) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) Objects(java.util.Objects) List(java.util.List) ThingImpl(com.vaticle.typedb.core.concept.thing.impl.ThingImpl) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException) PLAYS_ROLE_NOT_AVAILABLE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.PLAYS_ROLE_NOT_AVAILABLE) OVERRIDDEN_NOT_SUPERTYPE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OVERRIDDEN_NOT_SUPERTYPE) Iterators.link(com.vaticle.typedb.core.common.iterator.Iterators.link) INVALID_UNDEFINE_INHERITED_OWNS(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_INHERITED_OWNS) Order(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order) Function(java.util.function.Function) Forwardable.iterateSorted(com.vaticle.typedb.core.common.iterator.sorted.SortedIterators.Forwardable.iterateSorted) INVALID_UNDEFINE_OWNS_HAS_INSTANCES(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_OWNS_HAS_INSTANCES) OWNS_ABSTRACT_ATT_TYPE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_ABSTRACT_ATT_TYPE) Forwardable.emptySorted(com.vaticle.typedb.core.common.iterator.sorted.SortedIterators.Forwardable.emptySorted) OWNS_ATT_NOT_AVAILABLE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_ATT_NOT_AVAILABLE) OWS_KEY_PRECONDITION_OWNERSHIP_KEY_TOO_MANY(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWS_KEY_PRECONDITION_OWNERSHIP_KEY_TOO_MANY) TYPE_HAS_SUBTYPES(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.TYPE_HAS_SUBTYPES) INVALID_UNDEFINE_INHERITED_PLAYS(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_INHERITED_PLAYS) TYPE_HAS_INSTANCES_DELETE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.TYPE_HAS_INSTANCES_DELETE) Encoding(com.vaticle.typedb.core.graph.common.Encoding) Nullable(javax.annotation.Nullable) PLAYS(com.vaticle.typedb.core.graph.common.Encoding.Edge.Type.PLAYS) GraphManager(com.vaticle.typedb.core.graph.GraphManager) UNRECOGNISED_VALUE(com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.UNRECOGNISED_VALUE) OWS_KEY_PRECONDITION_OWNERSHIP_KEY_MISSING(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWS_KEY_PRECONDITION_OWNERSHIP_KEY_MISSING) Iterators(com.vaticle.typedb.core.common.iterator.Iterators) OWNS_KEY(com.vaticle.typedb.core.graph.common.Encoding.Edge.Type.OWNS_KEY) AttributeImpl(com.vaticle.typedb.core.concept.thing.impl.AttributeImpl) RoleType(com.vaticle.typedb.core.concept.type.RoleType) OWNS_KEY_NOT_AVAILABLE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OWNS_KEY_NOT_AVAILABLE) Attribute(com.vaticle.typedb.core.concept.thing.Attribute) Iterators.compareSize(com.vaticle.typedb.core.common.iterator.Iterators.compareSize) PLAYS_ABSTRACT_ROLE_TYPE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.PLAYS_ABSTRACT_ROLE_TYPE) ROOT_TYPE_MUTATION(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.ROOT_TYPE_MUTATION) OWNS(com.vaticle.typedb.core.graph.common.Encoding.Edge.Type.OWNS) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex) Collections(java.util.Collections) TYPE_HAS_INSTANCES_SET_ABSTRACT(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.TYPE_HAS_INSTANCES_SET_ABSTRACT) Type(com.vaticle.typedb.core.concept.type.Type) OVERRIDE_NOT_AVAILABLE(com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OVERRIDE_NOT_AVAILABLE) TypeEdge(com.vaticle.typedb.core.graph.edge.TypeEdge) AttributeType(com.vaticle.typedb.core.concept.type.AttributeType) ThingType(com.vaticle.typedb.core.concept.type.ThingType) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex)

Aggregations

ASC (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC)3 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)2 FunctionalIterator (com.vaticle.typedb.core.common.iterator.FunctionalIterator)2 Forwardable (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable)2 Order (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order)2 AttributeType (com.vaticle.typedb.core.concept.type.AttributeType)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 TypeDB (com.vaticle.typedb.core.TypeDB)1 MB (com.vaticle.typedb.core.common.collection.Bytes.MB)1 KeyValue (com.vaticle.typedb.core.common.collection.KeyValue)1 ILLEGAL_STATE (com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE)1 UNRECOGNISED_VALUE (com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.UNRECOGNISED_VALUE)1 INVALID_UNDEFINE_INHERITED_OWNS (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_INHERITED_OWNS)1 INVALID_UNDEFINE_INHERITED_PLAYS (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_INHERITED_PLAYS)1 INVALID_UNDEFINE_NONEXISTENT_OWNS (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_NONEXISTENT_OWNS)1 INVALID_UNDEFINE_NONEXISTENT_PLAYS (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_NONEXISTENT_PLAYS)1 INVALID_UNDEFINE_OWNS_HAS_INSTANCES (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_OWNS_HAS_INSTANCES)1 INVALID_UNDEFINE_PLAYS_HAS_INSTANCES (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.INVALID_UNDEFINE_PLAYS_HAS_INSTANCES)1 OVERRIDDEN_NOT_SUPERTYPE (com.vaticle.typedb.core.common.exception.ErrorMessage.TypeWrite.OVERRIDDEN_NOT_SUPERTYPE)1