in src/main/java/com/amazonaws/services/neptune/propertygraph/NamedQueries.java [78:108]
public void split(LazyQueriesRangeFactoryProvider rangeFactoryProvider) {
Collection<String> splitQueries = Collections.synchronizedCollection(new ArrayList<>());
queries.forEach(q -> {
RangeFactory rangeFactory = null;
if (q.startsWith("g.V()")) {
rangeFactory = rangeFactoryProvider.getNodesRangeFactory();
} else if (q.startsWith("g.E()")) {
rangeFactory = rangeFactoryProvider.getEdgesRangeFactory();
}
if (rangeFactory != null) {
while (!rangeFactory.isExhausted()) {
Range range = rangeFactory.nextRange();
if (range.isAll()) {
// Keep unaltered query if range is all. This works-around an issue where range(0,-1) does not
// produce any results in some versions of Neptune.
splitQueries.add(q);
break;
}
if (q.startsWith("g.V()")) {
splitQueries.add(q.replaceFirst("g.V\\(\\)", "g.V()."+range.toString()));
} else if (q.startsWith("g.E()")) {
splitQueries.add(q.replaceFirst("g.E\\(\\)", "g.E()."+range.toString()));
}
}
rangeFactory.reset();
}
});
queries.clear();
queries.addAll(splitQueries);
}