public static <E extends Ranging> void foldInRange(final HasStepFolder titanStep, final Traversal.Admin<?, ?> traversal) { Step<?, ?> nextStep = TitanTraversalUtil.getNextNonIdentityStep(titanStep); if (nextStep instanceof RangeGlobalStep) { RangeGlobalStep range = (RangeGlobalStep) nextStep; int limit = QueryUtil.convertLimit(range.getHighRange()); titanStep.setLimit(QueryUtil.mergeLimits(limit, titanStep.getLimit())); if (range.getLowRange() == 0) { //Range can be removed since there is no offset nextStep.getLabels().forEach(titanStep::addLabel); traversal.removeStep(nextStep); } } }
static void foldInRange(final HasStepFolder janusgraphStep, final Step<?, ?> tinkerpopStep, final Traversal.Admin<?, ?> traversal, final List<HasContainer> hasContainers) { final Step<?, ?> nextStep = tinkerpopStep instanceof IdentityStep ? JanusGraphTraversalUtil.getNextNonIdentityStep(tinkerpopStep): tinkerpopStep; if (nextStep instanceof RangeGlobalStep) { final RangeGlobalStep range = (RangeGlobalStep) nextStep; int low = 0; if (janusgraphStep instanceof JanusGraphStep) { low = QueryUtil.convertLimit(range.getLowRange()); low = QueryUtil.mergeLowLimits(low, hasContainers == null ? janusgraphStep.getLowLimit(): janusgraphStep.getLocalLowLimit(hasContainers)); } int high = QueryUtil.convertLimit(range.getHighRange()); high = QueryUtil.mergeHighLimits(high, hasContainers == null ? janusgraphStep.getHighLimit(): janusgraphStep.getLocalHighLimit(hasContainers)); if (hasContainers == null) { janusgraphStep.setLimit(low, high); } else { janusgraphStep.setLocalLimit(hasContainers, low, high); } if (janusgraphStep instanceof JanusGraphStep || range.getLowRange() == 0) { //Range can be removed since there is JanusGraphStep or no offset nextStep.getLabels().forEach(janusgraphStep::addLabel); traversal.removeStep(nextStep); } } } }
Step nextStep = TitanTraversalUtil.getNextNonIdentityStep(vstep); if (nextStep instanceof RangeGlobalStep) { int limit = QueryUtil.convertLimit(((RangeGlobalStep) nextStep).getHighRange()); vstep.setLimit(QueryUtil.mergeLimits(limit, vstep.getLimit()));
final Step nextStep = JanusGraphTraversalUtil.getNextNonIdentityStep(vertexStep); if (nextStep instanceof RangeGlobalStep) { final int limit = QueryUtil.convertLimit(((RangeGlobalStep) nextStep).getHighRange()); vertexStep.setLimit(0, QueryUtil.mergeHighLimits(limit, vertexStep.getHighLimit()));
@Override public void apply(final Traversal.Admin<?, ?> traversal) { if (!TraversalHelper.onGraphComputer(traversal)) return; final List<OrderGlobalStep> orders = TraversalHelper.getStepsOfClass(OrderGlobalStep.class, traversal); for (final OrderGlobalStep order : orders) { RangeGlobalStep range = null; Step<?, ?> currentStep = order.getNextStep(); while (true) { if (currentStep instanceof RangeGlobalStep) { range = (RangeGlobalStep) currentStep; break; } else if (!LEGAL_STEPS.contains(currentStep.getClass())) break; else currentStep = currentStep.getNextStep(); } if (null != range) order.setLimit(range.getHighRange()); } }
this.edgeLegality.put(Direction.IN, new HashMap<>()); this.edgeLegality.put(Direction.BOTH, new HashMap<>()); if (this.edgeFilter.getEndStep() instanceof RangeGlobalStep && 0 == ((RangeGlobalStep) this.edgeFilter.getEndStep()).getHighRange()) this.allowNoEdges = true;
holder.setRange(0, range.getHighRange()); } else { long limit = holder.setRange(range.getLowRange(), range.getHighRange()); RangeGlobalStep<Object> newRange = new RangeGlobalStep<>( traversal, 0, limit);
@Override public void apply(Traversal.Admin<?, ?> traversal) { TraversalHelper.getStepsOfAssignableClass(OrderGlobalStep.class, traversal).forEach(orderGlobalStep -> { List<Pair<Traversal.Admin, Comparator>> comparators = orderGlobalStep.getComparators(); List<Pair<String, Order>> collect = comparators.stream() .filter(pair -> pair.getValue0() instanceof ElementValueTraversal) .filter(pair -> pair.getValue1() instanceof Order) .map(pair -> Pair.with(((ElementValueTraversal) pair.getValue0()).getPropertyKey(), ((Order) pair.getValue1()))) .collect(Collectors.toList()); Collection<Orderable> orderableStepOf = getOrderableStepOf(orderGlobalStep, traversal); if (orderableStepOf != null && orderableStepOf.size() == 1) { Orderable step = orderableStepOf.iterator().next(); step.setOrders(collect); Step nextStep = orderGlobalStep.getNextStep(); if (nextStep instanceof RangeGlobalStep){ if (step instanceof ReceivesPredicatesHolder) { RangeGlobalStep rangeGlobalStep = (RangeGlobalStep) nextStep; int limit = rangeGlobalStep.getHighRange() > Integer.MAX_VALUE ? -1 : (int) rangeGlobalStep.getHighRange(); ((ReceivesPredicatesHolder) step).setLimit(limit); } } } }); }
@Override public void apply(final Traversal.Admin<?, ?> traversal) { if (!TraversalHelper.onGraphComputer(traversal)) return; final List<OrderGlobalStep> orders = TraversalHelper.getStepsOfClass(OrderGlobalStep.class, traversal); for (final OrderGlobalStep order : orders) { RangeGlobalStep range = null; Step<?, ?> currentStep = order.getNextStep(); while (true) { if (currentStep instanceof RangeGlobalStep) { range = (RangeGlobalStep) currentStep; break; } else if (!LEGAL_STEPS.contains(currentStep.getClass())) break; else currentStep = currentStep.getNextStep(); } if (null != range) order.setLimit(range.getHighRange()); } }
this.edgeLegality.put(Direction.IN, new HashMap<>()); this.edgeLegality.put(Direction.BOTH, new HashMap<>()); if (this.edgeFilter.getEndStep() instanceof RangeGlobalStep && 0 == ((RangeGlobalStep) this.edgeFilter.getEndStep()).getHighRange()) this.allowNoEdges = true;
holder.setRange(0, range.getHighRange()); } else { long limit = holder.setRange(range.getLowRange(), range.getHighRange()); RangeGlobalStep<Object> newRange = new RangeGlobalStep<>( traversal, 0, limit);
int limit = rangeGlobalStep.getHighRange() > Integer.MAX_VALUE ? -1 : (int) rangeGlobalStep.getHighRange(); step.setLimit(limit); collectLabels(nextStep, step);
public static <E extends Ranging> void foldInRange(final HasStepFolder titanStep, final Traversal.Admin<?, ?> traversal) { Step<?, ?> nextStep = TitanTraversalUtil.getNextNonIdentityStep(titanStep); if (nextStep instanceof RangeGlobalStep) { RangeGlobalStep range = (RangeGlobalStep) nextStep; int limit = QueryUtil.convertLimit(range.getHighRange()); titanStep.setLimit(QueryUtil.mergeLimits(limit, titanStep.getLimit())); if (range.getLowRange() == 0) { //Range can be removed since there is no offset nextStep.getLabels().forEach(titanStep::addLabel); traversal.removeStep(nextStep); } } }
long high = rgs.getHighRange(); if (high == -1) {
long high = rgs.getHighRange(); if (high == -1) {
if ((traversal.getSteps().size() > indexOfRepeatStep + 1) && traversal.getSteps().get(indexOfRepeatStep + 1) instanceof RangeGlobalStep) { RangeGlobalStep<?> rgs = (RangeGlobalStep<?>) traversal.getSteps().get(indexOfRepeatStep + 1); long high = rgs.getHighRange(); if (high == -1) {
if ((traversal.getSteps().size() > indexOfRepeatStep + 1) && traversal.getSteps().get(indexOfRepeatStep + 1) instanceof RangeGlobalStep) { RangeGlobalStep<?> rgs = (RangeGlobalStep<?>) traversal.getSteps().get(indexOfRepeatStep + 1); long high = rgs.getHighRange(); if (high == -1) {
Step nextStep = TitanTraversalUtil.getNextNonIdentityStep(vstep); if (nextStep instanceof RangeGlobalStep) { int limit = QueryUtil.convertLimit(((RangeGlobalStep) nextStep).getHighRange()); vstep.setLimit(QueryUtil.mergeLimits(limit, vstep.getLimit()));