From 1383233bcd105bc13f3dd4dacada5f016fa8b3e8 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Fri, 3 Nov 2023 15:11:23 +0100 Subject: Write to summary field source. --- .../yahoo/schema/processing/AddExtraFieldsToDocument.java | 2 +- .../java/com/yahoo/schema/processing/IndexingOutputs.java | 4 ++++ .../com/yahoo/schema/processing/IndexingValidation.java | 14 +++++++++++--- .../yahoo/schema/processing/TypedTransformProvider.java | 14 +++++++++++--- 4 files changed, 27 insertions(+), 7 deletions(-) (limited to 'config-model/src/main/java/com/yahoo/schema') 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..385e030130b 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,10 @@ public class IndexingOutputs extends Processor { for (String fieldName : summaryFields) { ret.add(new SummaryExpression(fieldName)); } + // Write to summary field source + 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..2c087d86624 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 is 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(); -- cgit v1.2.3