diff --git a/extensions/indexes/range/src/main/java/org/exist/xquery/modules/range/RangeQueryRewriter.java b/extensions/indexes/range/src/main/java/org/exist/xquery/modules/range/RangeQueryRewriter.java index b9b050690e4..848cb04da55 100644 --- a/extensions/indexes/range/src/main/java/org/exist/xquery/modules/range/RangeQueryRewriter.java +++ b/extensions/indexes/range/src/main/java/org/exist/xquery/modules/range/RangeQueryRewriter.java @@ -69,6 +69,11 @@ public Pragma rewriteLocationStep(final LocationStep locationStep) throws XPathE } Expression innerExpr = pred.getExpression(0); + if (innerExpr instanceof InternalFunctionCall && ((InternalFunctionCall) innerExpr).getFunction() instanceof Lookup) { + // innerExpr was already optimized + continue; + } + List steps = getStepsToOptimize(innerExpr); if (steps == null || steps.isEmpty()) { // no optimizable steps found