summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-03-10 14:53:57 +0100
committerGitHub <noreply@github.com>2023-03-10 14:53:57 +0100
commite9a0c2631f2c5ca099df3223d4db251a3fbab7eb (patch)
tree6e71123a1bb5a9722267998a0fe4aa557ef7d0f3
parent4fc5346dcb568d2bd4e284d0ddfd1228cd904d53 (diff)
parentfb3f215f68e0dd1f1a85f27cc4011cbe41757e46 (diff)
Merge pull request #26399 from vespa-engine/arnej/avoid-handling-same-function-twice
remember which functions are already handled
-rw-r--r--config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java b/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
index 515745cb6bc..7124628be0c 100644
--- a/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
+++ b/config-model/src/main/java/com/yahoo/schema/expressiontransforms/InputRecorder.java
@@ -13,6 +13,7 @@ import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode;
import com.yahoo.searchlib.rankingexpression.transform.ExpressionTransformer;
import java.io.StringReader;
+import java.util.HashSet;
import java.util.Set;
/**
@@ -23,6 +24,7 @@ import java.util.Set;
public class InputRecorder extends ExpressionTransformer<RankProfileTransformContext> {
private final Set<String> neededInputs;
+ private final Set<String> handled = new HashSet<>();
public InputRecorder(Set<String> target) {
this.neededInputs = target;
@@ -52,9 +54,13 @@ public class InputRecorder extends ExpressionTransformer<RankProfileTransformCon
simpleFunctionOrIdentifier = true;
}
if (simpleFunctionOrIdentifier) {
+ if (handled.contains(name)) {
+ return;
+ }
var f = context.rankProfile().getFunctions().get(name);
if (f != null && f.function().arguments().size() == 0) {
transform(f.function().getBody().getRoot(), context);
+ handled.add(name);
return;
}
neededInputs.add(feature.toString());