Skip to content

Commit cb0d7c5

Browse files
knutwalkerjjaderberg
authored andcommitted
Move creating new tx context to compat layer
This change is required after neo-technology/neo4j#17457
1 parent 1de7ec2 commit cb0d7c5

File tree

8 files changed

+96
-25
lines changed

8 files changed

+96
-25
lines changed

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

+13-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@
108108
import org.neo4j.kernel.database.NamedDatabaseId;
109109
import org.neo4j.kernel.database.NormalizedDatabaseName;
110110
import org.neo4j.kernel.database.TestDatabaseIdRepository;
111+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
111112
import org.neo4j.kernel.impl.index.schema.IndexImporterFactoryImpl;
113+
import org.neo4j.kernel.impl.query.TransactionalContext;
114+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
112115
import org.neo4j.kernel.impl.store.MetaDataStore;
113116
import org.neo4j.kernel.impl.store.RecordStore;
114117
import org.neo4j.kernel.impl.store.format.RecordFormatSelector;
@@ -124,6 +127,7 @@
124127
import org.neo4j.storageengine.api.PropertySelection;
125128
import org.neo4j.values.storable.ValueCategory;
126129
import org.neo4j.values.storable.ValueGroup;
130+
import org.neo4j.values.virtual.MapValue;
127131

128132
import java.io.IOException;
129133
import java.nio.file.Path;
@@ -785,5 +789,13 @@ public void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, Curso
785789

786790
idGenerator.nextConsecutiveIdRange(size, false, cursorContext);
787791
}
788-
792+
@Override
793+
public TransactionalContext newQueryContext(
794+
TransactionalContextFactory contextFactory,
795+
InternalTransaction tx,
796+
String queryText,
797+
MapValue queryParameters
798+
) {
799+
return contextFactory.newContext(tx, queryText, queryParameters);
800+
}
789801
}

compatibility/5.1/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_51/Neo4jProxyImpl.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,10 @@
116116
import org.neo4j.kernel.database.NamedDatabaseId;
117117
import org.neo4j.kernel.database.NormalizedDatabaseName;
118118
import org.neo4j.kernel.database.TestDatabaseIdRepository;
119+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
119120
import org.neo4j.kernel.impl.index.schema.IndexImporterFactoryImpl;
121+
import org.neo4j.kernel.impl.query.TransactionalContext;
122+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
120123
import org.neo4j.kernel.impl.store.RecordStore;
121124
import org.neo4j.kernel.impl.store.format.RecordFormatSelector;
122125
import org.neo4j.kernel.impl.store.format.RecordFormats;
@@ -134,6 +137,7 @@
134137
import org.neo4j.util.Bits;
135138
import org.neo4j.values.storable.ValueCategory;
136139
import org.neo4j.values.storable.Values;
140+
import org.neo4j.values.virtual.MapValue;
137141

138142
import java.io.IOException;
139143
import java.nio.file.Path;
@@ -908,5 +912,13 @@ public void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, Curso
908912

909913
idGenerator.nextConsecutiveIdRange(size, false, cursorContext);
910914
}
911-
915+
@Override
916+
public TransactionalContext newQueryContext(
917+
TransactionalContextFactory contextFactory,
918+
InternalTransaction tx,
919+
String queryText,
920+
MapValue queryParameters
921+
) {
922+
return contextFactory.newContext(tx, queryText, queryParameters);
923+
}
912924
}

compatibility/5.2/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_52/Neo4jProxyImpl.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,10 @@
116116
import org.neo4j.kernel.database.NamedDatabaseId;
117117
import org.neo4j.kernel.database.NormalizedDatabaseName;
118118
import org.neo4j.kernel.database.TestDatabaseIdRepository;
119+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
119120
import org.neo4j.kernel.impl.index.schema.IndexImporterFactoryImpl;
121+
import org.neo4j.kernel.impl.query.TransactionalContext;
122+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
120123
import org.neo4j.kernel.impl.store.RecordStore;
121124
import org.neo4j.kernel.impl.store.format.RecordFormatSelector;
122125
import org.neo4j.kernel.impl.store.format.RecordFormats;
@@ -134,6 +137,7 @@
134137
import org.neo4j.util.Bits;
135138
import org.neo4j.values.storable.ValueCategory;
136139
import org.neo4j.values.storable.Values;
140+
import org.neo4j.values.virtual.MapValue;
137141

138142
import java.io.IOException;
139143
import java.nio.file.Path;
@@ -906,5 +910,13 @@ public void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, Curso
906910

907911
idGenerator.nextConsecutiveIdRange(size, false, cursorContext);
908912
}
909-
913+
@Override
914+
public TransactionalContext newQueryContext(
915+
TransactionalContextFactory contextFactory,
916+
InternalTransaction tx,
917+
String queryText,
918+
MapValue queryParameters
919+
) {
920+
return contextFactory.newContext(tx, queryText, queryParameters);
921+
}
910922
}

compatibility/5.3/neo4j-kernel-adapter/src/main/java17/org/neo4j/gds/compat/_53/Neo4jProxyImpl.java

+13
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,10 @@
116116
import org.neo4j.kernel.database.NamedDatabaseId;
117117
import org.neo4j.kernel.database.NormalizedDatabaseName;
118118
import org.neo4j.kernel.database.TestDatabaseIdRepository;
119+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
119120
import org.neo4j.kernel.impl.index.schema.IndexImporterFactoryImpl;
121+
import org.neo4j.kernel.impl.query.TransactionalContext;
122+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
120123
import org.neo4j.kernel.impl.store.RecordStore;
121124
import org.neo4j.kernel.impl.store.format.RecordFormatSelector;
122125
import org.neo4j.kernel.impl.store.format.RecordFormats;
@@ -134,6 +137,7 @@
134137
import org.neo4j.util.Bits;
135138
import org.neo4j.values.storable.ValueCategory;
136139
import org.neo4j.values.storable.Values;
140+
import org.neo4j.values.virtual.MapValue;
137141

138142
import java.io.IOException;
139143
import java.nio.file.Path;
@@ -907,4 +911,13 @@ public void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, Curso
907911
idGenerator.nextConsecutiveIdRange(size, false, cursorContext);
908912
}
909913

914+
@Override
915+
public TransactionalContext newQueryContext(
916+
TransactionalContextFactory contextFactory,
917+
InternalTransaction tx,
918+
String queryText,
919+
MapValue queryParameters
920+
) {
921+
return contextFactory.newContext(tx, queryText, queryParameters);
922+
}
910923
}

compatibility/api/neo4j-kernel-adapter/src/main/java/org/neo4j/gds/compat/Neo4jProxyApi.java

+10
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@
7272
import org.neo4j.kernel.api.procedure.CallableProcedure;
7373
import org.neo4j.kernel.api.procedure.CallableUserAggregationFunction;
7474
import org.neo4j.kernel.database.NamedDatabaseId;
75+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
76+
import org.neo4j.kernel.impl.query.TransactionalContext;
77+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
7578
import org.neo4j.kernel.impl.store.RecordStore;
7679
import org.neo4j.kernel.impl.store.format.RecordFormats;
7780
import org.neo4j.kernel.impl.store.record.AbstractBaseRecord;
@@ -80,6 +83,7 @@
8083
import org.neo4j.procedure.Mode;
8184
import org.neo4j.scheduler.JobScheduler;
8285
import org.neo4j.ssl.config.SslPolicyLoader;
86+
import org.neo4j.values.virtual.MapValue;
8387

8488
import java.nio.file.Path;
8589
import java.util.List;
@@ -309,4 +313,10 @@ UserFunctionSignature userFunctionSignature(
309313

310314
void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, CursorContext cursorContext);
311315

316+
TransactionalContext newQueryContext(
317+
TransactionalContextFactory contextFactory,
318+
InternalTransaction tx,
319+
String queryText,
320+
MapValue queryParameters
321+
);
312322
}

compatibility/common/neo4j-kernel-adapter/src/main/java/org/neo4j/gds/compat/Neo4jProxy.java

+12
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@
7272
import org.neo4j.kernel.api.procedure.CallableProcedure;
7373
import org.neo4j.kernel.api.procedure.CallableUserAggregationFunction;
7474
import org.neo4j.kernel.database.NamedDatabaseId;
75+
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
76+
import org.neo4j.kernel.impl.query.TransactionalContext;
77+
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
7578
import org.neo4j.kernel.impl.store.RecordStore;
7679
import org.neo4j.kernel.impl.store.format.RecordFormats;
7780
import org.neo4j.kernel.impl.store.record.AbstractBaseRecord;
@@ -80,6 +83,7 @@
8083
import org.neo4j.procedure.Mode;
8184
import org.neo4j.scheduler.JobScheduler;
8285
import org.neo4j.ssl.config.SslPolicyLoader;
86+
import org.neo4j.values.virtual.MapValue;
8387

8488
import java.nio.file.Path;
8589
import java.util.List;
@@ -466,6 +470,14 @@ public static long transactionId(KernelTransactionHandle kernelTransactionHandle
466470
public static void reserveNeo4jIds(IdGeneratorFactory generatorFactory, int size, CursorContext cursorContext) {
467471
IMPL.reserveNeo4jIds(generatorFactory, size, cursorContext);
468472
}
473+
public static TransactionalContext newQueryContext(
474+
TransactionalContextFactory contextFactory,
475+
InternalTransaction tx,
476+
String queryText,
477+
MapValue queryParameters
478+
) {
479+
return IMPL.newQueryContext(contextFactory, tx, queryText, queryParameters);
480+
}
469481

470482
private Neo4jProxy() {
471483
throw new UnsupportedOperationException("No instances");

core/src/main/java/org/neo4j/gds/core/loading/CypherRecordLoader.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,27 @@
2121

2222
import org.neo4j.gds.api.GraphLoaderContext;
2323
import org.neo4j.gds.compat.GraphDatabaseApiProxy;
24+
import org.neo4j.gds.compat.Neo4jProxy;
2425
import org.neo4j.gds.config.GraphProjectFromCypherConfig;
2526
import org.neo4j.gds.utils.StringJoining;
2627
import org.neo4j.graphdb.security.AuthorizationViolationException;
2728
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
2829
import org.neo4j.kernel.impl.query.QueryExecution;
2930
import org.neo4j.kernel.impl.query.QueryExecutionEngine;
31+
import org.neo4j.kernel.impl.query.QueryExecutionKernelException;
3032
import org.neo4j.kernel.impl.query.QuerySubscriber;
3133
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
34+
import org.neo4j.kernel.impl.util.ValueUtils;
3235

3336
import java.util.Arrays;
3437
import java.util.Collection;
3538
import java.util.HashSet;
3639
import java.util.Locale;
40+
import java.util.Map;
3741
import java.util.Set;
3842
import java.util.function.Predicate;
3943
import java.util.stream.Collectors;
4044

41-
import static org.neo4j.gds.compat.GraphDatabaseApiProxy.runQueryWithoutClosingTheResult;
4245
import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
4346

4447
abstract class CypherRecordLoader<R> {
@@ -146,4 +149,22 @@ private void validateMandatoryColumns(Collection<String> allColumns) {
146149
));
147150
}
148151
}
152+
153+
private static QueryExecution runQueryWithoutClosingTheResult(
154+
InternalTransaction tx,
155+
String query,
156+
Map<String, Object> params,
157+
TransactionalContextFactory contextFactory,
158+
QueryExecutionEngine executionEngine,
159+
QuerySubscriber subscriber
160+
) {
161+
var convertedParams = ValueUtils.asMapValue(params);
162+
var context = Neo4jProxy.newQueryContext(contextFactory, tx, query, convertedParams);
163+
try {
164+
return executionEngine.executeQuery(query, convertedParams, context, false, subscriber);
165+
} catch (QueryExecutionKernelException e) {
166+
throw e.asUserException();
167+
}
168+
}
169+
149170
}

neo4j-adapter/src/main/java/org/neo4j/gds/compat/GraphDatabaseApiProxy.java

-21
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,8 @@
3939
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
4040
import org.neo4j.kernel.impl.factory.DbmsInfo;
4141
import org.neo4j.kernel.impl.query.Neo4jTransactionalContextFactory;
42-
import org.neo4j.kernel.impl.query.QueryExecution;
4342
import org.neo4j.kernel.impl.query.QueryExecutionEngine;
44-
import org.neo4j.kernel.impl.query.QueryExecutionKernelException;
45-
import org.neo4j.kernel.impl.query.QuerySubscriber;
4643
import org.neo4j.kernel.impl.query.TransactionalContextFactory;
47-
import org.neo4j.kernel.impl.util.ValueUtils;
4844
import org.neo4j.kernel.internal.GraphDatabaseAPI;
4945

5046
import java.util.Map;
@@ -142,23 +138,6 @@ public static Result runQueryWithoutClosingTheResult(Transaction tx, String quer
142138
return tx.execute(query, params);
143139
}
144140

145-
public static QueryExecution runQueryWithoutClosingTheResult(
146-
InternalTransaction tx,
147-
String query,
148-
Map<String, Object> params,
149-
TransactionalContextFactory contextFactory,
150-
QueryExecutionEngine executionEngine,
151-
QuerySubscriber subscriber
152-
) {
153-
var convertedParams = ValueUtils.asMapValue(params);
154-
var context = contextFactory.newContext(tx, query, convertedParams);
155-
try {
156-
return executionEngine.executeQuery(query, convertedParams, context, false, subscriber);
157-
} catch (QueryExecutionKernelException e) {
158-
throw e.asUserException();
159-
}
160-
}
161-
162141
public static Result runQueryWithoutClosingTheResult(
163142
KernelTransaction tx,
164143
String query,

0 commit comments

Comments
 (0)