aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-06-29 10:57:40 +0200
committerTor Egge <Tor.Egge@online.no>2022-06-29 10:57:40 +0200
commit4eff6c24b1db63eca7c5a43f82768eda043cfedf (patch)
tree86bfcb0ce65fc6625e7b83972b9675804981ced9 /config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java
parentc4dc902aa6e301b6f56d526ea9cccc0fc5be7a00 (diff)
Use CopyDFW for struct field summaries with explicit source.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/SummaryConsistency.java14
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()))