diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-01-26 18:36:58 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-01-27 10:25:47 +0100 |
commit | d62231991a4abf4f332a04d6928ffe2da9181785 (patch) | |
tree | 122eda0c9f164da38470b9dba8ddb3c66b169b9b /config-model/src/main | |
parent | a31e9abd429b252e9bf67c4e31e2f2cb43c7f9e4 (diff) |
Use original source for dynamic summary transform.
Diffstat (limited to 'config-model/src/main')
3 files changed, 21 insertions, 6 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java index ec941eacce1..ca5931fd9e8 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java @@ -70,7 +70,7 @@ public class SummaryClass extends Derived { accessingDiskSummary = true; } addField(summaryField.getName(), summaryField.getDataType(), summaryField.getTransform(), - getSource(summaryField), fields); + getSource(summaryField, schema), fields); } } @@ -143,7 +143,7 @@ public class SummaryClass extends Derived { } } - static String getSource(SummaryField summaryField) { + static String getSource(SummaryField summaryField, Schema schema) { if (summaryField.getTransform() == SummaryTransform.NONE) { return ""; } @@ -159,7 +159,7 @@ public class SummaryClass extends Derived { { return summaryField.getSingleSource(); } else if (summaryField.getTransform().isDynamic()) { - return DynamicSummaryTransformUtils.getSource(summaryField); + return DynamicSummaryTransformUtils.getSource(summaryField, schema); } else { return ""; } diff --git a/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java b/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java index 20597eca64f..30866172f39 100644 --- a/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java +++ b/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java @@ -1,6 +1,8 @@ package com.yahoo.schema.processing; import com.yahoo.document.DataType; +import com.yahoo.schema.Schema; +import com.yahoo.schema.document.ImmutableSDField; import com.yahoo.vespa.documentmodel.SummaryField; /** @@ -50,10 +52,20 @@ public class DynamicSummaryTransformUtils { return summaryFieldIsPopulatedBySourceField(summaryField.getDataType()); } - public static String getSource(SummaryField summaryField) { + public static String getSource(SummaryField summaryField, Schema schema) { // Summary fields with the original supported type is always present in the document type, // and we must use that field as source at run-time. - return isOriginalSupportedType(summaryField.getDataType()) ? - summaryField.getName() : summaryField.getSingleSource(); + if (isOriginalSupportedType(summaryField.getDataType())) { + if (summaryField.hasExplicitSingleSource()) { + String sourceFieldName = summaryField.getSingleSource(); + ImmutableSDField source = schema.getField(sourceFieldName); + if (source != null) { + return sourceFieldName; + } + } + return summaryField.getName(); + } else { + return summaryField.getSingleSource(); + } } } diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java index 58044163885..7439e65dee6 100644 --- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java +++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java @@ -276,6 +276,9 @@ public class SummaryField extends Field implements Cloneable, TypedKey { if (sourceName.contains(".")) { return false; } + if (sources.size() > 1) { + return false; + } return true; } |