diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-06-29 10:57:40 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-06-29 10:57:40 +0200 |
commit | 4eff6c24b1db63eca7c5a43f82768eda043cfedf (patch) | |
tree | 86bfcb0ce65fc6625e7b83972b9675804981ced9 /config-model/src/main/java/com | |
parent | c4dc902aa6e301b6f56d526ea9cccc0fc5be7a00 (diff) |
Use CopyDFW for struct field summaries with explicit source.
Diffstat (limited to 'config-model/src/main/java/com')
4 files changed, 30 insertions, 1 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java index 40d763eb897..35bb147ccf5 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java @@ -42,6 +42,8 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer { if (summaryField.getTransform()== SummaryTransform.NONE) continue; if (summaryField.getTransform()==SummaryTransform.ATTRIBUTE || + (summaryField.getTransform()==SummaryTransform.ATTRIBUTECOMBINER && summaryField.hasExplicitSingleSource()) || + summaryField.getTransform()==SummaryTransform.COPY || summaryField.getTransform()==SummaryTransform.DISTANCE || summaryField.getTransform()==SummaryTransform.GEOPOS || summaryField.getTransform()==SummaryTransform.POSITIONS || diff --git a/config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java b/config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java index 4fb45c3c68f..bcb0917b61a 100644 --- a/config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java +++ b/config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java @@ -37,6 +37,7 @@ public class SummaryConsistency extends Processor { assertConsistency(summaryField, schema, validate); makeAttributeTransformIfAppropriate(summaryField, schema); makeAttributeCombinerTransformIfAppropriate(summaryField, schema); + makeCopyTransformIfAppropriate(summaryField, schema); } } } @@ -78,6 +79,19 @@ public class SummaryConsistency extends Processor { } } + /* + * This function must be called after makeAttributeCombinerIfAppropriate(). + */ + private void makeCopyTransformIfAppropriate(SummaryField summaryField, Schema schema) { + if (summaryField.getTransform() == SummaryTransform.NONE) { + String source_field_name = summaryField.getSingleSource(); + ImmutableSDField source = schema.getField(source_field_name); + if (source != null && source.usesStructOrMap() && summaryField.hasExplicitSingleSource()) { + summaryField.setTransform(SummaryTransform.COPY); + } + } + } + private void assertConsistentTypes(SummaryField existing, SummaryField seen) { if (existing.getDataType() instanceof WeightedSetDataType && seen.getDataType() instanceof WeightedSetDataType && ((WeightedSetDataType)existing.getDataType()).getNestedType().equals(((WeightedSetDataType)seen.getDataType()).getNestedType())) 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 ed6668f0d0d..61889eb36e2 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 @@ -263,6 +263,18 @@ public class SummaryField extends Field implements Cloneable, TypedKey { } } + public boolean hasExplicitSingleSource() { + String fieldName = getName(); + String sourceName = getSingleSource(); + if (fieldName.equals(sourceName)) { + return false; + } + if (sourceName.contains(".")) { + return false; + } + return true; + } + public VsmCommand getVsmCommand() { return vsmCommand; } diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java index c50766a2585..a1ebc9e4bec 100644 --- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java +++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryTransform.java @@ -22,7 +22,8 @@ public enum SummaryTransform { GEOPOS("geopos"), ATTRIBUTECOMBINER("attributecombiner"), MATCHED_ELEMENTS_FILTER("matchedelementsfilter"), - MATCHED_ATTRIBUTE_ELEMENTS_FILTER("matchedattributeelementsfilter"); + MATCHED_ATTRIBUTE_ELEMENTS_FILTER("matchedattributeelementsfilter"), + COPY("copy"); private final String name; |