diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-03-10 14:53:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-10 14:53:57 +0100 |
commit | e9a0c2631f2c5ca099df3223d4db251a3fbab7eb (patch) | |
tree | 6e71123a1bb5a9722267998a0fe4aa557ef7d0f3 | |
parent | 4fc5346dcb568d2bd4e284d0ddfd1228cd904d53 (diff) | |
parent | fb3f215f68e0dd1f1a85f27cc4011cbe41757e46 (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.java | 6 |
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()); |