use of org.neo4j.internal.kernel.api.TokenWrite in project neo4j by neo4j.
the class CachingExpandIntoTest method shouldBeAbleToPreformAllCursorMethodsFromReused.
@Test
void shouldBeAbleToPreformAllCursorMethodsFromReused() throws KernelException {
// given
long start, end, r1, r2, r3;
int t1, t2, t3;
int prop;
try (KernelTransaction tx = transaction()) {
start = nodeWithDegree(tx, 43);
end = nodeWithDegree(tx, 11);
TokenWrite tokenWrite = tx.tokenWrite();
t1 = tokenWrite.relationshipTypeGetOrCreateForName("R1");
t2 = tokenWrite.relationshipTypeGetOrCreateForName("R2");
t3 = tokenWrite.relationshipTypeGetOrCreateForName("R3");
prop = tokenWrite.propertyKeyGetOrCreateForName("prop");
Write write = tx.dataWrite();
r1 = write.relationshipCreate(start, t1, end);
r2 = write.relationshipCreate(start, t2, end);
r3 = write.relationshipCreate(end, t3, start);
write.relationshipSetProperty(r1, prop, stringValue("Relationship 1"));
write.relationshipSetProperty(r2, prop, stringValue("Relationship 2"));
write.relationshipSetProperty(r3, prop, stringValue("Relationship 3"));
tx.commit();
}
try (KernelTransaction tx = transaction();
NodeCursor nodes = tx.cursors().allocateNodeCursor(tx.cursorContext());
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(tx.cursorContext());
PropertyCursor properties = tx.cursors().allocatePropertyCursor(tx.cursorContext(), tx.memoryTracker())) {
int[] types = { t2, t3 };
CachingExpandInto expandInto = new CachingExpandInto(tx.dataRead(), INCOMING, MEMORY_TRACKER);
// Find r3 first time
RelationshipTraversalCursor cursor = expandInto.connectingRelationships(nodes, traversal, start, types, end);
assertTrue(cursor.next());
assertThat(cursor.relationshipReference()).isEqualTo(r3);
assertThat(cursor.sourceNodeReference()).isEqualTo(end);
assertThat(cursor.targetNodeReference()).isEqualTo(start);
assertThat(cursor.otherNodeReference()).isEqualTo(start);
assertThat(cursor.type()).isEqualTo(t3);
cursor.properties(properties);
assertTrue(properties.next());
assertThat(properties.propertyValue()).isEqualTo(stringValue("Relationship 3"));
assertFalse(properties.next());
assertFalse(cursor.next());
// Find r3 second time
cursor = expandInto.connectingRelationships(nodes, traversal, start, types, end);
assertTrue(cursor.next());
assertThat(cursor.relationshipReference()).isEqualTo(r3);
assertThat(cursor.sourceNodeReference()).isEqualTo(end);
assertThat(cursor.targetNodeReference()).isEqualTo(start);
assertThat(cursor.otherNodeReference()).isEqualTo(start);
assertThat(cursor.type()).isEqualTo(t3);
cursor.properties(properties);
assertTrue(properties.next());
assertThat(properties.propertyValue()).isEqualTo(stringValue("Relationship 3"));
assertFalse(properties.next());
assertFalse(cursor.next());
// Find r2 first time
cursor = expandInto.connectingRelationships(nodes, traversal, end, types, start);
assertTrue(cursor.next());
assertThat(cursor.relationshipReference()).isEqualTo(r2);
assertThat(cursor.sourceNodeReference()).isEqualTo(start);
assertThat(cursor.targetNodeReference()).isEqualTo(end);
assertThat(cursor.otherNodeReference()).isEqualTo(end);
assertThat(cursor.type()).isEqualTo(t2);
cursor.properties(properties);
assertTrue(properties.next());
assertThat(properties.propertyValue()).isEqualTo(stringValue("Relationship 2"));
assertFalse(properties.next());
assertFalse(cursor.next());
// Find r2 second time
cursor = expandInto.connectingRelationships(nodes, traversal, end, types, start);
assertTrue(cursor.next());
assertThat(cursor.relationshipReference()).isEqualTo(r2);
assertThat(cursor.sourceNodeReference()).isEqualTo(start);
assertThat(cursor.targetNodeReference()).isEqualTo(end);
assertThat(cursor.otherNodeReference()).isEqualTo(end);
assertThat(cursor.type()).isEqualTo(t2);
cursor.properties(properties);
assertTrue(properties.next());
assertThat(properties.propertyValue()).isEqualTo(stringValue("Relationship 2"));
assertFalse(properties.next());
assertFalse(cursor.next());
}
}
use of org.neo4j.internal.kernel.api.TokenWrite in project neo4j by neo4j.
the class CachingExpandIntoTest method shouldBeAbleToReuseWithoutTypes.
@Test
void shouldBeAbleToReuseWithoutTypes() throws KernelException {
// given
long start, end, r1, r2, r3;
int t1, t2, t3;
try (KernelTransaction tx = transaction()) {
start = nodeWithDegree(tx, 43);
end = nodeWithDegree(tx, 11);
TokenWrite tokenWrite = tx.tokenWrite();
t1 = tokenWrite.relationshipTypeGetOrCreateForName("R1");
t2 = tokenWrite.relationshipTypeGetOrCreateForName("R2");
t3 = tokenWrite.relationshipTypeGetOrCreateForName("R3");
Write write = tx.dataWrite();
r1 = write.relationshipCreate(start, t1, end);
r2 = write.relationshipCreate(start, t2, end);
r3 = write.relationshipCreate(end, t3, start);
tx.commit();
}
try (KernelTransaction tx = transaction();
NodeCursor nodeCursor = tx.cursors().allocateNodeCursor(tx.cursorContext());
RelationshipTraversalCursor traversalCursor = tx.cursors().allocateRelationshipTraversalCursor(tx.cursorContext())) {
CachingExpandInto expandInto = new CachingExpandInto(tx.dataRead(), OUTGOING, MEMORY_TRACKER);
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, start, null, end))).isEqualTo(immutable.of(r1, r2));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, end, null, start))).isEqualTo(immutable.of(r3));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, start, null, end))).isEqualTo(immutable.of(r1, r2));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, end, null, start))).isEqualTo(immutable.of(r3));
}
}
use of org.neo4j.internal.kernel.api.TokenWrite in project neo4j by neo4j.
the class CachingExpandIntoTest method shouldBeAbleToReuseWithTypes.
@Test
void shouldBeAbleToReuseWithTypes() throws KernelException {
// given
long start, end, r1, r3;
int t1, t2, t3;
try (KernelTransaction tx = transaction()) {
start = nodeWithDegree(tx, 43);
end = nodeWithDegree(tx, 11);
TokenWrite tokenWrite = tx.tokenWrite();
t1 = tokenWrite.relationshipTypeGetOrCreateForName("R1");
t2 = tokenWrite.relationshipTypeGetOrCreateForName("R2");
t3 = tokenWrite.relationshipTypeGetOrCreateForName("R3");
Write write = tx.dataWrite();
r1 = write.relationshipCreate(start, t1, end);
write.relationshipCreate(start, t2, end);
r3 = write.relationshipCreate(end, t3, start);
tx.commit();
}
try (KernelTransaction tx = transaction();
NodeCursor nodeCursor = tx.cursors().allocateNodeCursor(tx.cursorContext());
RelationshipTraversalCursor traversalCursor = tx.cursors().allocateRelationshipTraversalCursor(tx.cursorContext())) {
int[] types = { t1, t3 };
CachingExpandInto expandInto = new CachingExpandInto(tx.dataRead(), OUTGOING, MEMORY_TRACKER);
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, start, types, end))).isEqualTo(immutable.of(r1));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, end, types, start))).isEqualTo(immutable.of(r3));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, start, types, end))).isEqualTo(immutable.of(r1));
assertThat(toSet(expandInto.connectingRelationships(nodeCursor, traversalCursor, end, types, start))).isEqualTo(immutable.of(r3));
}
}
use of org.neo4j.internal.kernel.api.TokenWrite in project neo4j by neo4j.
the class CompositeIndexingIT method setup.
@BeforeEach
void setup() throws Exception {
try (Transaction tx = graphDatabaseAPI.beginTx()) {
KernelTransaction ktx = ((InternalTransaction) tx).kernelTransaction();
TokenWrite tokenWrite = ktx.tokenWrite();
tokenWrite.labelGetOrCreateForName("Label0");
labelId = tokenWrite.labelGetOrCreateForName("Label1");
tokenWrite.relationshipTypeGetOrCreateForName("Type0");
tokenWrite.relationshipTypeGetOrCreateForName("Type1");
relTypeId = tokenWrite.relationshipTypeGetOrCreateForName("Type2");
propIds = new int[10];
for (int i = 0; i < propIds.length; i++) {
propIds[i] = tokenWrite.propertyKeyGetOrCreateForName("prop" + i);
}
tx.commit();
}
}
Aggregations