Skip to content

Commit c8b49cc

Browse files
Store relationship id contexts as list
1 parent f244d7d commit c8b49cc

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

cypher/api/storage-engine-adapter/src/main/java/org/neo4j/gds/storageengine/InMemoryRelationshipCursor.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,13 @@
3434
import org.neo4j.token.TokenHolders;
3535

3636
import java.util.Arrays;
37+
import java.util.List;
3738

3839
public abstract class InMemoryRelationshipCursor extends RelationshipRecord implements RelationshipVisitor<RuntimeException>, StorageRelationshipCursor {
3940

4041
protected final CypherGraphStore graphStore;
4142
protected final TokenHolders tokenHolders;
42-
private final RelationshipIds.RelationshipIdContext[] relationshipIdContexts;
43+
private final List<RelationshipIds.RelationshipIdContext> relationshipIdContexts;
4344
private final AdjacencyCursor[] adjacencyCursorCache;
4445
private final PropertyCursor[][] propertyCursorCache;
4546

@@ -59,11 +60,11 @@ public InMemoryRelationshipCursor(CypherGraphStore graphStore, TokenHolders toke
5960
this.graphStore = graphStore;
6061
this.tokenHolders = tokenHolders;
6162
this.relationshipIdContexts = this.graphStore.relationshipIds().relationshipIdContexts();
62-
this.adjacencyCursorCache = Arrays.stream(relationshipIdContexts)
63+
this.adjacencyCursorCache = relationshipIdContexts.stream()
6364
.map(context -> context.adjacencyList().rawAdjacencyCursor())
6465
.toArray(AdjacencyCursor[]::new);
6566

66-
this.propertyCursorCache = Arrays.stream(relationshipIdContexts)
67+
this.propertyCursorCache = relationshipIdContexts.stream()
6768
.map(context -> Arrays
6869
.stream(context.adjacencyProperties())
6970
.map(AdjacencyProperties::rawPropertyCursor)
@@ -96,7 +97,7 @@ public long targetNodeReference() {
9697

9798
@Override
9899
public boolean hasProperties() {
99-
return relationshipIdContexts[relationshipContextIndex].graph().hasRelationshipProperty();
100+
return relationshipIdContexts.get(relationshipContextIndex).graph().hasRelationshipProperty();
100101
}
101102

102103
@Override
@@ -160,15 +161,15 @@ public void properties(StoragePropertyCursor propertyCursor, InMemoryPropertySel
160161
private boolean progressToNextContext() {
161162
relationshipContextIndex++;
162163

163-
if (relationshipContextIndex >= relationshipIdContexts.length) {
164+
if (relationshipContextIndex >= relationshipIdContexts.size()) {
164165
return false;
165166
}
166167

167168
if (relationshipContextIndex > 0) {
168-
relationshipTypeOffset += relationshipIdContexts[relationshipContextIndex - 1].relationshipCount();
169+
relationshipTypeOffset += relationshipIdContexts.get(relationshipContextIndex - 1).relationshipCount();
169170
}
170171

171-
var context = relationshipIdContexts[relationshipContextIndex];
172+
var context = relationshipIdContexts.get(relationshipContextIndex);
172173

173174
if (!selection.test(context.relationshipTypeId())) {
174175
return progressToNextContext();

cypher/cypher-core/src/main/java/org/neo4j/gds/core/cypher/RelationshipIds.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.core.cypher;
2121

22-
import org.apache.commons.lang3.mutable.MutableInt;
2322
import org.immutables.value.Value;
2423
import org.neo4j.gds.RelationshipType;
2524
import org.neo4j.gds.annotation.ValueClass;
@@ -32,18 +31,18 @@
3231
import org.neo4j.gds.core.utils.paged.HugeLongArray;
3332
import org.neo4j.token.TokenHolders;
3433

34+
import java.util.ArrayList;
3535
import java.util.List;
3636
import java.util.stream.Collectors;
3737

3838
import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
3939

4040
public final class RelationshipIds {
4141

42-
private final RelationshipIdContext[] relationshipIdContexts;
42+
private final List<RelationshipIdContext> relationshipIdContexts;
4343

4444
static RelationshipIds fromGraphStore(GraphStore graphStore, TokenHolders tokenHolders) {
45-
var relationshipIdContexts = new RelationshipIdContext[graphStore.relationshipTypes().size()];
46-
var index = new MutableInt(0);
45+
var relationshipIdContexts = new ArrayList<RelationshipIdContext>(graphStore.relationshipTypes().size());
4746

4847
graphStore.relationshipTypes().forEach(relType -> {
4948
var relCount = graphStore.relationshipCount(relType);
@@ -68,16 +67,16 @@ static RelationshipIds fromGraphStore(GraphStore graphStore, TokenHolders tokenH
6867
.map(relationshipProperty -> relationshipProperty.values().propertiesList())
6968
.toArray(AdjacencyProperties[]::new);
7069

71-
relationshipIdContexts[index.getAndIncrement()] = ImmutableRelationshipIdContext.of(relType, relTypeId, relCount, graph, offsets, propertyIds, adjacencyProperties);
70+
relationshipIdContexts.add(ImmutableRelationshipIdContext.of(relType, relTypeId, relCount, graph, offsets, propertyIds, adjacencyProperties));
7271
});
7372
return new RelationshipIds(relationshipIdContexts);
7473
}
7574

76-
private RelationshipIds(RelationshipIdContext[] relationshipIdContexts) {
75+
private RelationshipIds(List<RelationshipIdContext> relationshipIdContexts) {
7776
this.relationshipIdContexts = relationshipIdContexts;
7877
}
7978

80-
public RelationshipIdContext[] relationshipIdContexts() {
79+
public List<RelationshipIdContext> relationshipIdContexts() {
8180
return relationshipIdContexts;
8281
}
8382

0 commit comments

Comments
 (0)