summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/AddExtraFieldsToDocument.java2
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/IndexingOutputs.java9
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java14
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/TypedTransformProvider.java14
4 files changed, 32 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/AddExtraFieldsToDocument.java b/config-model/src/main/java/com/yahoo/schema/processing/AddExtraFieldsToDocument.java
index 52652de81d4..67297245ff1 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/AddExtraFieldsToDocument.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/AddExtraFieldsToDocument.java
@@ -70,7 +70,7 @@ public class AddExtraFieldsToDocument extends Processor {
}
private void addSdField(Schema schema, SDDocumentType document, SDField field, boolean validate) {
- if (! field.hasIndex() && field.getAttributes().isEmpty()) {
+ if (! field.hasIndex() && field.getAttributes().isEmpty() && !field.doesSummarying()) {
return;
}
for (Attribute atr : field.getAttributes().values()) {
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/IndexingOutputs.java b/config-model/src/main/java/com/yahoo/schema/processing/IndexingOutputs.java
index 3dd2ffdb02e..071c2878ae8 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/IndexingOutputs.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/IndexingOutputs.java
@@ -137,6 +137,15 @@ public class IndexingOutputs extends Processor {
for (String fieldName : summaryFields) {
ret.add(new SummaryExpression(fieldName));
}
+ /*
+ * Write to summary field source. AddExtraFieldsToDocument processor adds the "copy"
+ * summary transform to summary fields without a corresponding explicitly declared
+ * document field (2023-11-01). Future vespa versions will stop adding document
+ * fields for those summary fields.
+ */
+ if (!summaryFields.contains(field.getName())) {
+ ret.add(new SummaryExpression(field.getName()));
+ }
} else {
throw new UnsupportedOperationException(exp.getClass().getName());
}
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java b/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
index 9a98958fca9..3f336544a99 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/IndexingValidation.java
@@ -131,10 +131,18 @@ public class IndexingValidation extends Processor {
} else if (exp instanceof SummaryExpression) {
SummaryField field = schema.getSummaryField(fieldName);
if (field == null) {
- throw new VerificationException(exp, "Summary field '" + fieldName + "' not found.");
+ // Use document field if summary field is not found
+ SDField sdField = schema.getConcreteField(fieldName);
+ if (sdField != null && sdField.doesSummarying()) {
+ fieldDesc = "document field";
+ fieldType = sdField.getDataType();
+ } else {
+ throw new VerificationException(exp, "Summary field '" + fieldName + "' not found.");
+ }
+ } else {
+ fieldDesc = "summary field";
+ fieldType = field.getDataType();
}
- fieldDesc = "summary field";
- fieldType = field.getDataType();
} else {
throw new UnsupportedOperationException();
}
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/TypedTransformProvider.java b/config-model/src/main/java/com/yahoo/schema/processing/TypedTransformProvider.java
index 63eee474095..34dcc9139b3 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/TypedTransformProvider.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/TypedTransformProvider.java
@@ -39,9 +39,17 @@ public abstract class TypedTransformProvider extends ValueTransformProvider {
}
else if (exp instanceof SummaryExpression) {
Field field = schema.getSummaryField(fieldName);
- if (field == null)
- throw new IllegalArgumentException("Summary field '" + fieldName + "' not found.");
- fieldType = field.getDataType();
+ if (field == null) {
+ // Use document field if summary field is not found
+ var sdField = schema.getConcreteField(fieldName);
+ if (sdField != null && sdField.doesSummarying()) {
+ fieldType = sdField.getDataType();
+ } else {
+ throw new IllegalArgumentException("Summary field '" + fieldName + "' not found.");
+ }
+ } else {
+ fieldType = field.getDataType();
+ }
}
else {
throw new UnsupportedOperationException();