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/yahoo/schema/processing | |
parent | c4dc902aa6e301b6f56d526ea9cccc0fc5be7a00 (diff) |
Use CopyDFW for struct field summaries with explicit source.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/processing')
-rw-r--r-- | config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java | 14 |
1 files changed, 14 insertions, 0 deletions
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())) |