diff options
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
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(); |