diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-09-19 15:27:16 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2022-09-19 15:28:56 +0000 |
commit | e967d20a61bceef741b04347d43fce2dae80f6e7 (patch) | |
tree | 9b7042b83005d3dbaf4e889081308909e564984b /config-model/src/main | |
parent | dd11dce329e66dc6474a00b798f46a1ee5febfb0 (diff) |
Do not log disk access warning when using an imported complex field in summary.
Diffstat (limited to 'config-model/src/main')
5 files changed, 30 insertions, 12 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java b/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java index 993bf16405a..993c9180f78 100644 --- a/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java +++ b/config-model/src/main/java/com/yahoo/schema/document/ComplexAttributeFieldUtils.java @@ -95,29 +95,22 @@ public class ComplexAttributeFieldUtils { if (isArrayOfSimpleStruct(field)) { return hasOnlyStructFieldAttributes(field); } else if (isMapOfSimpleStruct(field)) { - return hasSingleAttribute(field.getStructField("key")) && + return (field.getStructField("key").hasSingleAttribute()) && hasOnlyStructFieldAttributes(field.getStructField("value")); } else if (isMapOfPrimitiveType(field)) { - return hasSingleAttribute(field.getStructField("key")) && - hasSingleAttribute(field.getStructField("value")); + return (field.getStructField("key").hasSingleAttribute() && + field.getStructField("value").hasSingleAttribute()); } return false; } private static boolean hasOnlyStructFieldAttributes(ImmutableSDField field) { for (ImmutableSDField structField : field.getStructFields()) { - if (!hasSingleAttribute(structField)) { + if (!structField.hasSingleAttribute()) { return false; } } return true; } - private static boolean hasSingleAttribute(ImmutableSDField field) { - if (field.getAttributes().size() != 1) { - return false; - } - return (field.getAttributes().get(field.getName()) != null); - } - } diff --git a/config-model/src/main/java/com/yahoo/schema/document/ImmutableImportedSDField.java b/config-model/src/main/java/com/yahoo/schema/document/ImmutableImportedSDField.java index 221280dc1e4..4f0b684a9c0 100644 --- a/config-model/src/main/java/com/yahoo/schema/document/ImmutableImportedSDField.java +++ b/config-model/src/main/java/com/yahoo/schema/document/ImmutableImportedSDField.java @@ -88,6 +88,15 @@ public class ImmutableImportedSDField implements ImmutableSDField { } @Override + public boolean hasSingleAttribute() { + if (getAttributes().size() != 1) { + return false; + } + // Must use the name of the target field as the attributes also exist on the target field. + return (getAttributes().get(importedField.targetField().getName()) != null); + } + + @Override public DataType getDataType() { return importedField.targetField().getDataType(); } diff --git a/config-model/src/main/java/com/yahoo/schema/document/ImmutableSDField.java b/config-model/src/main/java/com/yahoo/schema/document/ImmutableSDField.java index 37cbb3a8171..2d826e164b7 100644 --- a/config-model/src/main/java/com/yahoo/schema/document/ImmutableSDField.java +++ b/config-model/src/main/java/com/yahoo/schema/document/ImmutableSDField.java @@ -53,6 +53,11 @@ public interface ImmutableSDField { */ boolean wasConfiguredToDoIndexing(); + /** + * Returns whether this field has a single attribute with the same name as this field. + */ + boolean hasSingleAttribute(); + DataType getDataType(); Index getIndex(String name); diff --git a/config-model/src/main/java/com/yahoo/schema/document/SDField.java b/config-model/src/main/java/com/yahoo/schema/document/SDField.java index 2d79d89a2a0..4eaa3e05047 100644 --- a/config-model/src/main/java/com/yahoo/schema/document/SDField.java +++ b/config-model/src/main/java/com/yahoo/schema/document/SDField.java @@ -387,6 +387,14 @@ public class SDField extends Field implements TypedKey, ImmutableSDField { return wasConfiguredToDoIndexing; } + @Override + public boolean hasSingleAttribute() { + if (getAttributes().size() != 1) { + return false; + } + return (getAttributes().get(getName()) != null); + } + /** Parse an indexing expression which will use the simple linguistics implementation suitable for testing */ public void parseIndexingScript(String script) { parseIndexingScript(script, new SimpleLinguistics(), Embedder.throwsOnUse.asMap()); diff --git a/config-model/src/main/java/com/yahoo/schema/processing/AddAttributeTransformToSummaryOfImportedFields.java b/config-model/src/main/java/com/yahoo/schema/processing/AddAttributeTransformToSummaryOfImportedFields.java index d96cd88f6be..d95b4ed4a33 100644 --- a/config-model/src/main/java/com/yahoo/schema/processing/AddAttributeTransformToSummaryOfImportedFields.java +++ b/config-model/src/main/java/com/yahoo/schema/processing/AddAttributeTransformToSummaryOfImportedFields.java @@ -52,7 +52,10 @@ public class AddAttributeTransformToSummaryOfImportedFields extends Processor { } private static void setAttributeCombinerTransform(SummaryField summaryField) { - if (summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER) { + if (summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER) { + // This field already has the correct transform. + return; + } else if (summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER) { summaryField.setTransform(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER); } else { summaryField.setTransform(SummaryTransform.ATTRIBUTECOMBINER); |