From 6a9681d7f3e42f29bd1d9de9fe9c271489b0c886 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 1 Dec 2022 22:45:55 +0100 Subject: Use well defined order where we output text and generate config. Makes config stable and simple tests predictable. --- .../src/main/java/com/yahoo/schema/derived/RawRankProfile.java | 7 +++---- .../com/yahoo/schema/processing/RankingExpressionTypeResolver.java | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'config-model/src/main/java/com/yahoo/schema') diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java index 59f4035f34f..14ee60bb9a6 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java @@ -20,7 +20,6 @@ import com.yahoo.searchlib.rankingexpression.Reference; import com.yahoo.searchlib.rankingexpression.parser.ParseException; import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; import com.yahoo.searchlib.rankingexpression.rule.SerializationContext; -import com.yahoo.tensor.TensorType; import com.yahoo.vespa.config.search.RankProfilesConfig; import java.nio.ByteBuffer; @@ -196,7 +195,7 @@ public class RawRankProfile implements RankProfilesConfig.Producer { rankProperties = new ArrayList<>(compiled.getRankProperties()); Map functions = compiled.getFunctions(); - List functionExpressions = functions.values().stream().map(f -> f.function()).collect(Collectors.toList()); + List functionExpressions = functions.values().stream().map(RankProfile.RankingExpressionFunction::function).collect(Collectors.toList()); Map functionProperties = new LinkedHashMap<>(); SerializationContext functionSerializationContext = new SerializationContext(functionExpressions, Map.of(), @@ -248,8 +247,8 @@ public class RawRankProfile implements RankProfilesConfig.Producer { String expressionString = e.getValue().function().getBody().getRoot().toString(context).toString(); context.addFunctionSerialization(propertyName, expressionString); - for (Map.Entry argumentType : e.getValue().function().argumentTypes().entrySet()) - context.addArgumentTypeSerialization(e.getKey(), argumentType.getKey(), argumentType.getValue()); + e.getValue().function().argumentTypes().entrySet().stream().sorted(Map.Entry.comparingByKey()) + .forEach(argumentType -> context.addArgumentTypeSerialization(e.getKey(), argumentType.getKey(), argumentType.getValue())); if (e.getValue().function().returnType().isPresent()) context.addFunctionTypeSerialization(e.getKey(), e.getValue().function().returnType().get()); // else if (e.getValue().function().arguments().isEmpty()) TODO: Enable this check when we resolve all types diff --git a/config-model/src/main/java/com/yahoo/schema/processing/RankingExpressionTypeResolver.java b/config-model/src/main/java/com/yahoo/schema/processing/RankingExpressionTypeResolver.java index 3e7a1f7613b..871b79a7737 100644 --- a/config-model/src/main/java/com/yahoo/schema/processing/RankingExpressionTypeResolver.java +++ b/config-model/src/main/java/com/yahoo/schema/processing/RankingExpressionTypeResolver.java @@ -73,7 +73,7 @@ public class RankingExpressionTypeResolver extends Processor { for (String argument : expressionFunction.arguments()) { Reference ref = Reference.fromIdentifier(argument); if (context.getType(ref).equals(TensorType.empty)) { - context.setType(ref, expressionFunction.argumentTypes().get(argument)); + context.setType(ref, expressionFunction.getArgumentType(argument)); } } context.forgetResolvedTypes(); -- cgit v1.2.3