Skip to content

Commit c61a68d

Browse files
committed
Move read.countsForNode/RelationshipWithoutTx to compat
1 parent 3f5ed28 commit c61a68d

File tree

17 files changed

+152
-8
lines changed

17 files changed

+152
-8
lines changed

compatibility/4.4/neo4j-kernel-adapter/src/main/java/org/neo4j/gds/compat/_44/Neo4jProxyImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,16 @@ public long getHighestPossibleRelationshipCount(
546546
return countByIdGenerator(idGeneratorFactory, RecordIdType.RELATIONSHIP).orElseGet(read::relationshipsGetCount);
547547
}
548548

549+
@Override
550+
public long estimateNodeCount(Read read, int label) {
551+
return read.countsForNodeWithoutTxState(label);
552+
}
553+
554+
@Override
555+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
556+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
557+
}
558+
549559
@Override
550560
public String versionLongToString(long storeVersion) {
551561
return MetaDataStore.versionLongToString(storeVersion);

compatibility/5-common/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_5x/CommonNeo4jProxyImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public List<StoreScan<NodeLabelIndexCursor>> entityCursorScan(
177177
int batchSize,
178178
boolean allowPartitionedScan
179179
) {
180-
return PartitionedStoreScan.createScans(transaction, batchSize, labelIds);
180+
return PartitionedStoreScan.createScans(transaction, batchSize, this, labelIds);
181181
}
182182

183183
@Override
@@ -186,7 +186,7 @@ public List<StoreScan<NodeLabelIndexCursor>> partitionedCursorScan(
186186
int batchSize,
187187
int... labelIds
188188
) {
189-
return PartitionedStoreScan.createScans(transaction, batchSize, labelIds);
189+
return PartitionedStoreScan.createScans(transaction, batchSize, this, labelIds);
190190
}
191191

192192
@Override
@@ -264,7 +264,7 @@ public StoreScan<NodeLabelIndexCursor> nodeLabelIndexScan(
264264
int batchSize,
265265
boolean allowPartitionedScan
266266
) {
267-
return PartitionedStoreScan.createScans(transaction, batchSize, labelId).get(0);
267+
return PartitionedStoreScan.createScans(transaction, batchSize, this, labelId).get(0);
268268
}
269269

270270
@Override

compatibility/5-common/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_5x/PartitionedStoreScan.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.neo4j.common.EntityType;
2323
import org.neo4j.exceptions.KernelException;
2424
import org.neo4j.gds.compat.CompatExecutionContext;
25+
import org.neo4j.gds.compat.Neo4jProxyApi;
2526
import org.neo4j.gds.compat.StoreScan;
2627
import org.neo4j.internal.kernel.api.Cursor;
2728
import org.neo4j.internal.kernel.api.NodeLabelIndexCursor;
@@ -49,6 +50,7 @@ public boolean reserveBatch(C cursor, CompatExecutionContext ctx) {
4950
public static List<StoreScan<NodeLabelIndexCursor>> createScans(
5051
KernelTransaction transaction,
5152
int batchSize,
53+
Neo4jProxyApi proxy,
5254
int... labelIds
5355
) {
5456
var indexDescriptor = NodeLabelIndexLookupImpl.findUsableMatchingIndex(
@@ -66,11 +68,11 @@ public static List<StoreScan<NodeLabelIndexCursor>> createScans(
6668
// and use that one as the driving partitioned index scan. The partitions
6769
// of all other partitioned index scans will be aligned to that one.
6870
int maxToken = labelIds[0];
69-
long maxCount = read.countsForNode(labelIds[0]);
71+
long maxCount = proxy.estimateNodeCount(read, labelIds[0]);
7072
int maxIndex = 0;
7173

7274
for (int i = 1; i < labelIds.length; i++) {
73-
long count = read.countsForNode(labelIds[i]);
75+
long count = proxy.estimateNodeCount(read, labelIds[i]);
7476
if (count > maxCount) {
7577
maxCount = count;
7678
maxToken = labelIds[i];

compatibility/5.10/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_510/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.neo4j.graphdb.GraphDatabaseService;
2929
import org.neo4j.internal.kernel.api.Cursor;
3030
import org.neo4j.internal.kernel.api.PartitionedScan;
31+
import org.neo4j.internal.kernel.api.Read;
3132
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3233
import org.neo4j.internal.kernel.api.procs.FieldSignature;
3334
import org.neo4j.internal.kernel.api.procs.ProcedureSignature;
@@ -195,4 +196,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
195196
.map(DatabaseReferenceImpl.Internal::databaseId)
196197
.anyMatch(databaseId::equals);
197198
}
199+
200+
@Override
201+
public long estimateNodeCount(Read read, int label) {
202+
return read.countsForNodeWithoutTxState(label);
203+
}
204+
205+
@Override
206+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
207+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
208+
}
198209
}

compatibility/5.11/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_511/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.neo4j.graphdb.GraphDatabaseService;
2929
import org.neo4j.internal.kernel.api.Cursor;
3030
import org.neo4j.internal.kernel.api.PartitionedScan;
31+
import org.neo4j.internal.kernel.api.Read;
3132
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3233
import org.neo4j.internal.kernel.api.procs.FieldSignature;
3334
import org.neo4j.internal.kernel.api.procs.ProcedureSignature;
@@ -195,4 +196,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
195196
.map(DatabaseReferenceImpl.Internal::databaseId)
196197
.anyMatch(databaseId::equals);
197198
}
199+
200+
@Override
201+
public long estimateNodeCount(Read read, int label) {
202+
return read.countsForNodeWithoutTxState(label);
203+
}
204+
205+
@Override
206+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
207+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
208+
}
198209
}

compatibility/5.12/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_512/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.neo4j.graphdb.GraphDatabaseService;
2929
import org.neo4j.internal.kernel.api.Cursor;
3030
import org.neo4j.internal.kernel.api.PartitionedScan;
31+
import org.neo4j.internal.kernel.api.Read;
3132
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3233
import org.neo4j.internal.kernel.api.procs.FieldSignature;
3334
import org.neo4j.internal.kernel.api.procs.ProcedureSignature;
@@ -195,4 +196,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
195196
.map(DatabaseReferenceImpl.Internal::databaseId)
196197
.anyMatch(databaseId::equals);
197198
}
199+
200+
@Override
201+
public long estimateNodeCount(Read read, int label) {
202+
return read.countsForNodeWithoutTxState(label);
203+
}
204+
205+
@Override
206+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
207+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
208+
}
198209
}

compatibility/5.13/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_513/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.neo4j.graphdb.GraphDatabaseService;
3131
import org.neo4j.internal.kernel.api.Cursor;
3232
import org.neo4j.internal.kernel.api.PartitionedScan;
33+
import org.neo4j.internal.kernel.api.Read;
3334
import org.neo4j.internal.kernel.api.TokenSet;
3435
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3536
import org.neo4j.internal.kernel.api.procs.FieldSignature;
@@ -214,4 +215,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
214215
.map(DatabaseReferenceImpl.Internal::databaseId)
215216
.anyMatch(databaseId::equals);
216217
}
218+
219+
@Override
220+
public long estimateNodeCount(Read read, int label) {
221+
return read.countsForNodeWithoutTxState(label);
222+
}
223+
224+
@Override
225+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
226+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
227+
}
217228
}

compatibility/5.14/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_514/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.neo4j.graphdb.GraphDatabaseService;
3131
import org.neo4j.internal.kernel.api.Cursor;
3232
import org.neo4j.internal.kernel.api.PartitionedScan;
33+
import org.neo4j.internal.kernel.api.Read;
3334
import org.neo4j.internal.kernel.api.TokenSet;
3435
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3536
import org.neo4j.internal.kernel.api.procs.FieldSignature;
@@ -215,4 +216,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
215216
.map(DatabaseReferenceImpl.Internal::databaseId)
216217
.anyMatch(databaseId::equals);
217218
}
219+
220+
@Override
221+
public long estimateNodeCount(Read read, int label) {
222+
return read.countsForNodeWithoutTxState(label);
223+
}
224+
225+
@Override
226+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
227+
return read.countsForRelationshipWithoutTxState(sourceLabel, type, targetLabel);
228+
}
218229
}

compatibility/5.15/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_515/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.neo4j.graphdb.GraphDatabaseService;
3131
import org.neo4j.internal.kernel.api.Cursor;
3232
import org.neo4j.internal.kernel.api.PartitionedScan;
33+
import org.neo4j.internal.kernel.api.Read;
3334
import org.neo4j.internal.kernel.api.TokenSet;
3435
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3536
import org.neo4j.internal.kernel.api.procs.FieldSignature;
@@ -220,4 +221,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
220221
.map(DatabaseReferenceImpl.Internal::databaseId)
221222
.anyMatch(databaseId::equals);
222223
}
224+
225+
@Override
226+
public long estimateNodeCount(Read read, int label) {
227+
return read.estimateCountsForNode(label);
228+
}
229+
230+
@Override
231+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
232+
return read.estimateCountsForRelationships(sourceLabel, type, targetLabel);
233+
}
223234
}

compatibility/5.16/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_516/Neo4jProxyImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.neo4j.graphdb.GraphDatabaseService;
3131
import org.neo4j.internal.kernel.api.Cursor;
3232
import org.neo4j.internal.kernel.api.PartitionedScan;
33+
import org.neo4j.internal.kernel.api.Read;
3334
import org.neo4j.internal.kernel.api.TokenSet;
3435
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3536
import org.neo4j.internal.kernel.api.procs.FieldSignature;
@@ -220,4 +221,14 @@ public boolean isCompositeDatabase(GraphDatabaseService databaseService) {
220221
.map(DatabaseReferenceImpl.Internal::databaseId)
221222
.anyMatch(databaseId::equals);
222223
}
224+
225+
@Override
226+
public long estimateNodeCount(Read read, int label) {
227+
return read.estimateCountsForNode(label);
228+
}
229+
230+
@Override
231+
public long estimateRelationshipCount(Read read, int sourceLabel, int targetLabel, int type) {
232+
return read.estimateCountsForRelationships(sourceLabel, type, targetLabel);
233+
}
223234
}

0 commit comments

Comments
 (0)