aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-26 18:36:58 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-27 10:25:47 +0100
commitd62231991a4abf4f332a04d6928ffe2da9181785 (patch)
tree122eda0c9f164da38470b9dba8ddb3c66b169b9b /config-model/src/main
parenta31e9abd429b252e9bf67c4e31e2f2cb43c7f9e4 (diff)
Use original source for dynamic summary transform.
Diffstat (limited to 'config-model/src/main')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java6
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java3
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;
}