diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-03-23 16:28:23 +0100 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-03-23 16:28:23 +0100 |
commit | 391cad97a68d3e23174ac73317ff3ab167023414 (patch) | |
tree | 3c7f332f3394ec24527853003a18760a8367eb54 /config-model | |
parent | 146da74b3b165289dfa3272183074b17ca61476c (diff) |
Imported field of type tensor is not supported.
Diffstat (limited to 'config-model')
2 files changed, 26 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java index 7ff17329609..df3f3701239 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.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.DocumentReference; import com.yahoo.searchdefinition.DocumentReferences; import com.yahoo.searchdefinition.RankProfileRegistry; @@ -61,6 +62,8 @@ public class ImportedFieldsResolver extends Processor { fail(importedField, targetFieldAsString(targetFieldName, reference) + ": Is not an attribute"); } else if (targetField.doesIndexing()) { fail(importedField, targetFieldAsString(targetFieldName, reference) + ": Index not allowed"); + } else if (targetField.getDataType() instanceof TensorDataType) { + fail(importedField, targetFieldAsString(targetFieldName, reference) + ": Type 'tensor' not supported"); } return targetField; } diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java index c14ee4f16e5..f02b7efe07c 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolverTestCase.java @@ -7,6 +7,7 @@ import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.document.DataType; import com.yahoo.document.ReferenceDataType; import com.yahoo.document.TemporaryStructuredDataType; +import com.yahoo.document.TensorDataType; import com.yahoo.searchdefinition.DocumentReference; import com.yahoo.searchdefinition.DocumentReferences; import com.yahoo.searchdefinition.Search; @@ -16,6 +17,7 @@ import com.yahoo.searchdefinition.document.SDDocumentType; import com.yahoo.searchdefinition.document.SDField; import com.yahoo.searchdefinition.document.TemporaryImportedField; import com.yahoo.searchdefinition.document.TemporarySDField; +import com.yahoo.tensor.TensorType; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -65,7 +67,7 @@ public class ImportedFieldsResolverTestCase { } @Test - public void resolver_fails_if_referenced_field_is_not_an_attribute() { + public void resolver_fails_if_imported_field_is_not_an_attribute() { exceptionRule.expect(IllegalArgumentException.class); exceptionRule.expectMessage("For search 'ad', import field 'my_not_attribute': " + "Field 'not_attribute' via reference field 'campaign_ref': Is not an attribute"); @@ -73,7 +75,7 @@ public class ImportedFieldsResolverTestCase { } @Test - public void resolver_fails_is_referenced_fields_is_indexing() { + public void resolver_fails_if_imported_field_is_indexing() { exceptionRule.expect(IllegalArgumentException.class); exceptionRule.expectMessage( "For search 'ad', import field 'my_attribute_and_index': " + @@ -83,6 +85,17 @@ public class ImportedFieldsResolverTestCase { .resolve(); } + @Test + public void resolver_fails_if_imported_field_is_tensor_type() { + exceptionRule.expect(IllegalArgumentException.class); + exceptionRule.expectMessage( + "For search 'ad', import field 'my_tensor_field': " + + "Field 'tensor_field' via reference field 'campaign_ref': Type 'tensor' not supported"); + new SearchModel() + .add(new TemporaryImportedField("my_tensor_field", "campaign_ref", "tensor_field")) + .resolve(); + } + private static class SearchModel { public final Search campaignSearch; public final Search adSearch; @@ -92,13 +105,10 @@ public class ImportedFieldsResolverTestCase { campaignSearch = new Search("campaign", app); campaignSearch.addDocument(new SDDocumentType("campaign")); - TemporarySDField budgetField = new TemporarySDField("budget", DataType.INT); - budgetField.parseIndexingScript("{ attribute }"); - TemporarySDField attributeAndIndexField = new TemporarySDField("attribute_and_index", DataType.INT); - attributeAndIndexField.parseIndexingScript("{ attribute | index }"); - campaignSearch.getDocument().addField(budgetField); - campaignSearch.getDocument().addField(attributeAndIndexField); + campaignSearch.getDocument().addField(createField("budget", DataType.INT, "{ attribute }")); + campaignSearch.getDocument().addField(createField("attribute_and_index", DataType.INT, "{ attribute | index }")); campaignSearch.getDocument().addField(new TemporarySDField("not_attribute", DataType.INT)); + campaignSearch.getDocument().addField(createField("tensor_field", new TensorDataType(TensorType.fromSpec("tensor(x[])")), "{ attribute }")); adSearch = new Search("ad", app); adSearch.addDocument(new SDDocumentType("ad")); @@ -107,6 +117,11 @@ public class ImportedFieldsResolverTestCase { adSearch.getDocument().setDocumentReferences(new DocumentReferences(ImmutableMap.of(campaignRefField.getName(), new DocumentReference(campaignRefField, campaignSearch)))); } + private TemporarySDField createField(String name, DataType dataType, String indexingScript) { + TemporarySDField result = new TemporarySDField(name, dataType); + result.parseIndexingScript(indexingScript); + return result; + } public SearchModel add(TemporaryImportedField importedField) { adSearch.temporaryImportedFields().get().add(importedField); return this; |