Search in sources :

Example 1 with Write

use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.

the class CachingExpandIntoTest method shouldComputeDegreeWithType.

@Test
void shouldComputeDegreeWithType() throws Exception {
    // GIVEN
    long node;
    int in, out, loop;
    try (KernelTransaction tx = transaction()) {
        Write write = tx.dataWrite();
        node = denseNode(tx);
        TokenWrite tokenWrite = tx.tokenWrite();
        out = tokenWrite.relationshipTypeGetOrCreateForName("OUT");
        in = tokenWrite.relationshipTypeGetOrCreateForName("IN");
        loop = tokenWrite.relationshipTypeGetOrCreateForName("LOOP");
        write.relationshipCreate(node, out, write.nodeCreate());
        write.relationshipCreate(node, out, write.nodeCreate());
        write.relationshipCreate(write.nodeCreate(), in, node);
        write.relationshipCreate(node, loop, node);
        tx.commit();
    }
    try (KernelTransaction tx = transaction()) {
        Read read = tx.dataRead();
        CursorFactory cursors = tx.cursors();
        try (NodeCursor nodes = cursors.allocateNodeCursor(tx.cursorContext())) {
            CachingExpandInto expand = new CachingExpandInto(tx.dataRead(), OUTGOING, MEMORY_TRACKER);
            read.singleNode(node, nodes);
            assertThat(nodes.next()).isEqualTo(true);
            assertThat(nodes.supportsFastDegreeLookup()).isEqualTo(true);
            Degrees degrees = nodes.degrees(ALL_RELATIONSHIPS);
            assertThat(degrees.outgoingDegree(out)).isEqualTo(2);
            assertThat(degrees.outgoingDegree(in)).isEqualTo(0);
            assertThat(degrees.outgoingDegree(loop)).isEqualTo(1);
            assertThat(degrees.incomingDegree(out)).isEqualTo(0);
            assertThat(degrees.incomingDegree(in)).isEqualTo(1);
            assertThat(degrees.incomingDegree(loop)).isEqualTo(1);
            assertThat(degrees.totalDegree(out)).isEqualTo(2);
            assertThat(degrees.totalDegree(in)).isEqualTo(1);
            assertThat(degrees.totalDegree(loop)).isEqualTo(1);
        }
    }
}
Also used : TokenWrite(org.neo4j.internal.kernel.api.TokenWrite) Write(org.neo4j.internal.kernel.api.Write) Read(org.neo4j.internal.kernel.api.Read) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) CursorFactory(org.neo4j.internal.kernel.api.CursorFactory) Degrees(org.neo4j.storageengine.api.Degrees) TokenWrite(org.neo4j.internal.kernel.api.TokenWrite) NodeCursor(org.neo4j.internal.kernel.api.NodeCursor) Test(org.junit.jupiter.api.Test)

Example 2 with Write

use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.

the class ParallelNodeCursorTransactionStateTestBase method createNodes.

private MutableLongSet createNodes(int size) throws TransactionFailureException, InvalidTransactionTypeKernelException {
    MutableLongSet nodes = LongSets.mutable.empty();
    try (KernelTransaction tx = beginTransaction()) {
        Write write = tx.dataWrite();
        for (int i = 0; i < size; i++) {
            nodes.add(write.nodeCreate());
        }
        tx.commit();
    }
    return nodes;
}
Also used : Write(org.neo4j.internal.kernel.api.Write) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) MutableLongSet(org.eclipse.collections.api.set.primitive.MutableLongSet)

Example 3 with Write

use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.

the class ParallelNodeLabelScanTestBase method createTestGraph.

@Override
public void createTestGraph(GraphDatabaseService graphDb) {
    MutableLongSet fooNodes = LongSets.mutable.empty();
    MutableLongSet barNodes = LongSets.mutable.empty();
    try (KernelTransaction tx = beginTransaction()) {
        TokenWrite tokenWrite = tx.tokenWrite();
        FOO_LABEL = tokenWrite.labelGetOrCreateForName("foo");
        BAR_LABEL = tokenWrite.labelGetOrCreateForName("bar");
        Write write = tx.dataWrite();
        for (int i = 0; i < NUMBER_OF_NODES; i++) {
            long node = write.nodeCreate();
            if (i % 2 == 0) {
                write.nodeAddLabel(node, FOO_LABEL);
                fooNodes.add(node);
            } else {
                write.nodeAddLabel(node, BAR_LABEL);
                barNodes.add(node);
            }
        }
        FOO_NODES = fooNodes;
        BAR_NODES = barNodes;
        tx.commit();
    } catch (KernelException e) {
        throw new AssertionError(e);
    }
}
Also used : TokenWrite(org.neo4j.internal.kernel.api.TokenWrite) Write(org.neo4j.internal.kernel.api.Write) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) MutableLongSet(org.eclipse.collections.api.set.primitive.MutableLongSet) TokenWrite(org.neo4j.internal.kernel.api.TokenWrite) KernelException(org.neo4j.exceptions.KernelException)

Example 4 with Write

use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.

the class ParallelNodeLabelScanTransactionStateTestBase method createNodesWithLabel.

private LongList createNodesWithLabel(int label, int size) throws KernelException {
    LongList ids;
    try (KernelTransaction tx = beginTransaction()) {
        Write write = tx.dataWrite();
        ids = createNodesWithLabel(write, label, size);
        tx.commit();
    }
    return ids;
}
Also used : Write(org.neo4j.internal.kernel.api.Write) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) LongList(org.eclipse.collections.api.list.primitive.LongList) MutableLongList(org.eclipse.collections.api.list.primitive.MutableLongList)

Example 5 with Write

use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.

the class ParallelNodeLabelScanTransactionStateTestBase method scanShouldNotSeeDeletedNode.

@Test
void scanShouldNotSeeDeletedNode() throws Exception {
    int size = 1000;
    Set<Long> created = new HashSet<>(size);
    Set<Long> deleted = new HashSet<>(size);
    int label = label("L");
    try (KernelTransaction tx = beginTransaction()) {
        Write write = tx.dataWrite();
        for (int i = 0; i < size; i++) {
            long createId = write.nodeCreate();
            long deleteId = write.nodeCreate();
            write.nodeAddLabel(createId, label);
            write.nodeAddLabel(deleteId, label);
            created.add(createId);
            deleted.add(deleteId);
        }
        tx.commit();
    }
    try (KernelTransaction tx = beginTransaction()) {
        for (long delete : deleted) {
            tx.dataWrite().nodeDelete(delete);
        }
        try (NodeLabelIndexCursor cursor = tx.cursors().allocateNodeLabelIndexCursor(tx.cursorContext())) {
            Scan<NodeLabelIndexCursor> scan = tx.dataRead().nodeLabelScan(label);
            Set<Long> seen = new HashSet<>();
            while (scan.reserveBatch(cursor, 128)) {
                while (cursor.next()) {
                    long nodeId = cursor.nodeReference();
                    assertTrue(seen.add(nodeId));
                    assertTrue(created.remove(nodeId));
                }
            }
            assertTrue(created.isEmpty());
        }
    }
}
Also used : Write(org.neo4j.internal.kernel.api.Write) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) NodeLabelIndexCursor(org.neo4j.internal.kernel.api.NodeLabelIndexCursor) HashSet(java.util.HashSet) Test(org.junit.jupiter.api.Test)

Aggregations

Write (org.neo4j.internal.kernel.api.Write)67 KernelTransaction (org.neo4j.kernel.api.KernelTransaction)54 Test (org.junit.jupiter.api.Test)47 TokenWrite (org.neo4j.internal.kernel.api.TokenWrite)18 NodeCursor (org.neo4j.internal.kernel.api.NodeCursor)17 Read (org.neo4j.internal.kernel.api.Read)17 RelationshipScanCursor (org.neo4j.internal.kernel.api.RelationshipScanCursor)16 RelationshipTraversalCursor (org.neo4j.internal.kernel.api.RelationshipTraversalCursor)10 CursorFactory (org.neo4j.internal.kernel.api.CursorFactory)9 Degrees (org.neo4j.storageengine.api.Degrees)9 LongList (org.eclipse.collections.api.list.primitive.LongList)8 ExecutorService (java.util.concurrent.ExecutorService)7 MutableLongSet (org.eclipse.collections.api.set.primitive.MutableLongSet)7 LongArrayList (org.eclipse.collections.impl.list.mutable.primitive.LongArrayList)7 PropertyCursor (org.neo4j.internal.kernel.api.PropertyCursor)7 Value (org.neo4j.values.storable.Value)7 KernelException (org.neo4j.exceptions.KernelException)5 SchemaWrite (org.neo4j.internal.kernel.api.SchemaWrite)5 ArrayList (java.util.ArrayList)4 Future (java.util.concurrent.Future)4