diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-01-12 22:17:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-12 22:17:49 +0100 |
commit | 585a5b38c5811da950336c26326636773ca289e3 (patch) | |
tree | bacb7cb5b8d3e881a2df260589b9b0e046b12e89 /config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java | |
parent | b72c29c29a2c8dd8ecac8aeffdaff688b21ee41c (diff) |
Revert "Revert "Bratseth/tensor type info in documents""
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java index 1349abc3795..9ee5f48a906 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ValidateFieldTypes.java @@ -2,6 +2,7 @@ package com.yahoo.searchdefinition.processing; import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.document.TensorDataType; import com.yahoo.searchdefinition.RankProfileRegistry; import com.yahoo.searchdefinition.document.Attribute; import com.yahoo.document.DataType; @@ -49,22 +50,25 @@ public class ValidateFieldTypes extends Processor { DataType seenType = seenFields.get(fieldName); if (seenType == null) { seenFields.put(fieldName, fieldType); - } else if ( ! equalTypes(seenType, fieldType)) { - throw newProcessException(searchName, fieldName, "Duplicate field name with different types. Expected " + + } else if ( ! compatibleTypes(seenType, fieldType)) { + throw newProcessException(searchName, fieldName, "Incompatible types. Expected " + seenType.getName() + " for " + fieldDesc + " '" + fieldName + "', got " + fieldType.getName() + "."); } } - private boolean equalTypes(DataType d1, DataType d2) { + private boolean compatibleTypes(DataType seenType, DataType fieldType) { // legacy tag field type compatibility; probably not needed any more (Oct 2016) - if ("tag".equals(d1.getName())) { - return "tag".equals(d2.getName()) || "WeightedSet<string>".equals(d2.getName()); + if ("tag".equals(seenType.getName())) { + return "tag".equals(fieldType.getName()) || "WeightedSet<string>".equals(fieldType.getName()); } - if ("tag".equals(d2.getName())) { - return "tag".equals(d1.getName()) || "WeightedSet<string>".equals(d1.getName()); + if ("tag".equals(fieldType.getName())) { + return "tag".equals(seenType.getName()) || "WeightedSet<string>".equals(seenType.getName()); } - return d1.equals(d2); + if (seenType instanceof TensorDataType && fieldType instanceof TensorDataType) { + return fieldType.isAssignableFrom(seenType); // TODO: Just do this for all types + } + return seenType.equals(fieldType); } } |