|
21 | 21 |
|
22 | 22 | import org.neo4j.gds.api.GraphLoaderContext;
|
23 | 23 | import org.neo4j.gds.compat.GraphDatabaseApiProxy;
|
| 24 | +import org.neo4j.gds.compat.Neo4jProxy; |
24 | 25 | import org.neo4j.gds.config.GraphProjectFromCypherConfig;
|
25 | 26 | import org.neo4j.gds.utils.StringJoining;
|
26 | 27 | import org.neo4j.graphdb.security.AuthorizationViolationException;
|
27 | 28 | import org.neo4j.kernel.impl.coreapi.InternalTransaction;
|
28 | 29 | import org.neo4j.kernel.impl.query.QueryExecution;
|
29 | 30 | import org.neo4j.kernel.impl.query.QueryExecutionEngine;
|
| 31 | +import org.neo4j.kernel.impl.query.QueryExecutionKernelException; |
30 | 32 | import org.neo4j.kernel.impl.query.QuerySubscriber;
|
31 | 33 | import org.neo4j.kernel.impl.query.TransactionalContextFactory;
|
| 34 | +import org.neo4j.kernel.impl.util.ValueUtils; |
32 | 35 |
|
33 | 36 | import java.util.Arrays;
|
34 | 37 | import java.util.Collection;
|
35 | 38 | import java.util.HashSet;
|
36 | 39 | import java.util.Locale;
|
| 40 | +import java.util.Map; |
37 | 41 | import java.util.Set;
|
38 | 42 | import java.util.function.Predicate;
|
39 | 43 | import java.util.stream.Collectors;
|
40 | 44 |
|
41 |
| -import static org.neo4j.gds.compat.GraphDatabaseApiProxy.runQueryWithoutClosingTheResult; |
42 | 45 | import static org.neo4j.gds.utils.StringFormatting.formatWithLocale;
|
43 | 46 |
|
44 | 47 | abstract class CypherRecordLoader<R> {
|
@@ -146,4 +149,22 @@ private void validateMandatoryColumns(Collection<String> allColumns) {
|
146 | 149 | ));
|
147 | 150 | }
|
148 | 151 | }
|
| 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 | + |
149 | 170 | }
|
0 commit comments