diff options
156 files changed, 747 insertions, 1419 deletions
diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java index ff1a582d7fa..9c507d7be05 100644 --- a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java +++ b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeCollection.java @@ -9,9 +9,7 @@ import java.util.Collection; * @author baldersheim */ public interface DataTypeCollection { - - DataType getDataType(String name); - DataType getDataType(int id); - Collection<DataType> getTypes(); - + public DataType getDataType(String name); + public DataType getDataType(int id); + public Collection<DataType> getTypes(); } diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java index 2c527201ce4..73f8d7f91c5 100644 --- a/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java +++ b/config-model/src/main/java/com/yahoo/documentmodel/DataTypeRepo.java @@ -11,7 +11,6 @@ import java.util.Map; * @author baldersheim */ public class DataTypeRepo implements DataTypeCollection { - Map<Integer, DataType> typeById = new LinkedHashMap<>(); Map<String, DataType> typeByName = new LinkedHashMap<>(); @@ -26,9 +25,10 @@ public class DataTypeRepo implements DataTypeCollection { public Collection<DataType> getTypes() { return typeById.values(); } public DataTypeRepo add(DataType type) { - if (typeByName.containsKey(type.getName()) || typeById.containsKey(type.getId())) { - throw new IllegalStateException("Data type '" + type.getName() + "', id '" + - type.getId() + "' is already registered."); + if (typeByName.containsKey(type.getName()) || + typeById.containsKey(type.getId())) + { + throw new IllegalStateException("Data type '" + type.getName() + "', id '" + type.getId() + "' is already registered."); } typeByName.put(type.getName(), type); typeById.put(type.getId(), type); diff --git a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java index 1abbf8b3ae1..b71a400666a 100644 --- a/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java +++ b/config-model/src/main/java/com/yahoo/documentmodel/DocumentTypeRepo.java @@ -9,7 +9,6 @@ import java.util.Map; * @author baldersheim */ public class DocumentTypeRepo implements DocumentTypeCollection { - final Map<Integer, NewDocumentType> typeById = new LinkedHashMap<>(); final Map<NewDocumentType.Name, NewDocumentType> typeByName = new LinkedHashMap<>(); @@ -37,5 +36,4 @@ public class DocumentTypeRepo implements DocumentTypeCollection { typeById.put(type.getFullName().getId(), type); return this; } - } diff --git a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java index 7c594a4e836..ccf9bdec302 100644 --- a/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java +++ b/config-model/src/main/java/com/yahoo/documentmodel/NewDocumentType.java @@ -13,10 +13,15 @@ import com.yahoo.searchdefinition.processing.BuiltInFieldSets; import java.util.*; /** + * TODO: What is this and why? + * * @author baldersheim */ public final class NewDocumentType extends StructuredDataType implements DataTypeCollection { + /** + * TODO: What is this and why? + */ public static final class Name { // TODO: privatize diff --git a/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java b/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java index 09aa55f776b..793a5fcff6c 100644 --- a/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java +++ b/config-model/src/main/java/com/yahoo/documentmodel/VespaDocumentType.java @@ -32,6 +32,7 @@ public class VespaDocumentType { vespa.add(PositionDataType.INSTANCE); vespa.add(DataType.URI); vespa.add(DataType.PREDICATE); + vespa.add(DataType.TENSOR); return vespa; } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java b/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java index 2a723596255..7d8a87cee8c 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/SDDocumentTypeOrderer.java @@ -11,10 +11,9 @@ import java.util.*; import java.util.logging.Level; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class SDDocumentTypeOrderer { - private Map<DataTypeName, SDDocumentType> createdSDTypes = new LinkedHashMap<>(); private Set<Integer> seenTypes = new LinkedHashSet<>(); List<SDDocumentType> processingOrder = new LinkedList<>(); @@ -120,8 +119,6 @@ public class SDDocumentTypeOrderer { //do nothing } else if (type instanceof PrimitiveDataType) { //do nothing - } else if (type instanceof TensorDataType) { - //do nothing } else { deployLogger.log(Level.WARNING, "Unknown type : " + type); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java index bc52aa27f4c..950ec791368 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/Attribute.java @@ -25,6 +25,10 @@ public final class Attribute implements Cloneable, Serializable { private Type type; private CollectionType collectionType; + /** True if only the enum information should be read from this attribute + * (i.e. the actual values are not relevant, only which documents have the + * same values) Used for collapsing and unique. + */ private boolean removeIfZero = false; private boolean createIfNonExistent = false; private boolean enableBitVectors = false; @@ -37,8 +41,6 @@ public final class Attribute implements Cloneable, Serializable { private long lowerBound = BooleanIndexDefinition.DEFAULT_LOWER_BOUND; private long upperBound = BooleanIndexDefinition.DEFAULT_UPPER_BOUND; private double densePostingListThreshold = BooleanIndexDefinition.DEFAULT_DENSE_POSTING_LIST_THRESHOLD; - - /** This is set if the type of this is TENSOR */ private Optional<TensorType> tensorType = Optional.empty(); private boolean isPosition = false; @@ -102,21 +104,16 @@ public final class Attribute implements Cloneable, Serializable { } /** Creates an attribute with default settings */ - public Attribute(String name, DataType fieldType) { - this(name, convertDataType(fieldType), convertCollectionType(fieldType), convertTensorType(fieldType)); + public Attribute(String name,DataType fieldType) { + this(name,convertDataType(fieldType), convertCollectionType(fieldType)); setRemoveIfZero(fieldType instanceof WeightedSetDataType ? ((WeightedSetDataType)fieldType).removeIfZero() : false); setCreateIfNonExistent(fieldType instanceof WeightedSetDataType ? ((WeightedSetDataType)fieldType).createIfNonExistent() : false); } - public Attribute(String name, Type type, CollectionType collectionType) { - this(name, type, collectionType, Optional.empty()); - } - - public Attribute(String name, Type type, CollectionType collectionType, Optional<TensorType> tensorType) { + public Attribute(String name,Type type, CollectionType collectionType) { this.name=name; setType(type); setCollectionType(collectionType); - this.tensorType = tensorType; } /** @@ -214,42 +211,44 @@ public final class Attribute implements Cloneable, Serializable { } /** Converts to the right attribute type from a field datatype */ - private static CollectionType convertCollectionType(DataType fieldType) { + public static CollectionType convertCollectionType(DataType fieldType) { if (fieldType instanceof ArrayDataType) { return CollectionType.ARRAY; } else if (fieldType instanceof WeightedSetDataType) { return CollectionType.WEIGHTEDSET; - } else if (fieldType instanceof TensorDataType) { - return CollectionType.SINGLE; } else if (fieldType instanceof PrimitiveDataType) { return CollectionType.SINGLE; } else { throw new IllegalArgumentException("Field " + fieldType + " not supported in convertCollectionType"); } } - - private static Optional<TensorType> convertTensorType(DataType fieldType) { - if ( ! ( fieldType instanceof TensorDataType)) return Optional.empty(); - return Optional.of(((TensorDataType)fieldType).getTensorType()); - } /** Converts to the right field type from an attribute type */ - private DataType toDataType(Type attributeType) { - switch (attributeType) { - case STRING : return DataType.STRING; - case INTEGER: return DataType.INT; - case LONG: return DataType.LONG; - case FLOAT: return DataType.FLOAT; - case DOUBLE: return DataType.DOUBLE; - case BYTE: return DataType.BYTE; - case PREDICATE: return DataType.PREDICATE; - case TENSOR: return DataType.getTensor(tensorType.orElseThrow(IllegalStateException::new)); - default: throw new IllegalArgumentException("Unknown attribute type " + attributeType); + public static DataType convertAttrType(Type attrType) { + if (attrType== Type.STRING) { + return DataType.STRING; + } else if (attrType== Type.INTEGER) { + return DataType.INT; + } else if (attrType== Type.LONG) { + return DataType.LONG; + } else if (attrType== Type.FLOAT) { + return DataType.FLOAT; + } else if (attrType== Type.DOUBLE) { + return DataType.DOUBLE; + } else if (attrType == Type.BYTE) { + return DataType.BYTE; + } else if (attrType == Type.PREDICATE) { + return DataType.PREDICATE; + } else if (attrType == Type.TENSOR) { + return DataType.TENSOR; + } else { + throw new IllegalArgumentException("Don't know which attribute type to " + + "convert " + attrType + " to"); } } public DataType getDataType() { - DataType dataType = toDataType(type); + DataType dataType = Attribute.convertAttrType(type); if (collectionType.equals(Attribute.CollectionType.ARRAY)) { return DataType.getArray(dataType); } else if (collectionType.equals(Attribute.CollectionType.WEIGHTEDSET)) { diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java index 78f0d9a2997..3b28f380b2d 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/fieldoperation/FieldOperation.java @@ -11,7 +11,6 @@ import com.yahoo.searchdefinition.document.SDField; */ public interface FieldOperation extends Comparable<FieldOperation> { - /** Apply this operation on the given field */ void apply(SDField field); @Override diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java index d8b95391ecb..af04deb5347 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingValidation.java @@ -16,7 +16,7 @@ import java.util.HashSet; import java.util.Set; /** - * @author Simon Thoresen + * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> */ public class IndexingValidation extends Processor { @@ -26,11 +26,11 @@ public class IndexingValidation extends Processor { @Override public void process() { - VerificationContext context = new VerificationContext(new MyAdapter(search)); + VerificationContext ctx = new VerificationContext(new MyAdapter(search)); for (SDField field : search.allFieldsList()) { ScriptExpression script = field.getIndexingScript(); try { - script.verify(context); + script.verify(ctx); MyConverter converter = new MyConverter(); for (StatementExpression exp : script) { converter.convert(exp); // TODO: stop doing this explicitly when visiting a script does not branch @@ -123,7 +123,8 @@ public class IndexingValidation extends Processor { throw new UnsupportedOperationException(); } if (!fieldType.isAssignableFrom(valueType) && - !fieldType.isAssignableFrom(createCompatType(valueType))) { + !fieldType.isAssignableFrom(createCompatType(valueType))) + { throw new VerificationException(exp, "Can not assign " + valueType.getName() + " to " + fieldDesc + " '" + fieldName + "' which is " + fieldType.getName() + "."); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java index 36cf302477e..ae16f6cfed8 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/TensorFieldProcessor.java @@ -2,9 +2,7 @@ package com.yahoo.searchdefinition.processing; import com.yahoo.config.application.api.DeployLogger; -import com.yahoo.document.CollectionDataType; import com.yahoo.document.DataType; -import com.yahoo.document.TensorDataType; import com.yahoo.searchdefinition.RankProfileRegistry; import com.yahoo.searchdefinition.Search; import com.yahoo.searchdefinition.document.Attribute; @@ -25,13 +23,12 @@ public class TensorFieldProcessor extends Processor { @Override public void process() { for (SDField field : search.allFieldsList()) { - if ( field.getDataType() instanceof TensorDataType ) { + if (field.getDataType() == DataType.TENSOR) { warnUseOfTensorFieldAsAttribute(field); validateIndexingScripsForTensorField(field); validateAttributeSettingForTensorField(field); - } - else if (field.getDataType() instanceof CollectionDataType){ - validateDataTypeForCollectionField(field); + } else { + validateDataTypeForField(field); } } } @@ -58,9 +55,9 @@ public class TensorFieldProcessor extends Processor { } } - private void validateDataTypeForCollectionField(SDField field) { - if (((CollectionDataType)field.getDataType()).getNestedType() instanceof TensorDataType) + private void validateDataTypeForField(SDField field) { + if (field.getDataType().getPrimitiveType() == DataType.TENSOR) { fail(search, field, "A field with collection type of tensor is not supported. Use simple type 'tensor' instead."); + } } - } 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 9ee5f48a906..1349abc3795 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,7 +2,6 @@ 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; @@ -50,25 +49,22 @@ public class ValidateFieldTypes extends Processor { DataType seenType = seenFields.get(fieldName); if (seenType == null) { seenFields.put(fieldName, fieldType); - } else if ( ! compatibleTypes(seenType, fieldType)) { - throw newProcessException(searchName, fieldName, "Incompatible types. Expected " + + } else if ( ! equalTypes(seenType, fieldType)) { + throw newProcessException(searchName, fieldName, "Duplicate field name with different types. Expected " + seenType.getName() + " for " + fieldDesc + " '" + fieldName + "', got " + fieldType.getName() + "."); } } - private boolean compatibleTypes(DataType seenType, DataType fieldType) { + private boolean equalTypes(DataType d1, DataType d2) { // legacy tag field type compatibility; probably not needed any more (Oct 2016) - if ("tag".equals(seenType.getName())) { - return "tag".equals(fieldType.getName()) || "WeightedSet<string>".equals(fieldType.getName()); + if ("tag".equals(d1.getName())) { + return "tag".equals(d2.getName()) || "WeightedSet<string>".equals(d2.getName()); } - if ("tag".equals(fieldType.getName())) { - return "tag".equals(seenType.getName()) || "WeightedSet<string>".equals(seenType.getName()); + if ("tag".equals(d2.getName())) { + return "tag".equals(d1.getName()) || "WeightedSet<string>".equals(d1.getName()); } - if (seenType instanceof TensorDataType && fieldType instanceof TensorDataType) { - return fieldType.isAssignableFrom(seenType); // TODO: Just do this for all types - } - return seenType.equals(fieldType); + return d1.equals(d2); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java index 705ec4dc4a1..3cdcf55b34e 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentManager.java @@ -17,39 +17,39 @@ import java.util.Set; /** * @author baldersheim + * @since 2010-02-19 */ public class DocumentManager { - public DocumentmanagerConfig.Builder produce(DocumentModel model, - DocumentmanagerConfig.Builder documentConfigBuilder) { - documentConfigBuilder.enablecompression(false); + public DocumentmanagerConfig.Builder produce(DocumentModel model, DocumentmanagerConfig.Builder docman) { + docman.enablecompression(false); Set<DataType> handled = new HashSet<>(); for(NewDocumentType documentType : model.getDocumentManager().getTypes()) { - buildConfig(documentType, documentConfigBuilder, handled); - buildConfig(documentType.getAnnotations(), documentConfigBuilder); + handle(documentType, docman, handled); + handleAnnotations(documentType.getAnnotations(), docman); if ( documentType != VespaDocumentType.INSTANCE) { - DocumentmanagerConfig.Datatype.Builder dataTypeBuilder = new DocumentmanagerConfig.Datatype.Builder(); - documentConfigBuilder.datatype(dataTypeBuilder); - buildConfig(documentType, dataTypeBuilder); + DocumentmanagerConfig.Datatype.Builder dt = new DocumentmanagerConfig.Datatype.Builder(); + docman.datatype(dt); + handleDataType(documentType, dt); } } - return documentConfigBuilder; + return docman; } - private void buildConfig(DataTypeCollection type, DocumentmanagerConfig.Builder documentConfigBuilder, Set<DataType> built) { + private void handle(DataTypeCollection type, DocumentmanagerConfig.Builder docman, Set<DataType> handled) { for (DataType dataType : type.getTypes()) { - if (built.contains(dataType)) continue; - built.add(dataType); + if (handled.contains(dataType)) continue; + handled.add(dataType); if (dataType instanceof TemporaryStructuredDataType) continue; - if ((dataType.getId() < 0) || (dataType.getId()> DataType.lastPredefinedDataTypeId())) { - Datatype.Builder dataTypeBuilder = new Datatype.Builder(); - documentConfigBuilder.datatype(dataTypeBuilder); - buildConfig(dataType, dataTypeBuilder); + if ((dataType.getId() < 0) || (DataType.lastPredefinedDataTypeId() < dataType.getId())) { + Datatype.Builder dtc = new Datatype.Builder(); + docman.datatype(dtc); + handleDataType(dataType, dtc); } } } - private void buildConfig(AnnotationType type, DocumentmanagerConfig.Annotationtype.Builder atb) { + private void handleAnnotation(AnnotationType type, DocumentmanagerConfig.Annotationtype.Builder atb) { atb. id(type.getId()). name(type.getName()); @@ -62,34 +62,34 @@ public class DocumentManager { } } } - private void buildConfig(Collection<AnnotationType> types, DocumentmanagerConfig.Builder builder) { + private void handleAnnotations(Collection<AnnotationType> types, DocumentmanagerConfig.Builder builder) { for (AnnotationType type : types) { DocumentmanagerConfig.Annotationtype.Builder atb = new DocumentmanagerConfig.Annotationtype.Builder(); - buildConfig(type, atb); + handleAnnotation(type, atb); builder.annotationtype(atb); } } - private void buildConfig(DataType type, Datatype.Builder builder) { - builder.id(type.getId()); + private void handleDataType(DataType type, Datatype.Builder dtc) { + dtc.id(type.getId()); if (type instanceof ArrayDataType) { CollectionDataType dt = (CollectionDataType) type; - builder.arraytype(new Datatype.Arraytype.Builder().datatype(dt.getNestedType().getId())); + dtc.arraytype(new Datatype.Arraytype.Builder().datatype(dt.getNestedType().getId())); } else if (type instanceof WeightedSetDataType) { WeightedSetDataType dt = (WeightedSetDataType) type; - builder.weightedsettype(new Datatype.Weightedsettype.Builder(). + dtc.weightedsettype(new Datatype.Weightedsettype.Builder(). datatype(dt.getNestedType().getId()). createifnonexistant(dt.createIfNonExistent()). removeifzero(dt.removeIfZero())); } else if (type instanceof MapDataType) { MapDataType mtype = (MapDataType) type; - builder.maptype(new Datatype.Maptype.Builder(). + dtc.maptype(new Datatype.Maptype.Builder(). keytype(mtype.getKeyType().getId()). valtype(mtype.getValueType().getId())); } else if (type instanceof DocumentType) { DocumentType dt = (DocumentType) type; Datatype.Documenttype.Builder doc = new Datatype.Documenttype.Builder(); - builder.documenttype(doc); + dtc.documenttype(doc); doc. name(dt.getName()). headerstruct(dt.getHeaderType().getId()). @@ -100,7 +100,7 @@ public class DocumentManager { } else if (type instanceof NewDocumentType) { NewDocumentType dt = (NewDocumentType) type; Datatype.Documenttype.Builder doc = new Datatype.Documenttype.Builder(); - builder.documenttype(doc); + dtc.documenttype(doc); doc. name(dt.getName()). headerstruct(dt.getHeader().getId()). @@ -108,56 +108,49 @@ public class DocumentManager { for (NewDocumentType inherited : dt.getInherited()) { doc.inherits(new Datatype.Documenttype.Inherits.Builder().name(inherited.getName())); } - buildConfig(dt.getFieldSets(), doc); + handleFieldSets(dt.getFieldSets(), doc); } else if (type instanceof TemporaryStructuredDataType) { //Ignored } else if (type instanceof StructDataType) { - StructDataType structType = (StructDataType) type; - Datatype.Structtype.Builder structBuilder = new Datatype.Structtype.Builder(); - builder.structtype(structBuilder); - structBuilder.name(structType.getName()); - if (structType.getCompressionConfig().type.getCode() != 0) { - structBuilder. - compresstype(Datatype.Structtype.Compresstype.Enum.valueOf(structType.getCompressionConfig().type.toString())). - compresslevel(structType.getCompressionConfig().compressionLevel). - compressthreshold((int)structType.getCompressionConfig().threshold). - compressminsize((int)structType.getCompressionConfig().minsize); + StructDataType dt = (StructDataType) type; + Datatype.Structtype.Builder st = new Datatype.Structtype.Builder(); + dtc.structtype(st); + st.name(dt.getName()); + if (dt.getCompressionConfig().type.getCode() != 0) { + st. + compresstype(Datatype.Structtype.Compresstype.Enum.valueOf(dt.getCompressionConfig().type.toString())). + compresslevel(dt.getCompressionConfig().compressionLevel). + compressthreshold((int)dt.getCompressionConfig().threshold). + compressminsize((int)dt.getCompressionConfig().minsize); } - for (com.yahoo.document.Field field : structType.getFieldsThisTypeOnly()) { - Datatype.Structtype.Field.Builder fieldBuilder = new Datatype.Structtype.Field.Builder(); - structBuilder.field(fieldBuilder); - fieldBuilder.name(field.getName()); + for (com.yahoo.document.Field field : dt.getFieldsThisTypeOnly()) { + Datatype.Structtype.Field.Builder fb = new Datatype.Structtype.Field.Builder(); + st.field(fb); + fb.name(field.getName()); if (field.hasForcedId()) { - fieldBuilder.id(new Datatype.Structtype.Field.Id.Builder().id(field.getId())); + fb.id(new Datatype.Structtype.Field.Id.Builder().id(field.getId())); } - fieldBuilder.datatype(field.getDataType().getId()); - - if (field.getDataType() instanceof TensorDataType) - fieldBuilder.detailedtype(((TensorDataType)field.getDataType()).getTensorType().toString()); + fb.datatype(field.getDataType().getId()); } - for (StructDataType inherited : structType.getInheritedTypes()) { - structBuilder.inherits(new Datatype.Structtype.Inherits.Builder().name(inherited.getName())); + for (StructDataType inherited : dt.getInheritedTypes()) { + st.inherits(new Datatype.Structtype.Inherits.Builder().name(inherited.getName())); } } else if (type instanceof AnnotationReferenceDataType) { AnnotationReferenceDataType annotationRef = (AnnotationReferenceDataType) type; - builder.annotationreftype(new Datatype.Annotationreftype.Builder().annotation(annotationRef.getAnnotationType().getName())); - } else if (type instanceof TensorDataType) { - // Nothing to do; the type of the tensor is instead stored in each field as detailed type information - // to provide better compatibility. A tensor field can have its tensorType changed (in compatible ways) - // without changing the field type and thus requiring data refeed + dtc.annotationreftype(new Datatype.Annotationreftype.Builder().annotation(annotationRef.getAnnotationType().getName())); } else { - throw new IllegalArgumentException("Can not create config for data type '" + type.getName()); + throw new IllegalArgumentException("Can not handle datatype '" + type.getName()); } } - private void buildConfig(Set<FieldSet> fieldSets, Datatype.Documenttype.Builder doc) { + private void handleFieldSets(Set<FieldSet> fieldSets, Datatype.Documenttype.Builder doc) { + for (FieldSet builtinFs : fieldSets) { - buildConfig(builtinFs, doc); + handleFieldSet(builtinFs, doc); } } - private void buildConfig(FieldSet fs, Datatype.Documenttype.Builder doc) { + private void handleFieldSet(FieldSet fs, Datatype.Documenttype.Builder doc) { doc.fieldsets(fs.getName(), new Datatype.Documenttype.Fieldsets.Builder().fields(fs.getFieldNames())); } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java index ebe18b36410..2ba34def464 100644 --- a/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java +++ b/config-model/src/main/java/com/yahoo/vespa/configmodel/producers/DocumentTypes.java @@ -2,11 +2,13 @@ package com.yahoo.vespa.configmodel.producers; import com.yahoo.document.*; +import com.yahoo.document.DocumenttypesConfig.Builder; import com.yahoo.document.annotation.AnnotationReferenceDataType; import com.yahoo.document.annotation.AnnotationType; import com.yahoo.documentmodel.DataTypeCollection; import com.yahoo.documentmodel.NewDocumentType; import com.yahoo.documentmodel.VespaDocumentType; +import com.yahoo.searchdefinition.FieldSets; import com.yahoo.searchdefinition.document.FieldSet; import com.yahoo.vespa.documentmodel.DocumentModel; import java.util.*; @@ -29,12 +31,12 @@ public class DocumentTypes { for (NewDocumentType inherited : documentType.getInherited()) { produceInheritOrder(inherited, builder, produced); } - buildConfig(documentType, builder); + handle(documentType, builder); produced.put(documentType.getFullName(), documentType); } } - private void buildConfig(NewDocumentType documentType, DocumenttypesConfig.Builder builder) { + private void handle(NewDocumentType documentType, DocumenttypesConfig.Builder builder) { if (documentType == VespaDocumentType.INSTANCE) { return; } @@ -44,40 +46,40 @@ public class DocumentTypes { name(documentType.getName()). headerstruct(documentType.getHeader().getId()). bodystruct(documentType.getBody().getId()); - Set<Integer> built = new HashSet<>(); + Set<Integer> handled = new HashSet<>(); for (NewDocumentType inherited : documentType.getInherited()) { db.inherits(new DocumenttypesConfig.Documenttype.Inherits.Builder().id(inherited.getId())); - markAsBuilt(built, inherited.getAllTypes()); + markAsHandled(handled, inherited.getAllTypes()); } for (DataType dt : documentType.getTypes()) { - buildConfig(dt, db, built); + handle(dt, db, handled); } for(AnnotationType annotation : documentType.getAnnotations()) { DocumenttypesConfig.Documenttype.Annotationtype.Builder atb = new DocumenttypesConfig.Documenttype.Annotationtype.Builder(); db.annotationtype(atb); - buildConfig(annotation, atb); + handle(annotation, atb); } - buildConfig(documentType.getFieldSets(), db); + handleFieldSets(documentType.getFieldSets(), db); builder.documenttype(db); } - private void buildConfig(Set<FieldSet> fieldSets, com.yahoo.document.DocumenttypesConfig.Documenttype.Builder db) { + private void handleFieldSets(Set<FieldSet> fieldSets, com.yahoo.document.DocumenttypesConfig.Documenttype.Builder db) { for (FieldSet fs : fieldSets) { - buildConfig(fs, db); + handleFieldSet(fs, db); } } - private void buildConfig(FieldSet fs, DocumenttypesConfig.Documenttype.Builder db) { + private void handleFieldSet(FieldSet fs, DocumenttypesConfig.Documenttype.Builder db) { db.fieldsets(fs.getName(), new DocumenttypesConfig.Documenttype.Fieldsets.Builder().fields(fs.getFieldNames())); } - private void markAsBuilt(Set<Integer> built, DataTypeCollection typeCollection) { + private void markAsHandled(Set<Integer> handled, DataTypeCollection typeCollection) { for (DataType type : typeCollection.getTypes()) { - built.add(type.getId()); + handled.add(type.getId()); } } - private void buildConfig(AnnotationType annotation, DocumenttypesConfig.Documenttype.Annotationtype.Builder builder) { + private void handle(AnnotationType annotation, DocumenttypesConfig.Documenttype.Annotationtype.Builder builder) { builder. id(annotation.getId()). name(annotation.getName()); @@ -90,77 +92,67 @@ public class DocumentTypes { } } - private void buildConfig(DataType type, DocumenttypesConfig.Documenttype.Builder documentBuilder, Set<Integer> built) { - if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && ! built.contains(type.getId())) { - built.add(type.getId()); - DocumenttypesConfig.Documenttype.Datatype.Builder dataTypeBuilder = new DocumenttypesConfig.Documenttype.Datatype.Builder(); - dataTypeBuilder.id(type.getId()); + private void handle(DataType type, DocumenttypesConfig.Documenttype.Builder db, Set<Integer> handled) { + if ((VespaDocumentType.INSTANCE.getDataType(type.getId()) == null) && ! handled.contains(type.getId())) { + handled.add(type.getId()); + DocumenttypesConfig.Documenttype.Datatype.Builder dtb = new DocumenttypesConfig.Documenttype.Datatype.Builder(); + dtb.id(type.getId()); if (type instanceof StructDataType) { - dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.STRUCT); + dtb.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.valueOf("STRUCT")); StructDataType dt = (StructDataType) type; - DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder structBuilder = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder(); - dataTypeBuilder.sstruct(structBuilder); - structBuilder.name(dt.getName()); + DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder sb = new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Builder(); + dtb.sstruct(sb); + sb.name(dt.getName()); if (dt.getCompressionConfig().type.getCode() != 0) { - structBuilder.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder(). + sb.compression(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Builder(). type(DocumenttypesConfig.Documenttype.Datatype.Sstruct.Compression.Type.Enum.valueOf(dt.getCompressionConfig().type.toString())). level(dt.getCompressionConfig().compressionLevel). threshold((int)dt.getCompressionConfig().threshold). minsize((int)dt.getCompressionConfig().minsize)); } for (com.yahoo.document.Field field : dt.getFields()) { - DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder builder = - new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder(); - builder.name(field.getName()). + sb.field(new DocumenttypesConfig.Documenttype.Datatype.Sstruct.Field.Builder(). + name(field.getName()). id(field.getId()). id_v6(field.getIdV6()). - datatype(field.getDataType().getId()); - if (field.getDataType() instanceof TensorDataType) - builder.detailedtype(((TensorDataType)field.getDataType()).getTensorType().toString()); - structBuilder.field(builder); - buildConfig(field.getDataType(), documentBuilder, built); + datatype(field.getDataType().getId())); + handle(field.getDataType(), db, handled); } } else if (type instanceof ArrayDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ARRAY). + dtb. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.valueOf("ARRAY")). array(new DocumenttypesConfig.Documenttype.Datatype.Array.Builder(). element(new DocumenttypesConfig.Documenttype.Datatype.Array.Element.Builder().id(((ArrayDataType)type).getNestedType().getId()))); - buildConfig(((ArrayDataType)type).getNestedType(), documentBuilder, built); + handle(((ArrayDataType)type).getNestedType(), db, handled); } else if (type instanceof WeightedSetDataType) { - dataTypeBuilder.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.WSET). + dtb.type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.valueOf("WSET")). wset(new DocumenttypesConfig.Documenttype.Datatype.Wset.Builder(). key(new DocumenttypesConfig.Documenttype.Datatype.Wset.Key.Builder(). id(((WeightedSetDataType)type).getNestedType().getId())). createifnonexistent(((WeightedSetDataType)type).createIfNonExistent()). removeifzero(((WeightedSetDataType)type).removeIfZero())); - buildConfig(((WeightedSetDataType)type).getNestedType(), documentBuilder, built); + handle(((WeightedSetDataType)type).getNestedType(), db, handled); } else if (type instanceof MapDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.MAP). + dtb. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.valueOf("MAP")). map(new DocumenttypesConfig.Documenttype.Datatype.Map.Builder(). key(new DocumenttypesConfig.Documenttype.Datatype.Map.Key.Builder(). id(((MapDataType)type).getKeyType().getId())). value(new DocumenttypesConfig.Documenttype.Datatype.Map.Value.Builder(). id(((MapDataType)type).getValueType().getId()))); - buildConfig(((MapDataType)type).getKeyType(), documentBuilder, built); - buildConfig(((MapDataType)type).getValueType(), documentBuilder, built); + handle(((MapDataType)type).getKeyType(), db, handled); + handle(((MapDataType)type).getValueType(), db, handled); } else if (type instanceof AnnotationReferenceDataType) { - dataTypeBuilder. - type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.ANNOTATIONREF). + dtb. + type(DocumenttypesConfig.Documenttype.Datatype.Type.Enum.valueOf("ANNOTATIONREF")). annotationref(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Builder(). annotation(new DocumenttypesConfig.Documenttype.Datatype.Annotationref.Annotation.Builder(). id(((AnnotationReferenceDataType)type).getAnnotationType().getId()))); - } else if (type instanceof TensorDataType) { - // The type of the tensor is not stored here but instead in each field as detailed type information - // to provide better compatibility. A tensor field can have its tensorType changed (in compatible ways) - // without changing the field type and thus requiring data refeed - return; } else { return; } - documentBuilder.datatype(dataTypeBuilder); + db.datatype(dtb); } } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java index 1d39d1e6928..c03fb0617b8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidator.java @@ -43,7 +43,7 @@ public class SearchDataTypeValidator extends Validator { for (Field field : doc.fieldSet()) { DataType fieldType = field.getDataType(); disallowIndexingOfMaps(cluster, def, field); - if ( ! isSupportedInSearchClusters(fieldType)) { + if (!validateDataType(fieldType)) { throw new IllegalArgumentException("Field type '" + fieldType.getName() + "' is illegal for search " + "clusters (field '" + field.getName() + "' in definition '" + def.getName() + "' for cluster '" + cluster.getClusterName() + "')."); @@ -51,30 +51,28 @@ public class SearchDataTypeValidator extends Validator { } } - private boolean isSupportedInSearchClusters(DataType dataType) { - if (dataType instanceof ArrayDataType || dataType instanceof WeightedSetDataType) { - return isSupportedInSearchClusters(((CollectionDataType)dataType).getNestedType()); + private boolean validateDataType(DataType dataType) { + if (dataType instanceof ArrayDataType || + dataType instanceof WeightedSetDataType) + { + return validateDataType(((CollectionDataType)dataType).getNestedType()); } - else if (dataType instanceof StructDataType) { + if (dataType instanceof StructDataType) { return true; // Struct will work for summary TODO maybe check individual fields } - else if (dataType instanceof MapDataType) { + if (dataType instanceof MapDataType) { return true; // Maps will work for summary, see disallowIndexingOfMaps() } - else if (dataType instanceof TensorDataType) { - return true; - } - else { - return dataType.equals(DataType.INT) || - dataType.equals(DataType.FLOAT) || - dataType.equals(DataType.STRING) || - dataType.equals(DataType.RAW) || - dataType.equals(DataType.LONG) || - dataType.equals(DataType.DOUBLE) || - dataType.equals(DataType.URI) || - dataType.equals(DataType.BYTE) || - dataType.equals(DataType.PREDICATE); - } + return dataType.equals(DataType.INT) || + dataType.equals(DataType.FLOAT) || + dataType.equals(DataType.STRING) || + dataType.equals(DataType.RAW) || + dataType.equals(DataType.LONG) || + dataType.equals(DataType.DOUBLE) || + dataType.equals(DataType.URI) || + dataType.equals(DataType.BYTE) || + dataType.equals(DataType.PREDICATE) || + dataType.equals(DataType.TENSOR); } private void disallowIndexingOfMaps(AbstractSearchCluster cluster, SearchDefinition def, Field field) { diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index 3fc84f2860b..32be8906ffc 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -805,14 +805,13 @@ DataType dataType() : DataType mapType=null; DataType arrayType=null; DataType wsetType=null; - TensorType tensorType; + } { ( LOOKAHEAD(<ARRAY> <LESSTHAN>) ( <ARRAY> <LESSTHAN> arrayType = dataType() <GREATERTHAN> { return DataType.getArray(arrayType); } ) | LOOKAHEAD(<WEIGHTEDSET> <LESSTHAN>) ( <WEIGHTEDSET> <LESSTHAN> wsetType = dataType() <GREATERTHAN> { return DataType.getWeightedSet(wsetType); } ) | LOOKAHEAD(<MAP> <LESSTHAN>) ( mapType = mapDataType() { return mapType; } ) | LOOKAHEAD(<ANNOTATIONREFERENCE> <LESSTHAN>) ( mapType = annotationRefDataType() { return mapType; } ) - | LOOKAHEAD(<TENSOR_TYPE>) ( tensorType = tensorType("Field type") { return DataType.getTensor(tensorType); } ) | ( typeName = identifier() ["[]" { isArrayOldStyle = true; }] ) ) { diff --git a/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd b/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd index a2b36416fd6..d2851816bc0 100644 --- a/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd +++ b/config-model/src/test/cfg/application/validation/search_alltypes/searchdefinitions/simple.sd @@ -11,6 +11,6 @@ search simple { field my_uri type uri { indexing: summary } field my_byte type byte { indexing: summary } field my_predicate type predicate { indexing: summary } - field my_tensor type tensor(x{}) { indexing: summary } + field my_tensor type tensor { indexing: summary } } } diff --git a/config-model/src/test/configmodel/types/documentmanager.cfg b/config-model/src/test/configmodel/types/documentmanager.cfg index 6b01934307a..ac148209d6b 100644 --- a/config-model/src/test/configmodel/types/documentmanager.cfg +++ b/config-model/src/test/configmodel/types/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1865479609 datatype[1].maptype[0].keytype 2 datatype[1].maptype[0].valtype 4 @@ -24,16 +22,12 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "Version" datatype[2].structtype[0].field[0].datatype 0 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "Name" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "FlagsCounter" datatype[2].structtype[0].field[2].datatype -1865479609 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "anotherfolder" datatype[2].structtype[0].field[3].datatype 294108848 -datatype[2].structtype[0].field[3].detailedtype "" datatype[3].id 109267174 datatype[3].structtype[0].name "sct" datatype[3].structtype[0].version 0 @@ -43,10 +37,8 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "s1" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "s2" datatype[3].structtype[0].field[1].datatype 2 -datatype[3].structtype[0].field[1].detailedtype "" datatype[4].id 49942803 datatype[4].arraytype[0].datatype 16 datatype[5].id 339965458 @@ -61,16 +53,12 @@ datatype[6].structtype[0].compressthreshold 95 datatype[6].structtype[0].compressminsize 800 datatype[6].structtype[0].field[0].name "bytearr" datatype[6].structtype[0].field[0].datatype 49942803 -datatype[6].structtype[0].field[0].detailedtype "" datatype[6].structtype[0].field[1].name "mymap" datatype[6].structtype[0].field[1].datatype 339965458 -datatype[6].structtype[0].field[1].detailedtype "" datatype[6].structtype[0].field[2].name "title" datatype[6].structtype[0].field[2].datatype 2 -datatype[6].structtype[0].field[2].detailedtype "" datatype[6].structtype[0].field[3].name "structfield" datatype[6].structtype[0].field[3].datatype 2 -datatype[6].structtype[0].field[3].detailedtype "" datatype[7].id -1245117006 datatype[7].arraytype[0].datatype 0 datatype[8].id 1328286588 @@ -127,91 +115,62 @@ datatype[24].structtype[0].compressthreshold 95 datatype[24].structtype[0].compressminsize 800 datatype[24].structtype[0].field[0].name "abyte" datatype[24].structtype[0].field[0].datatype 16 -datatype[24].structtype[0].field[0].detailedtype "" datatype[24].structtype[0].field[1].name "along" datatype[24].structtype[0].field[1].datatype 4 -datatype[24].structtype[0].field[1].detailedtype "" datatype[24].structtype[0].field[2].name "arrayfield" datatype[24].structtype[0].field[2].datatype -1245117006 -datatype[24].structtype[0].field[2].detailedtype "" datatype[24].structtype[0].field[3].name "setfield" datatype[24].structtype[0].field[3].datatype 1328286588 -datatype[24].structtype[0].field[3].detailedtype "" datatype[24].structtype[0].field[4].name "pos" datatype[24].structtype[0].field[4].datatype 1381038251 -datatype[24].structtype[0].field[4].detailedtype "" datatype[24].structtype[0].field[5].name "setfield2" datatype[24].structtype[0].field[5].datatype 18 -datatype[24].structtype[0].field[5].detailedtype "" datatype[24].structtype[0].field[6].name "setfield3" datatype[24].structtype[0].field[6].datatype 2125328771 -datatype[24].structtype[0].field[6].detailedtype "" datatype[24].structtype[0].field[7].name "setfield4" datatype[24].structtype[0].field[7].datatype 2065577986 -datatype[24].structtype[0].field[7].detailedtype "" datatype[24].structtype[0].field[8].name "tagfield" datatype[24].structtype[0].field[8].datatype 18 -datatype[24].structtype[0].field[8].detailedtype "" datatype[24].structtype[0].field[9].name "structfield" datatype[24].structtype[0].field[9].datatype 109267174 -datatype[24].structtype[0].field[9].detailedtype "" datatype[24].structtype[0].field[10].name "structarrayfield" datatype[24].structtype[0].field[10].datatype -1244829667 -datatype[24].structtype[0].field[10].detailedtype "" datatype[24].structtype[0].field[11].name "stringmapfield" datatype[24].structtype[0].field[11].datatype 339965458 -datatype[24].structtype[0].field[11].detailedtype "" datatype[24].structtype[0].field[12].name "intmapfield" datatype[24].structtype[0].field[12].datatype -1584287606 -datatype[24].structtype[0].field[12].detailedtype "" datatype[24].structtype[0].field[13].name "floatmapfield" datatype[24].structtype[0].field[13].datatype 2125154557 -datatype[24].structtype[0].field[13].detailedtype "" datatype[24].structtype[0].field[14].name "longmapfield" datatype[24].structtype[0].field[14].datatype -1715531035 -datatype[24].structtype[0].field[14].detailedtype "" datatype[24].structtype[0].field[15].name "doublemapfield" datatype[24].structtype[0].field[15].datatype 2138385264 -datatype[24].structtype[0].field[15].detailedtype "" datatype[24].structtype[0].field[16].name "arraymapfield" datatype[24].structtype[0].field[16].datatype 435886609 -datatype[24].structtype[0].field[16].detailedtype "" datatype[24].structtype[0].field[17].name "arrarr" datatype[24].structtype[0].field[17].datatype -794985308 -datatype[24].structtype[0].field[17].detailedtype "" datatype[24].structtype[0].field[18].name "maparr" datatype[24].structtype[0].field[18].datatype 69621385 -datatype[24].structtype[0].field[18].detailedtype "" datatype[24].structtype[0].field[19].name "mystructfield" datatype[24].structtype[0].field[19].datatype -2092985853 -datatype[24].structtype[0].field[19].detailedtype "" datatype[24].structtype[0].field[20].name "mystructmap" datatype[24].structtype[0].field[20].datatype 1901258752 -datatype[24].structtype[0].field[20].detailedtype "" datatype[24].structtype[0].field[21].name "mystructarr" datatype[24].structtype[0].field[21].datatype 759956026 -datatype[24].structtype[0].field[21].detailedtype "" datatype[24].structtype[0].field[22].name "Folders" datatype[24].structtype[0].field[22].datatype -389833101 -datatype[24].structtype[0].field[22].detailedtype "" datatype[24].structtype[0].field[23].name "juletre" datatype[24].structtype[0].field[23].datatype 4 -datatype[24].structtype[0].field[23].detailedtype "" datatype[24].structtype[0].field[24].name "album0" datatype[24].structtype[0].field[24].datatype 18 -datatype[24].structtype[0].field[24].detailedtype "" datatype[24].structtype[0].field[25].name "album1" datatype[24].structtype[0].field[25].datatype 18 -datatype[24].structtype[0].field[25].detailedtype "" datatype[24].structtype[0].field[26].name "other" datatype[24].structtype[0].field[26].datatype 4 -datatype[24].structtype[0].field[26].detailedtype "" datatype[24].structtype[0].field[27].name "rankfeatures" datatype[24].structtype[0].field[27].datatype 2 -datatype[24].structtype[0].field[27].detailedtype "" datatype[24].structtype[0].field[28].name "summaryfeatures" datatype[24].structtype[0].field[28].datatype 2 -datatype[24].structtype[0].field[28].detailedtype "" datatype[25].id 171503364 datatype[25].maptype[0].keytype 1707615575 datatype[25].maptype[0].valtype 0 @@ -226,7 +185,6 @@ datatype[27].structtype[0].compressthreshold 95 datatype[27].structtype[0].compressminsize 800 datatype[27].structtype[0].field[0].name "complexarray" datatype[27].structtype[0].field[0].datatype 1100964733 -datatype[27].structtype[0].field[0].detailedtype "" datatype[28].id -853072901 datatype[28].documenttype[0].name "types" datatype[28].documenttype[0].version 0 @@ -260,4 +218,4 @@ datatype[28].documenttype[0].fieldsets{[document]}.fields[22] "setfield4" datatype[28].documenttype[0].fieldsets{[document]}.fields[23] "stringmapfield" datatype[28].documenttype[0].fieldsets{[document]}.fields[24] "structarrayfield" datatype[28].documenttype[0].fieldsets{[document]}.fields[25] "structfield" -datatype[28].documenttype[0].fieldsets{[document]}.fields[26] "tagfield"
\ No newline at end of file +datatype[28].documenttype[0].fieldsets{[document]}.fields[26] "tagfield" diff --git a/config-model/src/test/configmodel/types/documenttypes.cfg b/config-model/src/test/configmodel/types/documenttypes.cfg index dc7962adec7..eacd878e13d 100644 --- a/config-model/src/test/configmodel/types/documenttypes.cfg +++ b/config-model/src/test/configmodel/types/documenttypes.cfg @@ -39,22 +39,18 @@ documenttype[0].datatype[1].sstruct.field[0].name "Version" documenttype[0].datatype[1].sstruct.field[0].id 64430502 documenttype[0].datatype[1].sstruct.field[0].id_v6 634243672 documenttype[0].datatype[1].sstruct.field[0].datatype 0 -documenttype[0].datatype[1].sstruct.field[0].detailedtype "" documenttype[0].datatype[1].sstruct.field[1].name "Name" documenttype[0].datatype[1].sstruct.field[1].id 2002760220 documenttype[0].datatype[1].sstruct.field[1].id_v6 62942997 documenttype[0].datatype[1].sstruct.field[1].datatype 2 -documenttype[0].datatype[1].sstruct.field[1].detailedtype "" documenttype[0].datatype[1].sstruct.field[2].name "FlagsCounter" documenttype[0].datatype[1].sstruct.field[2].id 1741227606 documenttype[0].datatype[1].sstruct.field[2].id_v6 1287497652 documenttype[0].datatype[1].sstruct.field[2].datatype -1865479609 -documenttype[0].datatype[1].sstruct.field[2].detailedtype "" documenttype[0].datatype[1].sstruct.field[3].name "anotherfolder" documenttype[0].datatype[1].sstruct.field[3].id 1582421848 documenttype[0].datatype[1].sstruct.field[3].id_v6 1898725199 documenttype[0].datatype[1].sstruct.field[3].datatype 294108848 -documenttype[0].datatype[1].sstruct.field[3].detailedtype "" documenttype[0].datatype[2].id 109267174 documenttype[0].datatype[2].type STRUCT documenttype[0].datatype[2].array.element.id 0 @@ -74,12 +70,10 @@ documenttype[0].datatype[2].sstruct.field[0].name "s1" documenttype[0].datatype[2].sstruct.field[0].id 2146820765 documenttype[0].datatype[2].sstruct.field[0].id_v6 142373281 documenttype[0].datatype[2].sstruct.field[0].datatype 2 -documenttype[0].datatype[2].sstruct.field[0].detailedtype "" documenttype[0].datatype[2].sstruct.field[1].name "s2" documenttype[0].datatype[2].sstruct.field[1].id 45366795 documenttype[0].datatype[2].sstruct.field[1].id_v6 31106270 documenttype[0].datatype[2].sstruct.field[1].datatype 2 -documenttype[0].datatype[2].sstruct.field[1].detailedtype "" documenttype[0].datatype[3].id 49942803 documenttype[0].datatype[3].type ARRAY documenttype[0].datatype[3].array.element.id 16 @@ -129,22 +123,18 @@ documenttype[0].datatype[5].sstruct.field[0].name "bytearr" documenttype[0].datatype[5].sstruct.field[0].id 1079701754 documenttype[0].datatype[5].sstruct.field[0].id_v6 1198855694 documenttype[0].datatype[5].sstruct.field[0].datatype 49942803 -documenttype[0].datatype[5].sstruct.field[0].detailedtype "" documenttype[0].datatype[5].sstruct.field[1].name "mymap" documenttype[0].datatype[5].sstruct.field[1].id 1954178122 documenttype[0].datatype[5].sstruct.field[1].id_v6 707189723 documenttype[0].datatype[5].sstruct.field[1].datatype 339965458 -documenttype[0].datatype[5].sstruct.field[1].detailedtype "" documenttype[0].datatype[5].sstruct.field[2].name "title" documenttype[0].datatype[5].sstruct.field[2].id 567626448 documenttype[0].datatype[5].sstruct.field[2].id_v6 29129762 documenttype[0].datatype[5].sstruct.field[2].datatype 2 -documenttype[0].datatype[5].sstruct.field[2].detailedtype "" documenttype[0].datatype[5].sstruct.field[3].name "structfield" documenttype[0].datatype[5].sstruct.field[3].id 1726890940 documenttype[0].datatype[5].sstruct.field[3].id_v6 418303145 documenttype[0].datatype[5].sstruct.field[3].datatype 2 -documenttype[0].datatype[5].sstruct.field[3].detailedtype "" documenttype[0].datatype[6].id -1245117006 documenttype[0].datatype[6].type ARRAY documenttype[0].datatype[6].array.element.id 0 @@ -419,147 +409,118 @@ documenttype[0].datatype[23].sstruct.field[0].name "abyte" documenttype[0].datatype[23].sstruct.field[0].id 110138156 documenttype[0].datatype[23].sstruct.field[0].id_v6 1369099343 documenttype[0].datatype[23].sstruct.field[0].datatype 16 -documenttype[0].datatype[23].sstruct.field[0].detailedtype "" documenttype[0].datatype[23].sstruct.field[1].name "along" documenttype[0].datatype[23].sstruct.field[1].id 1206464520 documenttype[0].datatype[23].sstruct.field[1].id_v6 871280609 documenttype[0].datatype[23].sstruct.field[1].datatype 4 -documenttype[0].datatype[23].sstruct.field[1].detailedtype "" documenttype[0].datatype[23].sstruct.field[2].name "arrayfield" documenttype[0].datatype[23].sstruct.field[2].id 965790107 documenttype[0].datatype[23].sstruct.field[2].id_v6 1010955705 documenttype[0].datatype[23].sstruct.field[2].datatype -1245117006 -documenttype[0].datatype[23].sstruct.field[2].detailedtype "" documenttype[0].datatype[23].sstruct.field[3].name "setfield" documenttype[0].datatype[23].sstruct.field[3].id 761581914 documenttype[0].datatype[23].sstruct.field[3].id_v6 1762943268 documenttype[0].datatype[23].sstruct.field[3].datatype 1328286588 -documenttype[0].datatype[23].sstruct.field[3].detailedtype "" documenttype[0].datatype[23].sstruct.field[4].name "pos" documenttype[0].datatype[23].sstruct.field[4].id 1041567475 documenttype[0].datatype[23].sstruct.field[4].id_v6 26353693 documenttype[0].datatype[23].sstruct.field[4].datatype 1381038251 -documenttype[0].datatype[23].sstruct.field[4].detailedtype "" documenttype[0].datatype[23].sstruct.field[5].name "setfield2" documenttype[0].datatype[23].sstruct.field[5].id 1066659198 documenttype[0].datatype[23].sstruct.field[5].id_v6 813038565 documenttype[0].datatype[23].sstruct.field[5].datatype 18 -documenttype[0].datatype[23].sstruct.field[5].detailedtype "" documenttype[0].datatype[23].sstruct.field[6].name "setfield3" documenttype[0].datatype[23].sstruct.field[6].id 1180155772 documenttype[0].datatype[23].sstruct.field[6].id_v6 1697232199 documenttype[0].datatype[23].sstruct.field[6].datatype 2125328771 -documenttype[0].datatype[23].sstruct.field[6].detailedtype "" documenttype[0].datatype[23].sstruct.field[7].name "setfield4" documenttype[0].datatype[23].sstruct.field[7].id 1254131631 documenttype[0].datatype[23].sstruct.field[7].id_v6 119755202 documenttype[0].datatype[23].sstruct.field[7].datatype 2065577986 -documenttype[0].datatype[23].sstruct.field[7].detailedtype "" documenttype[0].datatype[23].sstruct.field[8].name "tagfield" documenttype[0].datatype[23].sstruct.field[8].id 1653562069 documenttype[0].datatype[23].sstruct.field[8].id_v6 938523246 documenttype[0].datatype[23].sstruct.field[8].datatype 18 -documenttype[0].datatype[23].sstruct.field[8].detailedtype "" documenttype[0].datatype[23].sstruct.field[9].name "structfield" documenttype[0].datatype[23].sstruct.field[9].id 486207386 documenttype[0].datatype[23].sstruct.field[9].id_v6 418303145 documenttype[0].datatype[23].sstruct.field[9].datatype 109267174 -documenttype[0].datatype[23].sstruct.field[9].detailedtype "" documenttype[0].datatype[23].sstruct.field[10].name "structarrayfield" documenttype[0].datatype[23].sstruct.field[10].id 335048518 documenttype[0].datatype[23].sstruct.field[10].id_v6 607034174 documenttype[0].datatype[23].sstruct.field[10].datatype -1244829667 -documenttype[0].datatype[23].sstruct.field[10].detailedtype "" documenttype[0].datatype[23].sstruct.field[11].name "stringmapfield" documenttype[0].datatype[23].sstruct.field[11].id 117465687 documenttype[0].datatype[23].sstruct.field[11].id_v6 1492788095 documenttype[0].datatype[23].sstruct.field[11].datatype 339965458 -documenttype[0].datatype[23].sstruct.field[11].detailedtype "" documenttype[0].datatype[23].sstruct.field[12].name "intmapfield" documenttype[0].datatype[23].sstruct.field[12].id 121004462 documenttype[0].datatype[23].sstruct.field[12].id_v6 1642487905 documenttype[0].datatype[23].sstruct.field[12].datatype -1584287606 -documenttype[0].datatype[23].sstruct.field[12].detailedtype "" documenttype[0].datatype[23].sstruct.field[13].name "floatmapfield" documenttype[0].datatype[23].sstruct.field[13].id 1239120925 documenttype[0].datatype[23].sstruct.field[13].id_v6 1609437589 documenttype[0].datatype[23].sstruct.field[13].datatype 2125154557 -documenttype[0].datatype[23].sstruct.field[13].detailedtype "" documenttype[0].datatype[23].sstruct.field[14].name "longmapfield" documenttype[0].datatype[23].sstruct.field[14].id 477718745 documenttype[0].datatype[23].sstruct.field[14].id_v6 920341968 documenttype[0].datatype[23].sstruct.field[14].datatype -1715531035 -documenttype[0].datatype[23].sstruct.field[14].detailedtype "" documenttype[0].datatype[23].sstruct.field[15].name "doublemapfield" documenttype[0].datatype[23].sstruct.field[15].id 877047192 documenttype[0].datatype[23].sstruct.field[15].id_v6 957317090 documenttype[0].datatype[23].sstruct.field[15].datatype 2138385264 -documenttype[0].datatype[23].sstruct.field[15].detailedtype "" documenttype[0].datatype[23].sstruct.field[16].name "arraymapfield" documenttype[0].datatype[23].sstruct.field[16].id 1670805928 documenttype[0].datatype[23].sstruct.field[16].id_v6 1940354311 documenttype[0].datatype[23].sstruct.field[16].datatype 435886609 -documenttype[0].datatype[23].sstruct.field[16].detailedtype "" documenttype[0].datatype[23].sstruct.field[17].name "arrarr" documenttype[0].datatype[23].sstruct.field[17].id 1962567166 documenttype[0].datatype[23].sstruct.field[17].id_v6 885141301 documenttype[0].datatype[23].sstruct.field[17].datatype -794985308 -documenttype[0].datatype[23].sstruct.field[17].detailedtype "" documenttype[0].datatype[23].sstruct.field[18].name "maparr" documenttype[0].datatype[23].sstruct.field[18].id 904375219 documenttype[0].datatype[23].sstruct.field[18].id_v6 63700074 documenttype[0].datatype[23].sstruct.field[18].datatype 69621385 -documenttype[0].datatype[23].sstruct.field[18].detailedtype "" documenttype[0].datatype[23].sstruct.field[19].name "mystructfield" documenttype[0].datatype[23].sstruct.field[19].id 1348513378 documenttype[0].datatype[23].sstruct.field[19].id_v6 2033170300 documenttype[0].datatype[23].sstruct.field[19].datatype -2092985853 -documenttype[0].datatype[23].sstruct.field[19].detailedtype "" documenttype[0].datatype[23].sstruct.field[20].name "mystructmap" documenttype[0].datatype[23].sstruct.field[20].id 1511423250 documenttype[0].datatype[23].sstruct.field[20].id_v6 449602635 documenttype[0].datatype[23].sstruct.field[20].datatype 1901258752 -documenttype[0].datatype[23].sstruct.field[20].detailedtype "" documenttype[0].datatype[23].sstruct.field[21].name "mystructarr" documenttype[0].datatype[23].sstruct.field[21].id 595856991 documenttype[0].datatype[23].sstruct.field[21].id_v6 764861972 documenttype[0].datatype[23].sstruct.field[21].datatype 759956026 -documenttype[0].datatype[23].sstruct.field[21].detailedtype "" documenttype[0].datatype[23].sstruct.field[22].name "Folders" documenttype[0].datatype[23].sstruct.field[22].id 34575524 documenttype[0].datatype[23].sstruct.field[22].id_v6 280569744 documenttype[0].datatype[23].sstruct.field[22].datatype -389833101 -documenttype[0].datatype[23].sstruct.field[22].detailedtype "" documenttype[0].datatype[23].sstruct.field[23].name "juletre" documenttype[0].datatype[23].sstruct.field[23].id 1039981530 documenttype[0].datatype[23].sstruct.field[23].id_v6 2073084146 documenttype[0].datatype[23].sstruct.field[23].datatype 4 -documenttype[0].datatype[23].sstruct.field[23].detailedtype "" documenttype[0].datatype[23].sstruct.field[24].name "album0" documenttype[0].datatype[23].sstruct.field[24].id 764312262 documenttype[0].datatype[23].sstruct.field[24].id_v6 1409364160 documenttype[0].datatype[23].sstruct.field[24].datatype 18 -documenttype[0].datatype[23].sstruct.field[24].detailedtype "" documenttype[0].datatype[23].sstruct.field[25].name "album1" documenttype[0].datatype[23].sstruct.field[25].id 1967160809 documenttype[0].datatype[23].sstruct.field[25].id_v6 1833811264 documenttype[0].datatype[23].sstruct.field[25].datatype 18 -documenttype[0].datatype[23].sstruct.field[25].detailedtype "" documenttype[0].datatype[23].sstruct.field[26].name "other" documenttype[0].datatype[23].sstruct.field[26].id 2443357 documenttype[0].datatype[23].sstruct.field[26].id_v6 903806222 documenttype[0].datatype[23].sstruct.field[26].datatype 4 -documenttype[0].datatype[23].sstruct.field[26].detailedtype "" documenttype[0].datatype[23].sstruct.field[27].name "rankfeatures" documenttype[0].datatype[23].sstruct.field[27].id 1883197392 documenttype[0].datatype[23].sstruct.field[27].id_v6 699950698 documenttype[0].datatype[23].sstruct.field[27].datatype 2 -documenttype[0].datatype[23].sstruct.field[27].detailedtype "" documenttype[0].datatype[23].sstruct.field[28].name "summaryfeatures" documenttype[0].datatype[23].sstruct.field[28].id 1840337115 documenttype[0].datatype[23].sstruct.field[28].id_v6 1981648971 documenttype[0].datatype[23].sstruct.field[28].datatype 2 -documenttype[0].datatype[23].sstruct.field[28].detailedtype "" documenttype[0].datatype[24].id 171503364 documenttype[0].datatype[24].type MAP documenttype[0].datatype[24].array.element.id 0 @@ -609,7 +570,6 @@ documenttype[0].datatype[26].sstruct.field[0].name "complexarray" documenttype[0].datatype[26].sstruct.field[0].id 1028383787 documenttype[0].datatype[26].sstruct.field[0].id_v6 658530305 documenttype[0].datatype[26].sstruct.field[0].datatype 1100964733 -documenttype[0].datatype[26].sstruct.field[0].detailedtype "" documenttype[0].fieldsets{[document]}.fields[0] "Folders" documenttype[0].fieldsets{[document]}.fields[1] "abyte" documenttype[0].fieldsets{[document]}.fields[2] "album0" @@ -636,4 +596,4 @@ documenttype[0].fieldsets{[document]}.fields[22] "setfield4" documenttype[0].fieldsets{[document]}.fields[23] "stringmapfield" documenttype[0].fieldsets{[document]}.fields[24] "structarrayfield" documenttype[0].fieldsets{[document]}.fields[25] "structfield" -documenttype[0].fieldsets{[document]}.fields[26] "tagfield"
\ No newline at end of file +documenttype[0].fieldsets{[document]}.fields[26] "tagfield" diff --git a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg index 3073dd55fba..d13195f1ffe 100644 --- a/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg +++ b/config-model/src/test/configmodel/types/documenttypes_with_doc_field.cfg @@ -24,12 +24,10 @@ documenttype[0].datatype[0].sstruct.field[0].name "rankfeatures" documenttype[0].datatype[0].sstruct.field[0].id 1883197392 documenttype[0].datatype[0].sstruct.field[0].id_v6 699950698 documenttype[0].datatype[0].sstruct.field[0].datatype 2 -documenttype[0].datatype[0].sstruct.field[0].detailedtype "" documenttype[0].datatype[0].sstruct.field[1].name "summaryfeatures" documenttype[0].datatype[0].sstruct.field[1].id 1840337115 documenttype[0].datatype[0].sstruct.field[1].id_v6 1981648971 documenttype[0].datatype[0].sstruct.field[1].datatype 2 -documenttype[0].datatype[0].sstruct.field[1].detailedtype "" documenttype[0].datatype[1].id 549879017 documenttype[0].datatype[1].type STRUCT documenttype[0].datatype[1].array.element.id 0 @@ -85,17 +83,14 @@ documenttype[1].datatype[1].sstruct.field[0].name "doc_field" documenttype[1].datatype[1].sstruct.field[0].id 819293364 documenttype[1].datatype[1].sstruct.field[0].id_v6 1634907905 documenttype[1].datatype[1].sstruct.field[0].datatype -1368624373 -documenttype[1].datatype[1].sstruct.field[0].detailedtype "" documenttype[1].datatype[1].sstruct.field[1].name "rankfeatures" documenttype[1].datatype[1].sstruct.field[1].id 1883197392 documenttype[1].datatype[1].sstruct.field[1].id_v6 699950698 documenttype[1].datatype[1].sstruct.field[1].datatype 2 -documenttype[1].datatype[1].sstruct.field[1].detailedtype "" documenttype[1].datatype[1].sstruct.field[2].name "summaryfeatures" documenttype[1].datatype[1].sstruct.field[2].id 1840337115 documenttype[1].datatype[1].sstruct.field[2].id_v6 1981648971 documenttype[1].datatype[1].sstruct.field[2].datatype 2 -documenttype[1].datatype[1].sstruct.field[2].detailedtype "" documenttype[1].datatype[2].id 348447225 documenttype[1].datatype[2].type STRUCT documenttype[1].datatype[2].array.element.id 0 @@ -111,4 +106,4 @@ documenttype[1].datatype[2].sstruct.compression.type NONE documenttype[1].datatype[2].sstruct.compression.level 0 documenttype[1].datatype[2].sstruct.compression.threshold 95 documenttype[1].datatype[2].sstruct.compression.minsize 200 -documenttype[1].fieldsets{[document]}.fields[0] "doc_field"
\ No newline at end of file +documenttype[1].fieldsets{[document]}.fields[0] "doc_field" diff --git a/config-model/src/test/derived/advanced/documentmanager.cfg b/config-model/src/test/derived/advanced/documentmanager.cfg index 532f53f51d2..98c3d379987 100644 --- a/config-model/src/test/derived/advanced/documentmanager.cfg +++ b/config-model/src/test/derived/advanced/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1486737430 datatype[1].arraytype[0].datatype 2 datatype[2].id -1337915045 @@ -23,64 +21,44 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "debug_src" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "attributes_src" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "location_str" datatype[2].structtype[0].field[2].datatype 2 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "title_src" datatype[2].structtype[0].field[3].datatype 2 -datatype[2].structtype[0].field[3].detailedtype "" datatype[2].structtype[0].field[4].name "product_src" datatype[2].structtype[0].field[4].datatype 2 -datatype[2].structtype[0].field[4].detailedtype "" datatype[2].structtype[0].field[5].name "product2_src" datatype[2].structtype[0].field[5].datatype 2 -datatype[2].structtype[0].field[5].detailedtype "" datatype[2].structtype[0].field[6].name "product3_src" datatype[2].structtype[0].field[6].datatype 2 -datatype[2].structtype[0].field[6].detailedtype "" datatype[2].structtype[0].field[7].name "debug" datatype[2].structtype[0].field[7].datatype 2 -datatype[2].structtype[0].field[7].detailedtype "" datatype[2].structtype[0].field[8].name "attributes" datatype[2].structtype[0].field[8].datatype 2 -datatype[2].structtype[0].field[8].detailedtype "" datatype[2].structtype[0].field[9].name "title" datatype[2].structtype[0].field[9].datatype 2 -datatype[2].structtype[0].field[9].detailedtype "" datatype[2].structtype[0].field[10].name "product" datatype[2].structtype[0].field[10].datatype 2 -datatype[2].structtype[0].field[10].detailedtype "" datatype[2].structtype[0].field[11].name "product2" datatype[2].structtype[0].field[11].datatype 2 -datatype[2].structtype[0].field[11].detailedtype "" datatype[2].structtype[0].field[12].name "product3" datatype[2].structtype[0].field[12].datatype 2 -datatype[2].structtype[0].field[12].detailedtype "" datatype[2].structtype[0].field[13].name "location_zcurve" datatype[2].structtype[0].field[13].datatype 4 -datatype[2].structtype[0].field[13].detailedtype "" datatype[2].structtype[0].field[14].name "title_s" datatype[2].structtype[0].field[14].datatype 2 -datatype[2].structtype[0].field[14].detailedtype "" datatype[2].structtype[0].field[15].name "location.position" datatype[2].structtype[0].field[15].datatype -1486737430 -datatype[2].structtype[0].field[15].detailedtype "" datatype[2].structtype[0].field[16].name "location.distance" datatype[2].structtype[0].field[16].datatype 0 -datatype[2].structtype[0].field[16].detailedtype "" datatype[2].structtype[0].field[17].name "mysummary" datatype[2].structtype[0].field[17].datatype 2 -datatype[2].structtype[0].field[17].detailedtype "" datatype[2].structtype[0].field[18].name "rankfeatures" datatype[2].structtype[0].field[18].datatype 2 -datatype[2].structtype[0].field[18].detailedtype "" datatype[2].structtype[0].field[19].name "summaryfeatures" datatype[2].structtype[0].field[19].datatype 2 -datatype[2].structtype[0].field[19].detailedtype "" datatype[3].id -704605648 datatype[3].structtype[0].name "advanced.body" datatype[3].structtype[0].version 0 diff --git a/config-model/src/test/derived/advanced/index-info.cfg b/config-model/src/test/derived/advanced/index-info.cfg index 7af5b858d3a..1bb68110dae 100644 --- a/config-model/src/test/derived/advanced/index-info.cfg +++ b/config-model/src/test/derived/advanced/index-info.cfg @@ -75,23 +75,23 @@ indexinfo[0].command[36].indexname "summaryfeatures" indexinfo[0].command[36].command "index" indexinfo[0].command[37].indexname "title" indexinfo[0].command[37].command "index" -indexinfo[0].command[38].indexname "title" -indexinfo[0].command[38].command "lowercase" -indexinfo[0].command[39].indexname "title" -indexinfo[0].command[39].command "normalize" -indexinfo[0].command[40].indexname "title_s" -indexinfo[0].command[40].command "index" +indexinfo[0].command[38].indexname "titleabstract" +indexinfo[0].command[38].command "index" +indexinfo[0].command[39].indexname "default" +indexinfo[0].command[39].command "index" +indexinfo[0].command[40].indexname "title" +indexinfo[0].command[40].command "lowercase" indexinfo[0].command[41].indexname "titleabstract" indexinfo[0].command[41].command "lowercase" -indexinfo[0].command[42].indexname "titleabstract" -indexinfo[0].command[42].command "index" -indexinfo[0].command[43].indexname "titleabstract" +indexinfo[0].command[42].indexname "default" +indexinfo[0].command[42].command "lowercase" +indexinfo[0].command[43].indexname "title" indexinfo[0].command[43].command "normalize" -indexinfo[0].command[44].indexname "default" -indexinfo[0].command[44].command "lowercase" +indexinfo[0].command[44].indexname "titleabstract" +indexinfo[0].command[44].command "normalize" indexinfo[0].command[45].indexname "default" -indexinfo[0].command[45].command "index" -indexinfo[0].command[46].indexname "default" -indexinfo[0].command[46].command "normalize" +indexinfo[0].command[45].command "normalize" +indexinfo[0].command[46].indexname "title_s" +indexinfo[0].command[46].command "index" indexinfo[0].alias[0].alias "headline" indexinfo[0].alias[0].indexname "title"
\ No newline at end of file diff --git a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg index 1e9ffba5ca0..db85eb92e9b 100755 --- a/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsimplicitstruct/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 517946310 datatype[1].structtype[0].name "annotation.banana" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "brand" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id -364910881 datatype[2].structtype[0].name "annotationsimplicitstruct.header" datatype[2].structtype[0].version 0 @@ -31,10 +28,8 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "rankfeatures" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "summaryfeatures" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[3].id -1503592268 datatype[3].structtype[0].name "annotationsimplicitstruct.body" datatype[3].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg index db7fba5d9a6..11e179ec748 100755 --- a/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsinheritance/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 517946310 datatype[1].structtype[0].name "annotation.banana" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "brand" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id -1339036621 datatype[2].structtype[0].name "annotation.intern" datatype[2].structtype[0].version 0 @@ -31,7 +28,6 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "enddate" datatype[2].structtype[0].field[0].datatype 4 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].inherits[0].name "annotation.employee" datatype[2].structtype[0].inherits[0].version 0 datatype[3].id 249059607 @@ -43,7 +39,6 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "color" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].inherits[0].name "annotation.vehicle" datatype[3].structtype[0].inherits[0].version 0 datatype[4].id -1466283082 @@ -55,7 +50,6 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "name" datatype[4].structtype[0].field[0].datatype 2 -datatype[4].structtype[0].field[0].detailedtype "" datatype[5].id -858216177 datatype[5].structtype[0].name "annotation.employee" datatype[5].structtype[0].version 0 @@ -65,7 +59,6 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "employeeid" datatype[5].structtype[0].field[0].datatype 0 -datatype[5].structtype[0].field[0].detailedtype "" datatype[5].structtype[0].inherits[0].name "annotation.worker" datatype[5].structtype[0].inherits[0].version 0 datatype[6].id -1874092641 @@ -86,7 +79,6 @@ datatype[7].structtype[0].compressthreshold 95 datatype[7].structtype[0].compressminsize 800 datatype[7].structtype[0].field[0].name "numwheels" datatype[7].structtype[0].field[0].datatype 0 -datatype[7].structtype[0].field[0].detailedtype "" datatype[8].id -1406250281 datatype[8].structtype[0].name "annotationsinheritance.header" datatype[8].structtype[0].version 0 @@ -96,10 +88,8 @@ datatype[8].structtype[0].compressthreshold 95 datatype[8].structtype[0].compressminsize 800 datatype[8].structtype[0].field[0].name "rankfeatures" datatype[8].structtype[0].field[0].datatype 2 -datatype[8].structtype[0].field[0].detailedtype "" datatype[8].structtype[0].field[1].name "summaryfeatures" datatype[8].structtype[0].field[1].datatype 2 -datatype[8].structtype[0].field[1].detailedtype "" datatype[9].id 1181354668 datatype[9].structtype[0].name "annotationsinheritance.body" datatype[9].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg index 6f83fbc5ce6..e49d0753296 100755 --- a/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsinheritance2/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1443831334 datatype[1].structtype[0].name "annotation.c" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "cfoo" datatype[1].structtype[0].field[0].datatype 0 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 1443832295 datatype[2].structtype[0].name "annotation.d" datatype[2].structtype[0].version 0 @@ -49,7 +46,6 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "gfoo" datatype[4].structtype[0].field[0].datatype 2 -datatype[4].structtype[0].field[0].detailedtype "" datatype[5].id 424382193 datatype[5].structtype[0].name "annotationsinheritance2.header" datatype[5].structtype[0].version 0 @@ -59,10 +55,8 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "rankfeatures" datatype[5].structtype[0].field[0].datatype 2 -datatype[5].structtype[0].field[0].detailedtype "" datatype[5].structtype[0].field[1].name "summaryfeatures" datatype[5].structtype[0].field[1].datatype 2 -datatype[5].structtype[0].field[1].detailedtype "" datatype[6].id 1375438150 datatype[6].structtype[0].name "annotationsinheritance2.body" datatype[6].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg index db333ed0a13..d612a3b168b 100755 --- a/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg +++ b/config-model/src/test/derived/annotationspolymorphy/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -2014701853 datatype[1].annotationreftype[0].annotation "super" datatype[2].id -888007918 @@ -23,7 +21,6 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "a" datatype[2].structtype[0].field[0].datatype -2014701853 -datatype[2].structtype[0].field[0].detailedtype "" datatype[3].id -1552577796 datatype[3].structtype[0].name "annotationspolymorphy.header" datatype[3].structtype[0].version 0 @@ -33,10 +30,8 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "rankfeatures" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "summaryfeatures" datatype[3].structtype[0].field[1].datatype 2 -datatype[3].structtype[0].field[1].detailedtype "" datatype[4].id -570750959 datatype[4].structtype[0].name "annotationspolymorphy.body" datatype[4].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationsreference/documentmanager.cfg b/config-model/src/test/derived/annotationsreference/documentmanager.cfg index 25106a41836..3218262b54d 100755 --- a/config-model/src/test/derived/annotationsreference/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsreference/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 517946310 datatype[1].structtype[0].name "annotation.banana" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "brand" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 400622300 datatype[2].annotationreftype[0].annotation "b" datatype[3].id 1443829412 @@ -33,7 +30,6 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "foo" datatype[3].structtype[0].field[0].datatype 400622300 -datatype[3].structtype[0].field[0].detailedtype "" datatype[4].id -808460615 datatype[4].annotationreftype[0].annotation "banana" datatype[5].id -770307521 @@ -45,7 +41,6 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "what" datatype[5].structtype[0].field[0].datatype -808460615 -datatype[5].structtype[0].field[0].detailedtype "" datatype[6].id 756306917 datatype[6].annotationreftype[0].annotation "cyclic" datatype[7].id 1781099546 @@ -57,7 +52,6 @@ datatype[7].structtype[0].compressthreshold 95 datatype[7].structtype[0].compressminsize 800 datatype[7].structtype[0].field[0].name "blah" datatype[7].structtype[0].field[0].datatype 756306917 -datatype[7].structtype[0].field[0].detailedtype "" datatype[8].id 571255414 datatype[8].structtype[0].name "annotationsreference.header" datatype[8].structtype[0].version 0 @@ -67,10 +61,8 @@ datatype[8].structtype[0].compressthreshold 95 datatype[8].structtype[0].compressminsize 800 datatype[8].structtype[0].field[0].name "rankfeatures" datatype[8].structtype[0].field[0].datatype 2 -datatype[8].structtype[0].field[0].detailedtype "" datatype[8].structtype[0].field[1].name "summaryfeatures" datatype[8].structtype[0].field[1].datatype 2 -datatype[8].structtype[0].field[1].detailedtype "" datatype[9].id 1692909067 datatype[9].structtype[0].name "annotationsreference.body" datatype[9].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationssimple/documentmanager.cfg b/config-model/src/test/derived/annotationssimple/documentmanager.cfg index 8908d886ff9..54832bb97f9 100755 --- a/config-model/src/test/derived/annotationssimple/documentmanager.cfg +++ b/config-model/src/test/derived/annotationssimple/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1205708249 datatype[1].structtype[0].name "annotationssimple.header" datatype[1].structtype[0].version 0 @@ -21,10 +19,8 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "rankfeatures" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "summaryfeatures" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[2].id -682121732 datatype[2].structtype[0].name "annotationssimple.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg index ebba05e0553..f3c93b31285 100644 --- a/config-model/src/test/derived/annotationsstruct/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsstruct/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1293792650 datatype[1].structtype[0].name "my_struct" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "my_structfield" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id -1080124700 datatype[2].structtype[0].name "annotation.my_anno" datatype[2].structtype[0].version 0 @@ -31,7 +28,6 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "my_annofield" datatype[2].structtype[0].field[0].datatype 1293792650 -datatype[2].structtype[0].field[0].detailedtype "" datatype[3].id 1341437796 datatype[3].structtype[0].name "annotationsstruct.header" datatype[3].structtype[0].version 0 @@ -41,10 +37,8 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "rankfeatures" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "summaryfeatures" datatype[3].structtype[0].field[1].datatype 2 -datatype[3].structtype[0].field[1].detailedtype "" datatype[4].id -1180029319 datatype[4].structtype[0].name "annotationsstruct.body" datatype[4].structtype[0].version 0 diff --git a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg index 49249a7307a..01e3945fc2a 100644 --- a/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg +++ b/config-model/src/test/derived/annotationsstructarray/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1293792650 datatype[1].structtype[0].name "my_struct" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "my_structfield" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 754837689 datatype[2].arraytype[0].datatype 1293792650 datatype[3].id -1080124700 @@ -33,7 +30,6 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "my_annofield" datatype[3].structtype[0].field[0].datatype 754837689 -datatype[3].structtype[0].field[0].detailedtype "" datatype[4].id 94945597 datatype[4].structtype[0].name "annotationsstructarray.header" datatype[4].structtype[0].version 0 @@ -43,10 +39,8 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "rankfeatures" datatype[4].structtype[0].field[0].datatype 2 -datatype[4].structtype[0].field[0].detailedtype "" datatype[4].structtype[0].field[1].name "summaryfeatures" datatype[4].structtype[0].field[1].datatype 2 -datatype[4].structtype[0].field[1].detailedtype "" datatype[5].id 1616435858 datatype[5].structtype[0].name "annotationsstructarray.body" datatype[5].structtype[0].version 0 diff --git a/config-model/src/test/derived/arrays/documentmanager.cfg b/config-model/src/test/derived/arrays/documentmanager.cfg index f873971f931..68506844b5d 100644 --- a/config-model/src/test/derived/arrays/documentmanager.cfg +++ b/config-model/src/test/derived/arrays/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1486737430 datatype[1].arraytype[0].datatype 2 datatype[2].id -1245117006 @@ -29,25 +27,18 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "tags" datatype[4].structtype[0].field[0].datatype -1486737430 -datatype[4].structtype[0].field[0].detailedtype "" datatype[4].structtype[0].field[1].name "ratings" datatype[4].structtype[0].field[1].datatype -1245117006 -datatype[4].structtype[0].field[1].detailedtype "" datatype[4].structtype[0].field[2].name "a" datatype[4].structtype[0].field[2].datatype 2 -datatype[4].structtype[0].field[2].detailedtype "" datatype[4].structtype[0].field[3].name "b" datatype[4].structtype[0].field[3].datatype -1486737430 -datatype[4].structtype[0].field[3].detailedtype "" datatype[4].structtype[0].field[4].name "c" datatype[4].structtype[0].field[4].datatype 1328286588 -datatype[4].structtype[0].field[4].detailedtype "" datatype[4].structtype[0].field[5].name "rankfeatures" datatype[4].structtype[0].field[5].datatype 2 -datatype[4].structtype[0].field[5].detailedtype "" datatype[4].structtype[0].field[6].name "summaryfeatures" datatype[4].structtype[0].field[6].datatype 2 -datatype[4].structtype[0].field[6].detailedtype "" datatype[5].id -1747896808 datatype[5].structtype[0].name "arrays.body" datatype[5].structtype[0].version 0 diff --git a/config-model/src/test/derived/arrays/index-info.cfg b/config-model/src/test/derived/arrays/index-info.cfg index 1439dcc8bf7..f5f65700d89 100644 --- a/config-model/src/test/derived/arrays/index-info.cfg +++ b/config-model/src/test/derived/arrays/index-info.cfg @@ -1,63 +1,63 @@ -indexinfo[0].name "arrays" -indexinfo[0].command[0].indexname "sddocname" -indexinfo[0].command[0].command "index" -indexinfo[0].command[1].indexname "sddocname" -indexinfo[0].command[1].command "word" -indexinfo[0].command[2].indexname "tags" -indexinfo[0].command[2].command "index" -indexinfo[0].command[3].indexname "tags" -indexinfo[0].command[3].command "lowercase" -indexinfo[0].command[4].indexname "tags" -indexinfo[0].command[4].command "multivalue" -indexinfo[0].command[5].indexname "tags" -indexinfo[0].command[5].command "stem:SHORTEST" -indexinfo[0].command[6].indexname "tags" -indexinfo[0].command[6].command "normalize" -indexinfo[0].command[7].indexname "ratings" -indexinfo[0].command[7].command "index" -indexinfo[0].command[8].indexname "ratings" -indexinfo[0].command[8].command "multivalue" -indexinfo[0].command[9].indexname "ratings" -indexinfo[0].command[9].command "attribute" -indexinfo[0].command[10].indexname "a" -indexinfo[0].command[10].command "index" -indexinfo[0].command[11].indexname "a" -indexinfo[0].command[11].command "lowercase" -indexinfo[0].command[12].indexname "a" -indexinfo[0].command[12].command "stem:SHORTEST" -indexinfo[0].command[13].indexname "a" -indexinfo[0].command[13].command "normalize" -indexinfo[0].command[14].indexname "b" -indexinfo[0].command[14].command "index" -indexinfo[0].command[15].indexname "b" -indexinfo[0].command[15].command "lowercase" -indexinfo[0].command[16].indexname "b" -indexinfo[0].command[16].command "multivalue" -indexinfo[0].command[17].indexname "b" -indexinfo[0].command[17].command "stem:SHORTEST" -indexinfo[0].command[18].indexname "b" -indexinfo[0].command[18].command "normalize" -indexinfo[0].command[19].indexname "c" -indexinfo[0].command[19].command "index" -indexinfo[0].command[20].indexname "c" -indexinfo[0].command[20].command "lowercase" -indexinfo[0].command[21].indexname "c" -indexinfo[0].command[21].command "multivalue" -indexinfo[0].command[22].indexname "c" -indexinfo[0].command[22].command "stem:SHORTEST" -indexinfo[0].command[23].indexname "c" -indexinfo[0].command[23].command "normalize" -indexinfo[0].command[24].indexname "rankfeatures" -indexinfo[0].command[24].command "index" -indexinfo[0].command[25].indexname "summaryfeatures" -indexinfo[0].command[25].command "index" -indexinfo[0].command[26].indexname "default" -indexinfo[0].command[26].command "lowercase" -indexinfo[0].command[27].indexname "default" -indexinfo[0].command[27].command "multivalue" -indexinfo[0].command[28].indexname "default" -indexinfo[0].command[28].command "index" -indexinfo[0].command[29].indexname "default" -indexinfo[0].command[29].command "stem:SHORTEST" -indexinfo[0].command[30].indexname "default" -indexinfo[0].command[30].command "normalize"
\ No newline at end of file +indexinfo[].name "arrays" +indexinfo[].command[].indexname "sddocname" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "sddocname" +indexinfo[].command[].command "word" +indexinfo[].command[].indexname "tags" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "tags" +indexinfo[].command[].command "lowercase" +indexinfo[].command[].indexname "tags" +indexinfo[].command[].command "multivalue" +indexinfo[].command[].indexname "tags" +indexinfo[].command[].command "stem:SHORTEST" +indexinfo[].command[].indexname "tags" +indexinfo[].command[].command "normalize" +indexinfo[].command[].indexname "ratings" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "ratings" +indexinfo[].command[].command "multivalue" +indexinfo[].command[].indexname "ratings" +indexinfo[].command[].command "attribute" +indexinfo[].command[].indexname "default" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "default" +indexinfo[].command[].command "lowercase" +indexinfo[].command[].indexname "default" +indexinfo[].command[].command "stem:SHORTEST" +indexinfo[].command[].indexname "default" +indexinfo[].command[].command "normalize" +indexinfo[].command[].indexname "default" +indexinfo[].command[].command "multivalue" +indexinfo[].command[].indexname "a" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "a" +indexinfo[].command[].command "lowercase" +indexinfo[].command[].indexname "a" +indexinfo[].command[].command "stem:SHORTEST" +indexinfo[].command[].indexname "a" +indexinfo[].command[].command "normalize" +indexinfo[].command[].indexname "b" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "b" +indexinfo[].command[].command "lowercase" +indexinfo[].command[].indexname "b" +indexinfo[].command[].command "multivalue" +indexinfo[].command[].indexname "b" +indexinfo[].command[].command "stem:SHORTEST" +indexinfo[].command[].indexname "b" +indexinfo[].command[].command "normalize" +indexinfo[].command[].indexname "c" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "c" +indexinfo[].command[].command "lowercase" +indexinfo[].command[].indexname "c" +indexinfo[].command[].command "multivalue" +indexinfo[].command[].indexname "c" +indexinfo[].command[].command "stem:SHORTEST" +indexinfo[].command[].indexname "c" +indexinfo[].command[].command "normalize" +indexinfo[].command[].indexname "rankfeatures" +indexinfo[].command[].command "index" +indexinfo[].command[].indexname "summaryfeatures" +indexinfo[].command[].command "index"
\ No newline at end of file diff --git a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg index 619bced44cf..92558a62509 100644 --- a/config-model/src/test/derived/attributeprefetch/documentmanager.cfg +++ b/config-model/src/test/derived/attributeprefetch/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 49942803 datatype[1].arraytype[0].datatype 16 datatype[2].id -1068914395 @@ -57,64 +55,44 @@ datatype[13].structtype[0].compressthreshold 95 datatype[13].structtype[0].compressminsize 800 datatype[13].structtype[0].field[0].name "singlebyte" datatype[13].structtype[0].field[0].datatype 16 -datatype[13].structtype[0].field[0].detailedtype "" datatype[13].structtype[0].field[1].name "multibyte" datatype[13].structtype[0].field[1].datatype 49942803 -datatype[13].structtype[0].field[1].detailedtype "" datatype[13].structtype[0].field[2].name "wsbyte" datatype[13].structtype[0].field[2].datatype -1068914395 -datatype[13].structtype[0].field[2].detailedtype "" datatype[13].structtype[0].field[3].name "singleint" datatype[13].structtype[0].field[3].datatype 0 -datatype[13].structtype[0].field[3].detailedtype "" datatype[13].structtype[0].field[4].name "multiint" datatype[13].structtype[0].field[4].datatype -1245117006 -datatype[13].structtype[0].field[4].detailedtype "" datatype[13].structtype[0].field[5].name "wsint" datatype[13].structtype[0].field[5].datatype 519906144 -datatype[13].structtype[0].field[5].detailedtype "" datatype[13].structtype[0].field[6].name "singlelong" datatype[13].structtype[0].field[6].datatype 4 -datatype[13].structtype[0].field[6].detailedtype "" datatype[13].structtype[0].field[7].name "multilong" datatype[13].structtype[0].field[7].datatype 58874399 -datatype[13].structtype[0].field[7].detailedtype "" datatype[13].structtype[0].field[8].name "wslong" datatype[13].structtype[0].field[8].datatype -1059982799 -datatype[13].structtype[0].field[8].detailedtype "" datatype[13].structtype[0].field[9].name "singlefloat" datatype[13].structtype[0].field[9].datatype 1 -datatype[13].structtype[0].field[9].detailedtype "" datatype[13].structtype[0].field[10].name "multifloat" datatype[13].structtype[0].field[10].datatype 1650586661 -datatype[13].structtype[0].field[10].detailedtype "" datatype[13].structtype[0].field[11].name "wsfloat" datatype[13].structtype[0].field[11].datatype 1325751891 -datatype[13].structtype[0].field[11].detailedtype "" datatype[13].structtype[0].field[12].name "singledouble" datatype[13].structtype[0].field[12].datatype 5 -datatype[13].structtype[0].field[12].detailedtype "" datatype[13].structtype[0].field[13].name "multidouble" datatype[13].structtype[0].field[13].datatype -2054976470 -datatype[13].structtype[0].field[13].detailedtype "" datatype[13].structtype[0].field[14].name "wsdouble" datatype[13].structtype[0].field[14].datatype 760047548 -datatype[13].structtype[0].field[14].detailedtype "" datatype[13].structtype[0].field[15].name "singlestring" datatype[13].structtype[0].field[15].datatype 2 -datatype[13].structtype[0].field[15].detailedtype "" datatype[13].structtype[0].field[16].name "multistring" datatype[13].structtype[0].field[16].datatype -1486737430 -datatype[13].structtype[0].field[16].detailedtype "" datatype[13].structtype[0].field[17].name "wsstring" datatype[13].structtype[0].field[17].datatype 1328286588 -datatype[13].structtype[0].field[17].detailedtype "" datatype[13].structtype[0].field[18].name "rankfeatures" datatype[13].structtype[0].field[18].datatype 2 -datatype[13].structtype[0].field[18].detailedtype "" datatype[13].structtype[0].field[19].name "summaryfeatures" datatype[13].structtype[0].field[19].datatype 2 -datatype[13].structtype[0].field[19].detailedtype "" datatype[14].id 932425403 datatype[14].structtype[0].name "prefetch.body" datatype[14].structtype[0].version 0 diff --git a/config-model/src/test/derived/complex/documentmanager.cfg b/config-model/src/test/derived/complex/documentmanager.cfg index e47f40f100a..66ebbbb2846 100644 --- a/config-model/src/test/derived/complex/documentmanager.cfg +++ b/config-model/src/test/derived/complex/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1650586661 datatype[1].arraytype[0].datatype 1 datatype[2].id -1245117006 @@ -25,85 +23,58 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "title" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "location" datatype[3].structtype[0].field[1].datatype 2 -datatype[3].structtype[0].field[1].detailedtype "" datatype[3].structtype[0].field[2].name "dyntitle" datatype[3].structtype[0].field[2].datatype 2 -datatype[3].structtype[0].field[2].detailedtype "" datatype[3].structtype[0].field[3].name "special1" datatype[3].structtype[0].field[3].datatype 2 -datatype[3].structtype[0].field[3].detailedtype "" datatype[3].structtype[0].field[4].name "special2" datatype[3].structtype[0].field[4].datatype 2 -datatype[3].structtype[0].field[4].detailedtype "" datatype[3].structtype[0].field[5].name "special3" datatype[3].structtype[0].field[5].datatype 2 -datatype[3].structtype[0].field[5].detailedtype "" datatype[3].structtype[0].field[6].name "prefixenabled" datatype[3].structtype[0].field[6].datatype 2 -datatype[3].structtype[0].field[6].detailedtype "" datatype[3].structtype[0].field[7].name "source" datatype[3].structtype[0].field[7].datatype 10 -datatype[3].structtype[0].field[7].detailedtype "" datatype[3].structtype[0].field[8].name "docurl" datatype[3].structtype[0].field[8].datatype 10 -datatype[3].structtype[0].field[8].detailedtype "" datatype[3].structtype[0].field[9].name "fleeting" datatype[3].structtype[0].field[9].datatype 1650586661 -datatype[3].structtype[0].field[9].detailedtype "" datatype[3].structtype[0].field[10].name "fleeting2" datatype[3].structtype[0].field[10].datatype 1 -datatype[3].structtype[0].field[10].detailedtype "" datatype[3].structtype[0].field[11].name "foundat" datatype[3].structtype[0].field[11].datatype 4 -datatype[3].structtype[0].field[11].detailedtype "" datatype[3].structtype[0].field[12].name "collapseby" datatype[3].structtype[0].field[12].datatype 0 -datatype[3].structtype[0].field[12].detailedtype "" datatype[3].structtype[0].field[13].name "yEaR" datatype[3].structtype[0].field[13].datatype 0 -datatype[3].structtype[0].field[13].detailedtype "" datatype[3].structtype[0].field[14].name "stringfield" datatype[3].structtype[0].field[14].datatype 2 -datatype[3].structtype[0].field[14].detailedtype "" datatype[3].structtype[0].field[15].name "exactemento" datatype[3].structtype[0].field[15].datatype 2 -datatype[3].structtype[0].field[15].detailedtype "" datatype[3].structtype[0].field[16].name "exactagain" datatype[3].structtype[0].field[16].datatype 2 -datatype[3].structtype[0].field[16].detailedtype "" datatype[3].structtype[0].field[17].name "ts" datatype[3].structtype[0].field[17].datatype 4 -datatype[3].structtype[0].field[17].detailedtype "" datatype[3].structtype[0].field[18].name "combineda" datatype[3].structtype[0].field[18].datatype 0 -datatype[3].structtype[0].field[18].detailedtype "" datatype[3].structtype[0].field[19].name "combinedb" datatype[3].structtype[0].field[19].datatype 2 -datatype[3].structtype[0].field[19].detailedtype "" datatype[3].structtype[0].field[20].name "category" datatype[3].structtype[0].field[20].datatype 2 -datatype[3].structtype[0].field[20].detailedtype "" datatype[3].structtype[0].field[21].name "woe" datatype[3].structtype[0].field[21].datatype 2 -datatype[3].structtype[0].field[21].detailedtype "" datatype[3].structtype[0].field[22].name "year_sub" datatype[3].structtype[0].field[22].datatype 0 -datatype[3].structtype[0].field[22].detailedtype "" datatype[3].structtype[0].field[23].name "year_arr" datatype[3].structtype[0].field[23].datatype -1245117006 -datatype[3].structtype[0].field[23].detailedtype "" datatype[3].structtype[0].field[24].name "exact" datatype[3].structtype[0].field[24].datatype 2 -datatype[3].structtype[0].field[24].detailedtype "" datatype[3].structtype[0].field[25].name "rankfeatures" datatype[3].structtype[0].field[25].datatype 2 -datatype[3].structtype[0].field[25].detailedtype "" datatype[3].structtype[0].field[26].name "summaryfeatures" datatype[3].structtype[0].field[26].datatype 2 -datatype[3].structtype[0].field[26].detailedtype "" datatype[4].id -1665926686 datatype[4].structtype[0].name "complex.body" datatype[4].structtype[0].version 0 diff --git a/config-model/src/test/derived/complex/rank-profiles.cfg b/config-model/src/test/derived/complex/rank-profiles.cfg index a317bfeb18e..5e2804d0ee6 100644 --- a/config-model/src/test/derived/complex/rank-profiles.cfg +++ b/config-model/src/test/derived/complex/rank-profiles.cfg @@ -65,4 +65,4 @@ rankprofile[3].fef.property[9].value "loggrowth(1500,4000,19)" rankprofile[3].fef.property[10].name "nativeProximity.proximityTable.title" rankprofile[3].fef.property[10].value "expdecay(500,3)" rankprofile[3].fef.property[11].name "nativeProximity.reverseProximityTable.title" -rankprofile[3].fef.property[11].value "expdecay(400,3)"
\ No newline at end of file +rankprofile[3].fef.property[11].value "expdecay(400,3)" diff --git a/config-model/src/test/derived/documentderiver/documentmanager.cfg b/config-model/src/test/derived/documentderiver/documentmanager.cfg index f993b465111..d56d90ba358 100644 --- a/config-model/src/test/derived/documentderiver/documentmanager.cfg +++ b/config-model/src/test/derived/documentderiver/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -843666531 datatype[1].structtype[0].name "compressed_body.header" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "from" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 1704844530 datatype[2].structtype[0].name "compressed_body.body" datatype[2].structtype[0].version 0 @@ -31,7 +28,6 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 0 datatype[2].structtype[0].field[0].name "content" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[3].id 1417245026 datatype[3].documenttype[0].name "compressed_body" datatype[3].documenttype[0].version 0 @@ -48,7 +44,6 @@ datatype[4].structtype[0].compressthreshold 50 datatype[4].structtype[0].compressminsize 0 datatype[4].structtype[0].field[0].name "from" datatype[4].structtype[0].field[0].datatype 2 -datatype[4].structtype[0].field[0].detailedtype "" datatype[5].id -1007627725 datatype[5].structtype[0].name "compressed_both.body" datatype[5].structtype[0].version 0 @@ -58,7 +53,6 @@ datatype[5].structtype[0].compressthreshold 90 datatype[5].structtype[0].compressminsize 0 datatype[5].structtype[0].field[0].name "content" datatype[5].structtype[0].field[0].datatype 2 -datatype[5].structtype[0].field[0].detailedtype "" datatype[6].id 1417705345 datatype[6].documenttype[0].name "compressed_both" datatype[6].documenttype[0].version 0 @@ -75,7 +69,6 @@ datatype[7].structtype[0].compressthreshold 95 datatype[7].structtype[0].compressminsize 0 datatype[7].structtype[0].field[0].name "from" datatype[7].structtype[0].field[0].datatype 2 -datatype[7].structtype[0].field[0].detailedtype "" datatype[8].id -579052249 datatype[8].structtype[0].name "compressed_header.body" datatype[8].structtype[0].version 0 @@ -85,7 +78,6 @@ datatype[8].structtype[0].compressthreshold 95 datatype[8].structtype[0].compressminsize 800 datatype[8].structtype[0].field[0].name "content" datatype[8].structtype[0].field[0].datatype 2 -datatype[8].structtype[0].field[0].detailedtype "" datatype[9].id 1946084365 datatype[9].documenttype[0].name "compressed_header" datatype[9].documenttype[0].version 0 @@ -102,31 +94,22 @@ datatype[10].structtype[0].compressthreshold 95 datatype[10].structtype[0].compressminsize 800 datatype[10].structtype[0].field[0].name "URI" datatype[10].structtype[0].field[0].datatype 10 -datatype[10].structtype[0].field[0].detailedtype "" datatype[10].structtype[0].field[1].name "mailid" datatype[10].structtype[0].field[1].datatype 2 -datatype[10].structtype[0].field[1].detailedtype "" datatype[10].structtype[0].field[2].name "date" datatype[10].structtype[0].field[2].datatype 0 -datatype[10].structtype[0].field[2].detailedtype "" datatype[10].structtype[0].field[3].name "from" datatype[10].structtype[0].field[3].datatype 2 -datatype[10].structtype[0].field[3].detailedtype "" datatype[10].structtype[0].field[4].name "replyto" datatype[10].structtype[0].field[4].datatype 3 -datatype[10].structtype[0].field[4].detailedtype "" datatype[10].structtype[0].field[5].name "to" datatype[10].structtype[0].field[5].datatype 2 -datatype[10].structtype[0].field[5].detailedtype "" datatype[10].structtype[0].field[6].name "cc" datatype[10].structtype[0].field[6].datatype 2 -datatype[10].structtype[0].field[6].detailedtype "" datatype[10].structtype[0].field[7].name "bcc" datatype[10].structtype[0].field[7].datatype 2 -datatype[10].structtype[0].field[7].detailedtype "" datatype[10].structtype[0].field[8].name "subject" datatype[10].structtype[0].field[8].datatype 2 -datatype[10].structtype[0].field[8].detailedtype "" datatype[11].id -1244861287 datatype[11].arraytype[0].datatype 3 datatype[12].id -953584901 @@ -138,25 +121,18 @@ datatype[12].structtype[0].compressthreshold 95 datatype[12].structtype[0].compressminsize 800 datatype[12].structtype[0].field[0].name "mailbody" datatype[12].structtype[0].field[0].datatype 3 -datatype[12].structtype[0].field[0].detailedtype "" datatype[12].structtype[0].field[1].name "attachmentcount" datatype[12].structtype[0].field[1].datatype 0 -datatype[12].structtype[0].field[1].detailedtype "" datatype[12].structtype[0].field[2].name "attachmentnames" datatype[12].structtype[0].field[2].datatype 2 -datatype[12].structtype[0].field[2].detailedtype "" datatype[12].structtype[0].field[3].name "attachmenttypes" datatype[12].structtype[0].field[3].datatype 2 -datatype[12].structtype[0].field[3].detailedtype "" datatype[12].structtype[0].field[4].name "attachmentlanguages" datatype[12].structtype[0].field[4].datatype 2 -datatype[12].structtype[0].field[4].detailedtype "" datatype[12].structtype[0].field[5].name "attachmentcontent" datatype[12].structtype[0].field[5].datatype 2 -datatype[12].structtype[0].field[5].detailedtype "" datatype[12].structtype[0].field[6].name "attachments" datatype[12].structtype[0].field[6].datatype -1244861287 -datatype[12].structtype[0].field[6].detailedtype "" datatype[13].id -1081574983 datatype[13].documenttype[0].name "mail" datatype[13].documenttype[0].version 0 @@ -183,31 +159,22 @@ datatype[17].structtype[0].compressthreshold 95 datatype[17].structtype[0].compressminsize 800 datatype[17].structtype[0].field[0].name "url" datatype[17].structtype[0].field[0].datatype 10 -datatype[17].structtype[0].field[0].detailedtype "" datatype[17].structtype[0].field[1].name "title" datatype[17].structtype[0].field[1].datatype 2 -datatype[17].structtype[0].field[1].detailedtype "" datatype[17].structtype[0].field[2].name "artist" datatype[17].structtype[0].field[2].datatype 2 -datatype[17].structtype[0].field[2].detailedtype "" datatype[17].structtype[0].field[3].name "year" datatype[17].structtype[0].field[3].datatype 0 -datatype[17].structtype[0].field[3].detailedtype "" datatype[17].structtype[0].field[4].name "description" datatype[17].structtype[0].field[4].datatype 3 -datatype[17].structtype[0].field[4].detailedtype "" datatype[17].structtype[0].field[5].name "tracks" datatype[17].structtype[0].field[5].datatype -1486737430 -datatype[17].structtype[0].field[5].detailedtype "" datatype[17].structtype[0].field[6].name "popularity" datatype[17].structtype[0].field[6].datatype 519906144 -datatype[17].structtype[0].field[6].detailedtype "" datatype[17].structtype[0].field[7].name "popularity2" datatype[17].structtype[0].field[7].datatype 363959257 -datatype[17].structtype[0].field[7].detailedtype "" datatype[17].structtype[0].field[8].name "popularity3" datatype[17].structtype[0].field[8].datatype 363959257 -datatype[17].structtype[0].field[8].detailedtype "" datatype[18].id 993120973 datatype[18].structtype[0].name "music.body" datatype[18].structtype[0].version 0 @@ -231,67 +198,46 @@ datatype[20].structtype[0].compressthreshold 95 datatype[20].structtype[0].compressminsize 800 datatype[20].structtype[0].field[0].name "title" datatype[20].structtype[0].field[0].datatype 2 -datatype[20].structtype[0].field[0].detailedtype "" datatype[20].structtype[0].field[1].name "abstract" datatype[20].structtype[0].field[1].datatype 2 -datatype[20].structtype[0].field[1].detailedtype "" datatype[20].structtype[0].field[2].name "sourcename" datatype[20].structtype[0].field[2].datatype 2 -datatype[20].structtype[0].field[2].detailedtype "" datatype[20].structtype[0].field[3].name "providername" datatype[20].structtype[0].field[3].datatype 2 -datatype[20].structtype[0].field[3].detailedtype "" datatype[20].structtype[0].field[4].name "thumburl" datatype[20].structtype[0].field[4].datatype 2 -datatype[20].structtype[0].field[4].detailedtype "" datatype[20].structtype[0].field[5].name "thumbwidth" datatype[20].structtype[0].field[5].datatype 0 -datatype[20].structtype[0].field[5].detailedtype "" datatype[20].structtype[0].field[6].name "thumbheight" datatype[20].structtype[0].field[6].datatype 0 -datatype[20].structtype[0].field[6].detailedtype "" datatype[20].structtype[0].field[7].name "language" datatype[20].structtype[0].field[7].datatype 2 -datatype[20].structtype[0].field[7].detailedtype "" datatype[20].structtype[0].field[8].name "crawldocid" datatype[20].structtype[0].field[8].datatype 2 -datatype[20].structtype[0].field[8].detailedtype "" datatype[20].structtype[0].field[9].name "url" datatype[20].structtype[0].field[9].datatype 10 -datatype[20].structtype[0].field[9].detailedtype "" datatype[20].structtype[0].field[10].name "sourceurl" datatype[20].structtype[0].field[10].datatype 10 -datatype[20].structtype[0].field[10].detailedtype "" datatype[20].structtype[0].field[11].name "categories" datatype[20].structtype[0].field[11].datatype 2 -datatype[20].structtype[0].field[11].detailedtype "" datatype[20].structtype[0].field[12].name "pubdate" datatype[20].structtype[0].field[12].datatype 4 -datatype[20].structtype[0].field[12].detailedtype "" datatype[20].structtype[0].field[13].name "expdate" datatype[20].structtype[0].field[13].datatype 4 -datatype[20].structtype[0].field[13].detailedtype "" datatype[20].structtype[0].field[14].name "fingerprint" datatype[20].structtype[0].field[14].datatype 0 -datatype[20].structtype[0].field[14].detailedtype "" datatype[20].structtype[0].field[15].name "debug" datatype[20].structtype[0].field[15].datatype 2 -datatype[20].structtype[0].field[15].detailedtype "" datatype[20].structtype[0].field[16].name "attributes" datatype[20].structtype[0].field[16].datatype 2 -datatype[20].structtype[0].field[16].detailedtype "" datatype[20].structtype[0].field[17].name "searchcluster" datatype[20].structtype[0].field[17].datatype 2 -datatype[20].structtype[0].field[17].detailedtype "" datatype[20].structtype[0].field[18].name "eustaticrank" datatype[20].structtype[0].field[18].datatype 0 -datatype[20].structtype[0].field[18].detailedtype "" datatype[20].structtype[0].field[19].name "usstaticrank" datatype[20].structtype[0].field[19].datatype 0 -datatype[20].structtype[0].field[19].detailedtype "" datatype[20].structtype[0].field[20].name "asiastaticrank" datatype[20].structtype[0].field[20].datatype 0 -datatype[20].structtype[0].field[20].detailedtype "" datatype[21].id -2059783233 datatype[21].structtype[0].name "newssummary.body" datatype[21].structtype[0].version 0 @@ -315,64 +261,44 @@ datatype[23].structtype[0].compressthreshold 95 datatype[23].structtype[0].compressminsize 800 datatype[23].structtype[0].field[0].name "dynabstract" datatype[23].structtype[0].field[0].datatype 2 -datatype[23].structtype[0].field[0].detailedtype "" datatype[23].structtype[0].field[1].name "othersourcenames" datatype[23].structtype[0].field[1].datatype 2 -datatype[23].structtype[0].field[1].detailedtype "" datatype[23].structtype[0].field[2].name "author" datatype[23].structtype[0].field[2].datatype 2 -datatype[23].structtype[0].field[2].detailedtype "" datatype[23].structtype[0].field[3].name "otherlanguages" datatype[23].structtype[0].field[3].datatype 2 -datatype[23].structtype[0].field[3].detailedtype "" datatype[23].structtype[0].field[4].name "charset" datatype[23].structtype[0].field[4].datatype 2 -datatype[23].structtype[0].field[4].detailedtype "" datatype[23].structtype[0].field[5].name "mimetype" datatype[23].structtype[0].field[5].datatype 2 -datatype[23].structtype[0].field[5].detailedtype "" datatype[23].structtype[0].field[6].name "referrerurl" datatype[23].structtype[0].field[6].datatype 10 -datatype[23].structtype[0].field[6].detailedtype "" datatype[23].structtype[0].field[7].name "sourcelocation" datatype[23].structtype[0].field[7].datatype 2 -datatype[23].structtype[0].field[7].detailedtype "" datatype[23].structtype[0].field[8].name "sourcecountry" datatype[23].structtype[0].field[8].datatype 2 -datatype[23].structtype[0].field[8].detailedtype "" datatype[23].structtype[0].field[9].name "sourcelocale" datatype[23].structtype[0].field[9].datatype 2 -datatype[23].structtype[0].field[9].detailedtype "" datatype[23].structtype[0].field[10].name "sourcecontinent" datatype[23].structtype[0].field[10].datatype 2 -datatype[23].structtype[0].field[10].detailedtype "" datatype[23].structtype[0].field[11].name "articlecountry" datatype[23].structtype[0].field[11].datatype 2 -datatype[23].structtype[0].field[11].detailedtype "" datatype[23].structtype[0].field[12].name "articlelocale" datatype[23].structtype[0].field[12].datatype 2 -datatype[23].structtype[0].field[12].detailedtype "" datatype[23].structtype[0].field[13].name "articlecontinent" datatype[23].structtype[0].field[13].datatype 2 -datatype[23].structtype[0].field[13].detailedtype "" datatype[23].structtype[0].field[14].name "sourcerank" datatype[23].structtype[0].field[14].datatype 0 -datatype[23].structtype[0].field[14].detailedtype "" datatype[23].structtype[0].field[15].name "crawldate" datatype[23].structtype[0].field[15].datatype 4 -datatype[23].structtype[0].field[15].detailedtype "" datatype[23].structtype[0].field[16].name "indexdate" datatype[23].structtype[0].field[16].datatype 4 -datatype[23].structtype[0].field[16].detailedtype "" datatype[23].structtype[0].field[17].name "procdate" datatype[23].structtype[0].field[17].datatype 4 -datatype[23].structtype[0].field[17].detailedtype "" datatype[23].structtype[0].field[18].name "sourceid" datatype[23].structtype[0].field[18].datatype 0 -datatype[23].structtype[0].field[18].detailedtype "" datatype[23].structtype[0].field[19].name "sourcefeedid" datatype[23].structtype[0].field[19].datatype 0 -datatype[23].structtype[0].field[19].detailedtype "" datatype[24].id 197293167 datatype[24].structtype[0].name "newsarticle.body" datatype[24].structtype[0].version 0 @@ -382,7 +308,6 @@ datatype[24].structtype[0].compressthreshold 95 datatype[24].structtype[0].compressminsize 800 datatype[24].structtype[0].field[0].name "body" datatype[24].structtype[0].field[0].datatype 2 -datatype[24].structtype[0].field[0].detailedtype "" datatype[25].id -1710661691 datatype[25].documenttype[0].name "newsarticle" datatype[25].documenttype[0].version 0 diff --git a/config-model/src/test/derived/emptydefault/documentmanager.cfg b/config-model/src/test/derived/emptydefault/documentmanager.cfg index 9e25ff1c8ec..4235199342a 100644 --- a/config-model/src/test/derived/emptydefault/documentmanager.cfg +++ b/config-model/src/test/derived/emptydefault/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 461724009 datatype[1].structtype[0].name "emptydefault.header" datatype[1].structtype[0].version 0 @@ -21,16 +19,12 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "one" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "two" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "rankfeatures" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "summaryfeatures" datatype[1].structtype[0].field[3].datatype 2 -datatype[1].structtype[0].field[3].detailedtype "" datatype[2].id 311791038 datatype[2].structtype[0].name "emptydefault.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/id/documentmanager.cfg b/config-model/src/test/derived/id/documentmanager.cfg index 00ffb00975b..40996d46399 100644 --- a/config-model/src/test/derived/id/documentmanager.cfg +++ b/config-model/src/test/derived/id/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -531633022 datatype[1].structtype[0].name "id.header" datatype[1].structtype[0].version 0 @@ -21,13 +19,10 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "uri" datatype[1].structtype[0].field[0].datatype 10 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "rankfeatures" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "summaryfeatures" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[2].id -1830022377 datatype[2].structtype[0].name "id.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/indexswitches/documentmanager.cfg b/config-model/src/test/derived/indexswitches/documentmanager.cfg index bdc983ebb67..0a32e670d7b 100644 --- a/config-model/src/test/derived/indexswitches/documentmanager.cfg +++ b/config-model/src/test/derived/indexswitches/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -555640823 datatype[1].structtype[0].name "indexswitches.header" datatype[1].structtype[0].version 0 @@ -21,22 +19,16 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "title" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "descr" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "source_src" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "source" datatype[1].structtype[0].field[3].datatype 2 -datatype[1].structtype[0].field[3].detailedtype "" datatype[1].structtype[0].field[4].name "rankfeatures" datatype[1].structtype[0].field[4].datatype 2 -datatype[1].structtype[0].field[4].detailedtype "" datatype[1].structtype[0].field[5].name "summaryfeatures" datatype[1].structtype[0].field[5].datatype 2 -datatype[1].structtype[0].field[5].detailedtype "" datatype[2].id -1892617122 datatype[2].structtype[0].name "indexswitches.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/indexswitches/index-info.cfg b/config-model/src/test/derived/indexswitches/index-info.cfg index 6387551ec98..3daf23f8b67 100644 --- a/config-model/src/test/derived/indexswitches/index-info.cfg +++ b/config-model/src/test/derived/indexswitches/index-info.cfg @@ -5,37 +5,37 @@ indexinfo[0].command[1].indexname "sddocname" indexinfo[0].command[1].command "word" indexinfo[0].command[2].indexname "title" indexinfo[0].command[2].command "index" -indexinfo[0].command[3].indexname "title" -indexinfo[0].command[3].command "lowercase" +indexinfo[0].command[3].indexname "default" +indexinfo[0].command[3].command "index" indexinfo[0].command[4].indexname "title" -indexinfo[0].command[4].command "stem:SHORTEST" -indexinfo[0].command[5].indexname "title" -indexinfo[0].command[5].command "normalize" -indexinfo[0].command[6].indexname "descr" -indexinfo[0].command[6].command "index" -indexinfo[0].command[7].indexname "descr" -indexinfo[0].command[7].command "lowercase" -indexinfo[0].command[8].indexname "descr" -indexinfo[0].command[8].command "stem:SHORTEST" -indexinfo[0].command[9].indexname "descr" +indexinfo[0].command[4].command "lowercase" +indexinfo[0].command[5].indexname "default" +indexinfo[0].command[5].command "lowercase" +indexinfo[0].command[6].indexname "title" +indexinfo[0].command[6].command "stem:SHORTEST" +indexinfo[0].command[7].indexname "default" +indexinfo[0].command[7].command "stem:SHORTEST" +indexinfo[0].command[8].indexname "title" +indexinfo[0].command[8].command "normalize" +indexinfo[0].command[9].indexname "default" indexinfo[0].command[9].command "normalize" -indexinfo[0].command[10].indexname "source_src" +indexinfo[0].command[10].indexname "descr" indexinfo[0].command[10].command "index" -indexinfo[0].command[11].indexname "rankfeatures" -indexinfo[0].command[11].command "index" -indexinfo[0].command[12].indexname "source" -indexinfo[0].command[12].command "index" -indexinfo[0].command[13].indexname "source" -indexinfo[0].command[13].command "lowercase" -indexinfo[0].command[14].indexname "source" -indexinfo[0].command[14].command "normalize" -indexinfo[0].command[15].indexname "summaryfeatures" +indexinfo[0].command[11].indexname "descr" +indexinfo[0].command[11].command "lowercase" +indexinfo[0].command[12].indexname "descr" +indexinfo[0].command[12].command "stem:SHORTEST" +indexinfo[0].command[13].indexname "descr" +indexinfo[0].command[13].command "normalize" +indexinfo[0].command[14].indexname "source_src" +indexinfo[0].command[14].command "index" +indexinfo[0].command[15].indexname "rankfeatures" indexinfo[0].command[15].command "index" -indexinfo[0].command[16].indexname "default" -indexinfo[0].command[16].command "lowercase" -indexinfo[0].command[17].indexname "default" -indexinfo[0].command[17].command "index" -indexinfo[0].command[18].indexname "default" -indexinfo[0].command[18].command "stem:SHORTEST" -indexinfo[0].command[19].indexname "default" -indexinfo[0].command[19].command "normalize"
\ No newline at end of file +indexinfo[0].command[16].indexname "source" +indexinfo[0].command[16].command "index" +indexinfo[0].command[17].indexname "source" +indexinfo[0].command[17].command "lowercase" +indexinfo[0].command[18].indexname "source" +indexinfo[0].command[18].command "normalize" +indexinfo[0].command[19].indexname "summaryfeatures" +indexinfo[0].command[19].command "index"
\ No newline at end of file diff --git a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg index ea0aa3a3e93..8c51dc52c58 100644 --- a/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromgrandparent/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1246084544 datatype[1].structtype[0].name "grandparent_struct" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "grandparent_field" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 990971719 datatype[2].structtype[0].name "grandparent.header" datatype[2].structtype[0].version 0 @@ -31,10 +28,8 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "rankfeatures" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "summaryfeatures" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[3].id 978262812 datatype[3].structtype[0].name "grandparent.body" datatype[3].structtype[0].version 0 @@ -83,7 +78,6 @@ datatype[8].structtype[0].compressthreshold 95 datatype[8].structtype[0].compressminsize 800 datatype[8].structtype[0].field[0].name "child_field" datatype[8].structtype[0].field[0].datatype 1246084544 -datatype[8].structtype[0].field[0].detailedtype "" datatype[9].id -126593034 datatype[9].structtype[0].name "child.body" datatype[9].structtype[0].version 0 diff --git a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg index 80a9cbcfc3b..fec59f5ff72 100644 --- a/config-model/src/test/derived/inheritfromparent/documentmanager.cfg +++ b/config-model/src/test/derived/inheritfromparent/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 1091188812 datatype[1].structtype[0].name "parent_struct" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "parent_field" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 836075987 datatype[2].structtype[0].name "parent.header" datatype[2].structtype[0].version 0 @@ -31,16 +28,12 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "weight_src" datatype[2].structtype[0].field[0].datatype 1 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "weight" datatype[2].structtype[0].field[1].datatype 1 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "rankfeatures" datatype[2].structtype[0].field[2].datatype 2 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "summaryfeatures" datatype[2].structtype[0].field[3].datatype 2 -datatype[2].structtype[0].field[3].detailedtype "" datatype[3].id -389494616 datatype[3].structtype[0].name "parent.body" datatype[3].structtype[0].version 0 @@ -65,7 +58,6 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "child_field" datatype[5].structtype[0].field[0].datatype 1091188812 -datatype[5].structtype[0].field[0].detailedtype "" datatype[6].id -126593034 datatype[6].structtype[0].name "child.body" datatype[6].structtype[0].version 0 diff --git a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg index 351ea0d9527..44677776f3c 100644 --- a/config-model/src/test/derived/inheritfromparent/documenttypes.cfg +++ b/config-model/src/test/derived/inheritfromparent/documenttypes.cfg @@ -24,7 +24,6 @@ documenttype[0].datatype[0].sstruct.field[0].name "parent_field" documenttype[0].datatype[0].sstruct.field[0].id 933533022 documenttype[0].datatype[0].sstruct.field[0].id_v6 2116869443 documenttype[0].datatype[0].sstruct.field[0].datatype 2 -documenttype[0].datatype[0].sstruct.field[0].detailedtype "" documenttype[0].datatype[1].id 836075987 documenttype[0].datatype[1].type STRUCT documenttype[0].datatype[1].array.element.id 0 @@ -44,22 +43,18 @@ documenttype[0].datatype[1].sstruct.field[0].name "weight_src" documenttype[0].datatype[1].sstruct.field[0].id 1225660233 documenttype[0].datatype[1].sstruct.field[0].id_v6 1350588470 documenttype[0].datatype[1].sstruct.field[0].datatype 1 -documenttype[0].datatype[1].sstruct.field[0].detailedtype "" documenttype[0].datatype[1].sstruct.field[1].name "weight" documenttype[0].datatype[1].sstruct.field[1].id 1001392207 documenttype[0].datatype[1].sstruct.field[1].id_v6 1329620545 documenttype[0].datatype[1].sstruct.field[1].datatype 1 -documenttype[0].datatype[1].sstruct.field[1].detailedtype "" documenttype[0].datatype[1].sstruct.field[2].name "rankfeatures" documenttype[0].datatype[1].sstruct.field[2].id 1883197392 documenttype[0].datatype[1].sstruct.field[2].id_v6 699950698 documenttype[0].datatype[1].sstruct.field[2].datatype 2 -documenttype[0].datatype[1].sstruct.field[2].detailedtype "" documenttype[0].datatype[1].sstruct.field[3].name "summaryfeatures" documenttype[0].datatype[1].sstruct.field[3].id 1840337115 documenttype[0].datatype[1].sstruct.field[3].id_v6 1981648971 documenttype[0].datatype[1].sstruct.field[3].datatype 2 -documenttype[0].datatype[1].sstruct.field[3].detailedtype "" documenttype[0].datatype[2].id -389494616 documenttype[0].datatype[2].type STRUCT documenttype[0].datatype[2].array.element.id 0 @@ -102,7 +97,6 @@ documenttype[1].datatype[0].sstruct.field[0].name "child_field" documenttype[1].datatype[0].sstruct.field[0].id 1814271363 documenttype[1].datatype[0].sstruct.field[0].id_v6 405182398 documenttype[1].datatype[0].sstruct.field[0].datatype 1091188812 -documenttype[1].datatype[0].sstruct.field[0].detailedtype "" documenttype[1].datatype[1].id -126593034 documenttype[1].datatype[1].type STRUCT documenttype[1].datatype[1].array.element.id 0 diff --git a/config-model/src/test/derived/mail/onlydoc/documentmanager.cfg b/config-model/src/test/derived/mail/onlydoc/documentmanager.cfg index 0a70b48fe21..0e95d51bdd8 100644 --- a/config-model/src/test/derived/mail/onlydoc/documentmanager.cfg +++ b/config-model/src/test/derived/mail/onlydoc/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -88808602 datatype[1].structtype[0].name "mail.header" datatype[1].structtype[0].version 0 @@ -21,31 +19,22 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "URI" datatype[1].structtype[0].field[0].datatype 10 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "mailid" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "date" datatype[1].structtype[0].field[2].datatype 0 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "from" datatype[1].structtype[0].field[3].datatype 2 -datatype[1].structtype[0].field[3].detailedtype "" datatype[1].structtype[0].field[4].name "replyto" datatype[1].structtype[0].field[4].datatype 2 -datatype[1].structtype[0].field[4].detailedtype "" datatype[1].structtype[0].field[5].name "to" datatype[1].structtype[0].field[5].datatype 2 -datatype[1].structtype[0].field[5].detailedtype "" datatype[1].structtype[0].field[6].name "cc" datatype[1].structtype[0].field[6].datatype 2 -datatype[1].structtype[0].field[6].detailedtype "" datatype[1].structtype[0].field[7].name "bcc" datatype[1].structtype[0].field[7].datatype 2 -datatype[1].structtype[0].field[7].detailedtype "" datatype[1].structtype[0].field[8].name "subject" datatype[1].structtype[0].field[8].datatype 2 -datatype[1].structtype[0].field[8].detailedtype "" datatype[2].id -1244861287 datatype[2].arraytype[0].datatype 3 datatype[3].id -953584901 @@ -57,25 +46,18 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "body" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "attachmentcount" datatype[3].structtype[0].field[1].datatype 0 -datatype[3].structtype[0].field[1].detailedtype "" datatype[3].structtype[0].field[2].name "attachmentnames" datatype[3].structtype[0].field[2].datatype 2 -datatype[3].structtype[0].field[2].detailedtype "" datatype[3].structtype[0].field[3].name "attachmenttypes" datatype[3].structtype[0].field[3].datatype 2 -datatype[3].structtype[0].field[3].detailedtype "" datatype[3].structtype[0].field[4].name "attachmentlanguages" datatype[3].structtype[0].field[4].datatype 2 -datatype[3].structtype[0].field[4].detailedtype "" datatype[3].structtype[0].field[5].name "attachmentcontent" datatype[3].structtype[0].field[5].datatype 2 -datatype[3].structtype[0].field[5].detailedtype "" datatype[3].structtype[0].field[6].name "attachments" datatype[3].structtype[0].field[6].datatype -1244861287 -datatype[3].structtype[0].field[6].detailedtype "" datatype[4].id -1081574983 datatype[4].documenttype[0].name "mail" datatype[4].documenttype[0].version 0 diff --git a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg index 41e39ac52df..1b51178e6d8 100644 --- a/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg +++ b/config-model/src/test/derived/prefixexactattribute/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -739138930 datatype[1].structtype[0].name "prefixexactattribute.header" datatype[1].structtype[0].version 0 @@ -21,25 +19,18 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "indexfield0" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "attributefield1" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "attributefield2" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "indexfield1" datatype[1].structtype[0].field[3].datatype 2 -datatype[1].structtype[0].field[3].detailedtype "" datatype[1].structtype[0].field[4].name "indexfield2" datatype[1].structtype[0].field[4].datatype 2 -datatype[1].structtype[0].field[4].detailedtype "" datatype[1].structtype[0].field[5].name "rankfeatures" datatype[1].structtype[0].field[5].datatype 2 -datatype[1].structtype[0].field[5].detailedtype "" datatype[1].structtype[0].field[6].name "summaryfeatures" datatype[1].structtype[0].field[6].datatype 2 -datatype[1].structtype[0].field[6].detailedtype "" datatype[2].id -480519133 datatype[2].structtype[0].name "prefixexactattribute.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/ranktypes/documentmanager.cfg b/config-model/src/test/derived/ranktypes/documentmanager.cfg index 50be09891e5..c57a58c244c 100644 --- a/config-model/src/test/derived/ranktypes/documentmanager.cfg +++ b/config-model/src/test/derived/ranktypes/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -471393776 datatype[1].structtype[0].name "ranktypes.header" datatype[1].structtype[0].version 0 @@ -21,25 +19,18 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "title" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "descr" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "keywords" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "identity" datatype[1].structtype[0].field[3].datatype 2 -datatype[1].structtype[0].field[3].detailedtype "" datatype[1].structtype[0].field[4].name "identity_literal" datatype[1].structtype[0].field[4].datatype 2 -datatype[1].structtype[0].field[4].detailedtype "" datatype[1].structtype[0].field[5].name "rankfeatures" datatype[1].structtype[0].field[5].datatype 2 -datatype[1].structtype[0].field[5].detailedtype "" datatype[1].structtype[0].field[6].name "summaryfeatures" datatype[1].structtype[0].field[6].datatype 2 -datatype[1].structtype[0].field[6].detailedtype "" datatype[2].id 1374506021 datatype[2].structtype[0].name "ranktypes.body" datatype[2].structtype[0].version 0 diff --git a/config-model/src/test/derived/streamingstruct/documentmanager.cfg b/config-model/src/test/derived/streamingstruct/documentmanager.cfg index 42826c5be33..306f1102fb1 100644 --- a/config-model/src/test/derived/streamingstruct/documentmanager.cfg +++ b/config-model/src/test/derived/streamingstruct/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 105061838 datatype[1].structtype[0].name "ns1" datatype[1].structtype[0].version 0 @@ -21,13 +19,10 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "nf1" datatype[1].structtype[0].field[0].datatype 3474528 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "nf1s" datatype[1].structtype[0].field[1].datatype 3474528 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "nf2" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[2].id 3474528 datatype[2].structtype[0].name "s1" datatype[2].structtype[0].version 0 @@ -37,16 +32,12 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "f1" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "f1s" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "f2" datatype[2].structtype[0].field[2].datatype 0 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "f3" datatype[2].structtype[0].field[3].datatype 5 -datatype[2].structtype[0].field[3].detailedtype "" datatype[3].id -1497802371 datatype[3].maptype[0].keytype 4 datatype[3].maptype[0].valtype 2 @@ -61,70 +52,48 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "coupleof" datatype[5].structtype[0].field[0].datatype 2 -datatype[5].structtype[0].field[0].detailedtype "" datatype[5].structtype[0].field[1].name "normalfields" datatype[5].structtype[0].field[1].datatype 2 -datatype[5].structtype[0].field[1].detailedtype "" datatype[5].structtype[0].field[2].name "a" datatype[5].structtype[0].field[2].datatype 3474528 -datatype[5].structtype[0].field[2].detailedtype "" datatype[5].structtype[0].field[3].name "m" datatype[5].structtype[0].field[3].datatype -1497802371 -datatype[5].structtype[0].field[3].detailedtype "" datatype[5].structtype[0].field[4].name "b" datatype[5].structtype[0].field[4].datatype 3474528 -datatype[5].structtype[0].field[4].detailedtype "" datatype[5].structtype[0].field[5].name "c" datatype[5].structtype[0].field[5].datatype 3474528 -datatype[5].structtype[0].field[5].detailedtype "" datatype[5].structtype[0].field[6].name "c2" datatype[5].structtype[0].field[6].datatype 3474528 -datatype[5].structtype[0].field[6].detailedtype "" datatype[5].structtype[0].field[7].name "c3" datatype[5].structtype[0].field[7].datatype 3474528 -datatype[5].structtype[0].field[7].detailedtype "" datatype[5].structtype[0].field[8].name "n" datatype[5].structtype[0].field[8].datatype 105061838 -datatype[5].structtype[0].field[8].detailedtype "" datatype[5].structtype[0].field[9].name "array1" datatype[5].structtype[0].field[9].datatype -1425630723 -datatype[5].structtype[0].field[9].detailedtype "" datatype[5].structtype[0].field[10].name "array2" datatype[5].structtype[0].field[10].datatype -1425630723 -datatype[5].structtype[0].field[10].detailedtype "" datatype[5].structtype[0].field[11].name "array3" datatype[5].structtype[0].field[11].datatype -1425630723 -datatype[5].structtype[0].field[11].detailedtype "" datatype[5].structtype[0].field[12].name "subject" datatype[5].structtype[0].field[12].datatype 3474528 -datatype[5].structtype[0].field[12].detailedtype "" datatype[5].structtype[0].field[13].name "d" datatype[5].structtype[0].field[13].datatype 3474528 -datatype[5].structtype[0].field[13].detailedtype "" datatype[5].structtype[0].field[14].name "e" datatype[5].structtype[0].field[14].datatype 3474528 -datatype[5].structtype[0].field[14].detailedtype "" datatype[5].structtype[0].field[15].name "f" datatype[5].structtype[0].field[15].datatype 3474528 -datatype[5].structtype[0].field[15].detailedtype "" datatype[5].structtype[0].field[16].name "g" datatype[5].structtype[0].field[16].datatype 2 -datatype[5].structtype[0].field[16].detailedtype "" datatype[5].structtype[0].field[17].name "anothersummaryfield" datatype[5].structtype[0].field[17].datatype 2 -datatype[5].structtype[0].field[17].detailedtype "" datatype[5].structtype[0].field[18].name "rankfeatures" datatype[5].structtype[0].field[18].datatype 2 -datatype[5].structtype[0].field[18].detailedtype "" datatype[5].structtype[0].field[19].name "summaryfeatures" datatype[5].structtype[0].field[19].datatype 2 -datatype[5].structtype[0].field[19].detailedtype "" datatype[5].structtype[0].field[20].name "snippet" datatype[5].structtype[0].field[20].datatype 2 -datatype[5].structtype[0].field[20].detailedtype "" datatype[5].structtype[0].field[21].name "snippet2" datatype[5].structtype[0].field[21].datatype 2 -datatype[5].structtype[0].field[21].detailedtype "" datatype[6].id 1858438651 datatype[6].structtype[0].name "streamingstruct.body" datatype[6].structtype[0].version 0 diff --git a/config-model/src/test/derived/streamingstruct/onlydoc/documentmanager.cfg b/config-model/src/test/derived/streamingstruct/onlydoc/documentmanager.cfg index d379d862626..fc9b0e315b8 100644 --- a/config-model/src/test/derived/streamingstruct/onlydoc/documentmanager.cfg +++ b/config-model/src/test/derived/streamingstruct/onlydoc/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 105061838 datatype[1].structtype[0].name "ns1" datatype[1].structtype[0].version 0 @@ -21,13 +19,10 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "nf1" datatype[1].structtype[0].field[0].datatype 3474528 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "nf1s" datatype[1].structtype[0].field[1].datatype 3474528 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "nf2" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[2].id 3474528 datatype[2].structtype[0].name "s1" datatype[2].structtype[0].version 0 @@ -37,16 +32,12 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "f1" datatype[2].structtype[0].field[0].datatype 2 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "f1s" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "f2" datatype[2].structtype[0].field[2].datatype 0 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "f3" datatype[2].structtype[0].field[3].datatype 5 -datatype[2].structtype[0].field[3].detailedtype "" datatype[3].id -1497802371 datatype[3].maptype[0].keytype 4 datatype[3].maptype[0].valtype 2 @@ -61,55 +52,38 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "coupleof" datatype[5].structtype[0].field[0].datatype 2 -datatype[5].structtype[0].field[0].detailedtype "" datatype[5].structtype[0].field[1].name "normalfields" datatype[5].structtype[0].field[1].datatype 2 -datatype[5].structtype[0].field[1].detailedtype "" datatype[5].structtype[0].field[2].name "a" datatype[5].structtype[0].field[2].datatype 3474528 -datatype[5].structtype[0].field[2].detailedtype "" datatype[5].structtype[0].field[3].name "m" datatype[5].structtype[0].field[3].datatype -1497802371 -datatype[5].structtype[0].field[3].detailedtype "" datatype[5].structtype[0].field[4].name "b" datatype[5].structtype[0].field[4].datatype 3474528 -datatype[5].structtype[0].field[4].detailedtype "" datatype[5].structtype[0].field[5].name "c" datatype[5].structtype[0].field[5].datatype 3474528 -datatype[5].structtype[0].field[5].detailedtype "" datatype[5].structtype[0].field[6].name "c2" datatype[5].structtype[0].field[6].datatype 3474528 -datatype[5].structtype[0].field[6].detailedtype "" datatype[5].structtype[0].field[7].name "c3" datatype[5].structtype[0].field[7].datatype 3474528 -datatype[5].structtype[0].field[7].detailedtype "" datatype[5].structtype[0].field[8].name "n" datatype[5].structtype[0].field[8].datatype 105061838 -datatype[5].structtype[0].field[8].detailedtype "" datatype[5].structtype[0].field[9].name "array1" datatype[5].structtype[0].field[9].datatype -1425630723 -datatype[5].structtype[0].field[9].detailedtype "" datatype[5].structtype[0].field[10].name "array2" datatype[5].structtype[0].field[10].datatype -1425630723 -datatype[5].structtype[0].field[10].detailedtype "" datatype[5].structtype[0].field[11].name "array3" datatype[5].structtype[0].field[11].datatype -1425630723 -datatype[5].structtype[0].field[11].detailedtype "" datatype[5].structtype[0].field[12].name "subject" datatype[5].structtype[0].field[12].datatype 3474528 -datatype[5].structtype[0].field[12].detailedtype "" datatype[5].structtype[0].field[13].name "d" datatype[5].structtype[0].field[13].datatype 3474528 -datatype[5].structtype[0].field[13].detailedtype "" datatype[5].structtype[0].field[14].name "e" datatype[5].structtype[0].field[14].datatype 3474528 -datatype[5].structtype[0].field[14].detailedtype "" datatype[5].structtype[0].field[15].name "f" datatype[5].structtype[0].field[15].datatype 3474528 -datatype[5].structtype[0].field[15].detailedtype "" datatype[5].structtype[0].field[16].name "g" datatype[5].structtype[0].field[16].datatype 2 -datatype[5].structtype[0].field[16].detailedtype "" datatype[6].id 1858438651 datatype[6].structtype[0].name "streamingstruct.body" datatype[6].structtype[0].version 0 diff --git a/config-model/src/test/derived/structanyorder/documentmanager.cfg b/config-model/src/test/derived/structanyorder/documentmanager.cfg index b4777f7535f..dc56ed1cfc9 100755 --- a/config-model/src/test/derived/structanyorder/documentmanager.cfg +++ b/config-model/src/test/derived/structanyorder/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 109267174 datatype[1].structtype[0].name "sct" datatype[1].structtype[0].version 0 @@ -21,16 +19,12 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "s1" datatype[1].structtype[0].field[0].datatype 2 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "s2" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "s3" datatype[1].structtype[0].field[2].datatype 109267174 -datatype[1].structtype[0].field[2].detailedtype "" datatype[1].structtype[0].field[3].name "s4" datatype[1].structtype[0].field[3].datatype 97614088 -datatype[1].structtype[0].field[3].detailedtype "" datatype[2].id 97614088 datatype[2].structtype[0].name "foo" datatype[2].structtype[0].version 0 @@ -40,7 +34,6 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "s1" datatype[2].structtype[0].field[0].datatype 0 -datatype[2].structtype[0].field[0].detailedtype "" datatype[3].id 517946310 datatype[3].structtype[0].name "annotation.banana" datatype[3].structtype[0].version 0 @@ -50,10 +43,8 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "b" datatype[3].structtype[0].field[0].datatype 109267174 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "c" datatype[3].structtype[0].field[1].datatype 97614088 -datatype[3].structtype[0].field[1].detailedtype "" datatype[4].id -1244829667 datatype[4].arraytype[0].datatype 109267174 datatype[5].id -364910881 @@ -65,16 +56,12 @@ datatype[5].structtype[0].compressthreshold 95 datatype[5].structtype[0].compressminsize 800 datatype[5].structtype[0].field[0].name "structfield" datatype[5].structtype[0].field[0].datatype 109267174 -datatype[5].structtype[0].field[0].detailedtype "" datatype[5].structtype[0].field[1].name "structarrayfield" datatype[5].structtype[0].field[1].datatype -1244829667 -datatype[5].structtype[0].field[1].detailedtype "" datatype[5].structtype[0].field[2].name "rankfeatures" datatype[5].structtype[0].field[2].datatype 2 -datatype[5].structtype[0].field[2].detailedtype "" datatype[5].structtype[0].field[3].name "summaryfeatures" datatype[5].structtype[0].field[3].datatype 2 -datatype[5].structtype[0].field[3].detailedtype "" datatype[6].id -1503592268 datatype[6].structtype[0].name "annotationsimplicitstruct.body" datatype[6].structtype[0].version 0 diff --git a/config-model/src/test/derived/tensor/attributes.cfg b/config-model/src/test/derived/tensor/attributes.cfg index 8819e28b354..a3026d579d5 100644 --- a/config-model/src/test/derived/tensor/attributes.cfg +++ b/config-model/src/test/derived/tensor/attributes.cfg @@ -16,7 +16,7 @@ attribute[0].arity 8 attribute[0].lowerbound -9223372036854775808 attribute[0].upperbound 9223372036854775807 attribute[0].densepostinglistthreshold 0.4 -attribute[0].tensortype "tensor(x[2],y[])" +attribute[0].tensortype "" attribute[1].name "f3" attribute[1].datatype TENSOR attribute[1].collectiontype SINGLE @@ -35,7 +35,7 @@ attribute[1].arity 8 attribute[1].lowerbound -9223372036854775808 attribute[1].upperbound 9223372036854775807 attribute[1].densepostinglistthreshold 0.4 -attribute[1].tensortype "tensor(x{})" +attribute[1].tensortype "" attribute[2].name "f4" attribute[2].datatype TENSOR attribute[2].collectiontype SINGLE diff --git a/config-model/src/test/derived/tensor/documenttypes.cfg b/config-model/src/test/derived/tensor/documenttypes.cfg index 7c39af767f4..2a76458a97a 100644 --- a/config-model/src/test/derived/tensor/documenttypes.cfg +++ b/config-model/src/test/derived/tensor/documenttypes.cfg @@ -24,32 +24,26 @@ documenttype[0].datatype[0].sstruct.field[0].name "f1" documenttype[0].datatype[0].sstruct.field[0].id 26661415 documenttype[0].datatype[0].sstruct.field[0].id_v6 1740179945 documenttype[0].datatype[0].sstruct.field[0].datatype 21 -documenttype[0].datatype[0].sstruct.field[2].detailedtype "tensor(x[])" documenttype[0].datatype[0].sstruct.field[1].name "f2" documenttype[0].datatype[0].sstruct.field[1].id 2080644671 documenttype[0].datatype[0].sstruct.field[1].id_v6 1424572148 documenttype[0].datatype[0].sstruct.field[1].datatype 21 -documenttype[0].datatype[0].sstruct.field[2].detailedtype "tensor(x[2],y[])" documenttype[0].datatype[0].sstruct.field[2].name "f3" documenttype[0].datatype[0].sstruct.field[2].id 1295091863 documenttype[0].datatype[0].sstruct.field[2].id_v6 1444109654 documenttype[0].datatype[0].sstruct.field[2].datatype 21 -documenttype[0].datatype[0].sstruct.field[2].detailedtype "tensor(x{})" documenttype[0].datatype[0].sstruct.field[3].name "f4" documenttype[0].datatype[0].sstruct.field[3].id 1224191509 documenttype[0].datatype[0].sstruct.field[3].id_v6 1039544782 documenttype[0].datatype[0].sstruct.field[3].datatype 21 -documenttype[0].datatype[0].sstruct.field[3].detailedtype "tensor(x[],y[])" documenttype[0].datatype[0].sstruct.field[4].name "rankfeatures" documenttype[0].datatype[0].sstruct.field[4].id 1883197392 documenttype[0].datatype[0].sstruct.field[4].id_v6 699950698 documenttype[0].datatype[0].sstruct.field[4].datatype 2 -documenttype[0].datatype[0].sstruct.field[4].detailedtype "" documenttype[0].datatype[0].sstruct.field[5].name "summaryfeatures" documenttype[0].datatype[0].sstruct.field[5].id 1840337115 documenttype[0].datatype[0].sstruct.field[5].id_v6 1981648971 documenttype[0].datatype[0].sstruct.field[5].datatype 2 -documenttype[0].datatype[0].sstruct.field[5].detailedtype "" documenttype[0].datatype[1].id -1903234535 documenttype[0].datatype[1].type STRUCT documenttype[0].datatype[1].array.element.id 0 diff --git a/config-model/src/test/derived/tensor/rank-profiles.cfg b/config-model/src/test/derived/tensor/rank-profiles.cfg index d9c6c5088c2..d70555c9131 100644 --- a/config-model/src/test/derived/tensor/rank-profiles.cfg +++ b/config-model/src/test/derived/tensor/rank-profiles.cfg @@ -1,8 +1,4 @@ rankprofile[].name "default" -rankprofile[].fef.property[].name "vespa.type.attribute.f2" -rankprofile[].fef.property[].value "tensor(x[2],y[])" -rankprofile[].fef.property[].name "vespa.type.attribute.f3" -rankprofile[].fef.property[].value "tensor(x{})" rankprofile[].fef.property[].name "vespa.type.attribute.f4" rankprofile[].fef.property[].value "tensor(x[10],y[20])" rankprofile[].name "unranked" @@ -14,10 +10,6 @@ rankprofile[].fef.property[].name "vespa.hitcollector.arraysize" rankprofile[].fef.property[].value "0" rankprofile[].fef.property[].name "vespa.dump.ignoredefaultfeatures" rankprofile[].fef.property[].value "true" -rankprofile[].fef.property[].name "vespa.type.attribute.f2" -rankprofile[].fef.property[].value "tensor(x[2],y[])" -rankprofile[].fef.property[].name "vespa.type.attribute.f3" -rankprofile[].fef.property[].value "tensor(x{})" rankprofile[].fef.property[].name "vespa.type.attribute.f4" rankprofile[].fef.property[].value "tensor(x[10],y[20])" rankprofile[].name "profile1" @@ -25,10 +17,6 @@ rankprofile[].fef.property[].name "vespa.rank.firstphase" rankprofile[].fef.property[].value "rankingExpression(firstphase)" rankprofile[].fef.property[].name "rankingExpression(firstphase).rankingScript" rankprofile[].fef.property[].value "map(attribute(f4), f(x)(x * x)) + reduce(tensor(x[2],y[3])(random), count) * rename(attribute(f4), (x, y), (y, x))" -rankprofile[].fef.property[].name "vespa.type.attribute.f2" -rankprofile[].fef.property[].value "tensor(x[2],y[])" -rankprofile[].fef.property[].name "vespa.type.attribute.f3" -rankprofile[].fef.property[].value "tensor(x{})" rankprofile[].fef.property[].name "vespa.type.attribute.f4" rankprofile[].fef.property[].value "tensor(x[10],y[20])" rankprofile[].name "profile2" @@ -36,9 +24,5 @@ rankprofile[].fef.property[].name "vespa.rank.firstphase" rankprofile[].fef.property[].value "rankingExpression(firstphase)" rankprofile[].fef.property[].name "rankingExpression(firstphase).rankingScript" rankprofile[].fef.property[].value "reduce(join(attribute(f4), tensor(x[2],y[2],z[3])((x==y)*(y==z)), f(a,b)(a * b)), sum, x)" -rankprofile[].fef.property[].name "vespa.type.attribute.f2" -rankprofile[].fef.property[].value "tensor(x[2],y[])" -rankprofile[].fef.property[].name "vespa.type.attribute.f3" -rankprofile[].fef.property[].value "tensor(x{})" rankprofile[].fef.property[].name "vespa.type.attribute.f4" -rankprofile[].fef.property[].value "tensor(x[10],y[20])"
\ No newline at end of file +rankprofile[].fef.property[].value "tensor(x[10],y[20])" diff --git a/config-model/src/test/derived/tensor/tensor.sd b/config-model/src/test/derived/tensor/tensor.sd index 18f1245e0b4..fab4cafddab 100644 --- a/config-model/src/test/derived/tensor/tensor.sd +++ b/config-model/src/test/derived/tensor/tensor.sd @@ -2,16 +2,16 @@ search tensor { document tensor { - field f1 type tensor(x[]) { + field f1 type tensor { indexing: summary } - field f2 type tensor(x[2],y[]) { + field f2 type tensor { indexing: attribute } - field f3 type tensor(x{}) { + field f3 type tensor { indexing: attribute | summary } - field f4 type tensor(x[],y[]) { + field f4 type tensor { indexing: attribute attribute: tensor(x[10],y[20]) } diff --git a/config-model/src/test/derived/types/attributes.cfg b/config-model/src/test/derived/types/attributes.cfg index d5679a25ed5..f20562d2a3c 100644 --- a/config-model/src/test/derived/types/attributes.cfg +++ b/config-model/src/test/derived/types/attributes.cfg @@ -206,4 +206,4 @@ attribute[10].arity 8 attribute[10].lowerbound -9223372036854775808 attribute[10].upperbound 9223372036854775807 attribute[10].densepostinglistthreshold 0.4 -attribute[10].tensortype ""
\ No newline at end of file +attribute[10].tensortype "" diff --git a/config-model/src/test/derived/types/documentmanager.cfg b/config-model/src/test/derived/types/documentmanager.cfg index ca9a300ad9c..a2018ffa195 100644 --- a/config-model/src/test/derived/types/documentmanager.cfg +++ b/config-model/src/test/derived/types/documentmanager.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1865479609 datatype[1].maptype[0].keytype 2 datatype[1].maptype[0].valtype 4 @@ -24,16 +22,12 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "Version" datatype[2].structtype[0].field[0].datatype 0 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "Name" datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[2].structtype[0].field[2].name "FlagsCounter" datatype[2].structtype[0].field[2].datatype -1865479609 -datatype[2].structtype[0].field[2].detailedtype "" datatype[2].structtype[0].field[3].name "anotherfolder" datatype[2].structtype[0].field[3].datatype 294108848 -datatype[2].structtype[0].field[3].detailedtype "" datatype[3].id 109267174 datatype[3].structtype[0].name "sct" datatype[3].structtype[0].version 0 @@ -43,10 +37,8 @@ datatype[3].structtype[0].compressthreshold 95 datatype[3].structtype[0].compressminsize 800 datatype[3].structtype[0].field[0].name "s1" datatype[3].structtype[0].field[0].datatype 2 -datatype[3].structtype[0].field[0].detailedtype "" datatype[3].structtype[0].field[1].name "s2" datatype[3].structtype[0].field[1].datatype 2 -datatype[3].structtype[0].field[1].detailedtype "" datatype[4].id 49942803 datatype[4].arraytype[0].datatype 16 datatype[5].id 339965458 @@ -61,16 +53,12 @@ datatype[6].structtype[0].compressthreshold 95 datatype[6].structtype[0].compressminsize 800 datatype[6].structtype[0].field[0].name "bytearr" datatype[6].structtype[0].field[0].datatype 49942803 -datatype[6].structtype[0].field[0].detailedtype "" datatype[6].structtype[0].field[1].name "mymap" datatype[6].structtype[0].field[1].datatype 339965458 -datatype[6].structtype[0].field[1].detailedtype "" datatype[6].structtype[0].field[2].name "title" datatype[6].structtype[0].field[2].datatype 2 -datatype[6].structtype[0].field[2].detailedtype "" datatype[6].structtype[0].field[3].name "structfield" datatype[6].structtype[0].field[3].datatype 2 -datatype[6].structtype[0].field[3].detailedtype "" datatype[7].id -1245117006 datatype[7].arraytype[0].datatype 0 datatype[8].id 1328286588 @@ -127,88 +115,60 @@ datatype[24].structtype[0].compressthreshold 95 datatype[24].structtype[0].compressminsize 800 datatype[24].structtype[0].field[0].name "abyte" datatype[24].structtype[0].field[0].datatype 16 -datatype[24].structtype[0].field[0].detailedtype "" datatype[24].structtype[0].field[1].name "along" datatype[24].structtype[0].field[1].datatype 4 -datatype[24].structtype[0].field[1].detailedtype "" datatype[24].structtype[0].field[2].name "arrayfield" datatype[24].structtype[0].field[2].datatype -1245117006 -datatype[24].structtype[0].field[2].detailedtype "" datatype[24].structtype[0].field[3].name "setfield" datatype[24].structtype[0].field[3].datatype 1328286588 -datatype[24].structtype[0].field[3].detailedtype "" datatype[24].structtype[0].field[4].name "setfield2" datatype[24].structtype[0].field[4].datatype 18 -datatype[24].structtype[0].field[4].detailedtype "" datatype[24].structtype[0].field[5].name "setfield3" datatype[24].structtype[0].field[5].datatype 2125328771 -datatype[24].structtype[0].field[5].detailedtype "" datatype[24].structtype[0].field[6].name "setfield4" datatype[24].structtype[0].field[6].datatype 2065577986 -datatype[24].structtype[0].field[6].detailedtype "" datatype[24].structtype[0].field[7].name "tagfield" datatype[24].structtype[0].field[7].datatype 18 -datatype[24].structtype[0].field[7].detailedtype "" datatype[24].structtype[0].field[8].name "structfield" datatype[24].structtype[0].field[8].datatype 109267174 -datatype[24].structtype[0].field[8].detailedtype "" datatype[24].structtype[0].field[9].name "structarrayfield" datatype[24].structtype[0].field[9].datatype -1244829667 -datatype[24].structtype[0].field[9].detailedtype "" datatype[24].structtype[0].field[10].name "stringmapfield" datatype[24].structtype[0].field[10].datatype 339965458 -datatype[24].structtype[0].field[10].detailedtype "" datatype[24].structtype[0].field[11].name "intmapfield" datatype[24].structtype[0].field[11].datatype -1584287606 -datatype[24].structtype[0].field[11].detailedtype "" datatype[24].structtype[0].field[12].name "floatmapfield" datatype[24].structtype[0].field[12].datatype 2125154557 -datatype[24].structtype[0].field[12].detailedtype "" datatype[24].structtype[0].field[13].name "longmapfield" datatype[24].structtype[0].field[13].datatype -1715531035 -datatype[24].structtype[0].field[13].detailedtype "" datatype[24].structtype[0].field[14].name "doublemapfield" datatype[24].structtype[0].field[14].datatype 2138385264 -datatype[24].structtype[0].field[14].detailedtype "" datatype[24].structtype[0].field[15].name "arraymapfield" datatype[24].structtype[0].field[15].datatype 435886609 -datatype[24].structtype[0].field[15].detailedtype "" datatype[24].structtype[0].field[16].name "arrarr" datatype[24].structtype[0].field[16].datatype -794985308 -datatype[24].structtype[0].field[16].detailedtype "" datatype[24].structtype[0].field[17].name "maparr" datatype[24].structtype[0].field[17].datatype 69621385 -datatype[24].structtype[0].field[17].detailedtype "" datatype[24].structtype[0].field[18].name "mystructfield" datatype[24].structtype[0].field[18].datatype -2092985853 -datatype[24].structtype[0].field[18].detailedtype "" datatype[24].structtype[0].field[19].name "mystructmap" datatype[24].structtype[0].field[19].datatype 1901258752 -datatype[24].structtype[0].field[19].detailedtype "" datatype[24].structtype[0].field[20].name "mystructarr" datatype[24].structtype[0].field[20].datatype 759956026 -datatype[24].structtype[0].field[20].detailedtype "" datatype[24].structtype[0].field[21].name "Folders" datatype[24].structtype[0].field[21].datatype -389833101 -datatype[24].structtype[0].field[21].detailedtype "" datatype[24].structtype[0].field[22].name "juletre" datatype[24].structtype[0].field[22].datatype 4 -datatype[24].structtype[0].field[22].detailedtype "" datatype[24].structtype[0].field[23].name "album0" datatype[24].structtype[0].field[23].datatype 18 -datatype[24].structtype[0].field[23].detailedtype "" datatype[24].structtype[0].field[24].name "album1" datatype[24].structtype[0].field[24].datatype 18 -datatype[24].structtype[0].field[24].detailedtype "" datatype[24].structtype[0].field[25].name "other" datatype[24].structtype[0].field[25].datatype 4 -datatype[24].structtype[0].field[25].detailedtype "" datatype[24].structtype[0].field[26].name "rankfeatures" datatype[24].structtype[0].field[26].datatype 2 -datatype[24].structtype[0].field[26].detailedtype "" datatype[24].structtype[0].field[27].name "summaryfeatures" datatype[24].structtype[0].field[27].datatype 2 -datatype[24].structtype[0].field[27].detailedtype "" datatype[25].id 171503364 datatype[25].maptype[0].keytype 1707615575 datatype[25].maptype[0].valtype 0 @@ -223,7 +183,6 @@ datatype[27].structtype[0].compressthreshold 95 datatype[27].structtype[0].compressminsize 800 datatype[27].structtype[0].field[0].name "complexarray" datatype[27].structtype[0].field[0].datatype 1100964733 -datatype[27].structtype[0].field[0].detailedtype "" datatype[28].id -853072901 datatype[28].documenttype[0].name "types" datatype[28].documenttype[0].version 0 diff --git a/config-model/src/test/derived/types/ilscripts.cfg b/config-model/src/test/derived/types/ilscripts.cfg index 70b799d0df0..cc692e120be 100644 --- a/config-model/src/test/derived/types/ilscripts.cfg +++ b/config-model/src/test/derived/types/ilscripts.cfg @@ -52,4 +52,4 @@ ilscript[0].content[22] "input mystructfield | passthrough mystructfield" ilscript[0].content[23] "input mystructmap | passthrough mystructmap" ilscript[0].content[24] "input stringmapfield | passthrough stringmapfield" ilscript[0].content[25] "input structarrayfield | passthrough structarrayfield" -ilscript[0].content[26] "input structfield | passthrough structfield"
\ No newline at end of file +ilscript[0].content[26] "input structfield | passthrough structfield" diff --git a/config-model/src/test/derived/types/index-info.cfg b/config-model/src/test/derived/types/index-info.cfg index 85d4c884571..4b94127c687 100644 --- a/config-model/src/test/derived/types/index-info.cfg +++ b/config-model/src/test/derived/types/index-info.cfg @@ -424,4 +424,4 @@ indexinfo[0].command[210].command "multivalue" indexinfo[0].command[211].indexname "rankfeatures" indexinfo[0].command[211].command "index" indexinfo[0].command[212].indexname "summaryfeatures" -indexinfo[0].command[212].command "index"
\ No newline at end of file +indexinfo[0].command[212].command "index" diff --git a/config-model/src/test/derived/types/summary.cfg b/config-model/src/test/derived/types/summary.cfg index b1205f45709..6a62dedb851 100644 --- a/config-model/src/test/derived/types/summary.cfg +++ b/config-model/src/test/derived/types/summary.cfg @@ -32,4 +32,4 @@ classes[1].fields[3].type "int64" classes[1].fields[4].name "rankfeatures" classes[1].fields[4].type "featuredata" classes[1].fields[5].name "summaryfeatures" -classes[1].fields[5].type "featuredata"
\ No newline at end of file +classes[1].fields[5].type "featuredata" diff --git a/config-model/src/test/derived/types/summarymap.cfg b/config-model/src/test/derived/types/summarymap.cfg index 8a3ed769213..eac532d966b 100644 --- a/config-model/src/test/derived/types/summarymap.cfg +++ b/config-model/src/test/derived/types/summarymap.cfg @@ -22,4 +22,4 @@ override[6].command "attribute" override[6].arguments "other" override[7].field "juletre" override[7].command "attribute" -override[7].arguments "juletre"
\ No newline at end of file +override[7].arguments "juletre" diff --git a/config-model/src/test/examples/fieldoftypedocument.cfg b/config-model/src/test/examples/fieldoftypedocument.cfg index d3dd0d06b66..9ce928381ec 100644 --- a/config-model/src/test/examples/fieldoftypedocument.cfg +++ b/config-model/src/test/examples/fieldoftypedocument.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id -1344444812 datatype[1].structtype[0].name "book.header" datatype[1].structtype[0].version 0 @@ -21,13 +19,10 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "soundtrack" datatype[1].structtype[0].field[0].datatype 1412693671 -datatype[1].structtype[0].field[0].detailedtype "" datatype[1].structtype[0].field[1].name "rankfeatures" datatype[1].structtype[0].field[1].datatype 2 -datatype[1].structtype[0].field[1].detailedtype "" datatype[1].structtype[0].field[2].name "summaryfeatures" datatype[1].structtype[0].field[2].datatype 2 -datatype[1].structtype[0].field[2].detailedtype "" datatype[2].id -820813431 datatype[2].structtype[0].name "book.body" datatype[2].structtype[0].version 0 @@ -52,19 +47,14 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "intfield" datatype[4].structtype[0].field[0].datatype 0 -datatype[4].structtype[0].field[0].detailedtype "" datatype[4].structtype[0].field[1].name "stringfield" datatype[4].structtype[0].field[1].datatype 2 -datatype[4].structtype[0].field[1].detailedtype "" datatype[4].structtype[0].field[2].name "longfield" datatype[4].structtype[0].field[2].datatype 4 -datatype[4].structtype[0].field[2].detailedtype "" datatype[4].structtype[0].field[3].name "rankfeatures" datatype[4].structtype[0].field[3].datatype 2 -datatype[4].structtype[0].field[3].detailedtype "" datatype[4].structtype[0].field[4].name "summaryfeatures" datatype[4].structtype[0].field[4].datatype 2 -datatype[4].structtype[0].field[4].detailedtype "" datatype[5].id 993120973 datatype[5].structtype[0].name "music.body" datatype[5].structtype[0].version 0 diff --git a/config-model/src/test/examples/structresult.cfg b/config-model/src/test/examples/structresult.cfg index 075ac54b983..addb5f6205c 100755 --- a/config-model/src/test/examples/structresult.cfg +++ b/config-model/src/test/examples/structresult.cfg @@ -8,10 +8,8 @@ datatype[0].structtype[0].compressthreshold 95 datatype[0].structtype[0].compressminsize 800 datatype[0].structtype[0].field[0].name "x" datatype[0].structtype[0].field[0].datatype 0 -datatype[0].structtype[0].field[0].detailedtype "" datatype[0].structtype[0].field[1].name "y" datatype[0].structtype[0].field[1].datatype 0 -datatype[0].structtype[0].field[1].detailedtype "" datatype[1].id 93505813 datatype[1].structtype[0].name "bar" datatype[1].structtype[0].version 0 @@ -21,7 +19,6 @@ datatype[1].structtype[0].compressthreshold 95 datatype[1].structtype[0].compressminsize 800 datatype[1].structtype[0].field[0].name "humbe" datatype[1].structtype[0].field[0].datatype 97614088 -datatype[1].structtype[0].field[0].detailedtype "" datatype[2].id 97614088 datatype[2].structtype[0].name "foo" datatype[2].structtype[0].version 0 @@ -31,11 +28,9 @@ datatype[2].structtype[0].compressthreshold 95 datatype[2].structtype[0].compressminsize 800 datatype[2].structtype[0].field[0].name "fubar" datatype[2].structtype[0].field[0].datatype 0 -datatype[2].structtype[0].field[0].detailedtype "" datatype[2].structtype[0].field[1].name "bar" datatype[2].structtype[0].field[1].id[0].id 1 datatype[2].structtype[0].field[1].datatype 2 -datatype[2].structtype[0].field[1].detailedtype "" datatype[3].id -1245205573 datatype[3].arraytype[0].datatype 97614088 datatype[4].id -1910204744 @@ -47,19 +42,14 @@ datatype[4].structtype[0].compressthreshold 95 datatype[4].structtype[0].compressminsize 800 datatype[4].structtype[0].field[0].name "mystruct" datatype[4].structtype[0].field[0].datatype 97614088 -datatype[4].structtype[0].field[0].detailedtype "" datatype[4].structtype[0].field[1].name "arraystruct" datatype[4].structtype[0].field[1].datatype -1245205573 -datatype[4].structtype[0].field[1].detailedtype "" datatype[4].structtype[0].field[2].name "advanced" datatype[4].structtype[0].field[2].datatype 93505813 -datatype[4].structtype[0].field[2].detailedtype "" datatype[4].structtype[0].field[3].name "rankfeatures" datatype[4].structtype[0].field[3].datatype 2 -datatype[4].structtype[0].field[3].detailedtype "" datatype[4].structtype[0].field[4].name "summaryfeatures" datatype[4].structtype[0].field[4].datatype 2 -datatype[4].structtype[0].field[4].detailedtype "" datatype[5].id 993120973 datatype[5].structtype[0].name "music.body" datatype[5].structtype[0].version 0 diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java index 83d5c422fdf..4a3119e55b7 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/FieldOfTypeDocumentTestCase.java @@ -14,10 +14,9 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class FieldOfTypeDocumentTestCase extends SearchDefinitionTestCase { - @Test public void testDocument() throws IOException, ParseException { @@ -26,7 +25,7 @@ public class FieldOfTypeDocumentTestCase extends SearchDefinitionTestCase { sds.add("src/test/examples/fieldoftypedocument.sd"); DocumentmanagerConfig.Builder value = Deriver.getDocumentManagerConfig(sds); assertConfigFile("src/test/examples/fieldoftypedocument.cfg", - new DocumentmanagerConfig(value).toString() + "\n"); + new DocumentmanagerConfig(value).toString() + "\n"); DocumentTypeManager manager = new DocumentTypeManager(); DocumentTypeManagerConfigurer.configure(manager, "raw:" + new DocumentmanagerConfig(value).toString()); diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java index 5542c1ce5e9..f8fe979c866 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/NameFieldCheckTestCase.java @@ -6,16 +6,14 @@ import org.junit.Test; import java.io.IOException; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - /** * Tests that "name" is not allowed as name for a field. * * And that duplicate names are not allowed. * - * @author Lars Christian Jensen + * @author <a href="mailto:larschr@yahoo-inc.com">Lars Christian Jensen</a> */ public class NameFieldCheckTestCase extends SearchDefinitionTestCase { @@ -24,8 +22,8 @@ public class NameFieldCheckTestCase extends SearchDefinitionTestCase { try { SearchBuilder.buildFromFile("src/test/examples/name-check.sd"); fail("Should throw exception."); - } catch (Exception expected) { - // Success + } catch (Exception e) { + e.printStackTrace(); } } @@ -35,7 +33,8 @@ public class NameFieldCheckTestCase extends SearchDefinitionTestCase { SearchBuilder.buildFromFile("src/test/examples/duplicatenamesinsearchdifferenttype.sd"); fail("Should throw exception."); } catch (Exception e) { - assertEquals("For search 'duplicatenamesinsearch', field 'grpphotoids64': Incompatible types. Expected Array<long> for index field 'grpphotoids64', got string.", e.getMessage()); + e.printStackTrace(); + assertTrue(e.getMessage().matches(".*Duplicate.*different type.*")); } } @@ -45,6 +44,7 @@ public class NameFieldCheckTestCase extends SearchDefinitionTestCase { SearchBuilder.buildFromFile("src/test/examples/duplicatenamesindoc.sd"); fail("Should throw exception."); } catch (Exception e) { + e.printStackTrace(); assertTrue(e.getMessage().matches(".*Duplicate.*")); } } diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java index b2968eb4a85..ae3b775f13d 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankProfileTestCase.java @@ -102,9 +102,9 @@ public class RankProfileTestCase extends SearchDefinitionTestCase { SearchBuilder builder = new SearchBuilder(registry); builder.importString("search test {\n" + " document test { \n" + - " field a type tensor(x[]) { indexing: attribute \n attribute: tensor(x[10]) }\n" + - " field b type tensor(y{}) { indexing: attribute \n attribute: tensor(y{}) }\n" + - " field c type tensor(x[]) { indexing: attribute }\n" + + " field a type tensor { indexing: attribute \n attribute: tensor(x[10]) }\n" + + " field b type tensor { indexing: attribute \n attribute: tensor(y{}) }\n" + + " field c type tensor { indexing: attribute }\n" + " }\n" + " rank-profile p1 {}\n" + " rank-profile p2 {}\n" + @@ -123,7 +123,7 @@ public class RankProfileTestCase extends SearchDefinitionTestCase { RawRankProfile rawProfile = new RawRankProfile(profile, new AttributeFields(search)); assertEquals("tensor(x[10])", findProperty(rawProfile.configProperties(), "vespa.type.attribute.a").get()); assertEquals("tensor(y{})", findProperty(rawProfile.configProperties(), "vespa.type.attribute.b").get()); - assertEquals("tensor(x[])", findProperty(rawProfile.configProperties(), "vespa.type.attribute.c").get()); + assertFalse(findProperty(rawProfile.configProperties(), "vespa.type.attribute.c").isPresent()); } @Test diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java index 3236be983d8..c33ebc95bd2 100755 --- a/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/StructTestCase.java @@ -10,28 +10,26 @@ import java.io.IOException; import static org.junit.Assert.fail; /** - * Tests importing of document containing array type fields + * tests importing of document containing array type fields * * @author bratseth */ public class StructTestCase extends SearchDefinitionTestCase { - @Test public void testStruct() throws IOException, ParseException { assertConfigFile("src/test/examples/structresult.cfg", - new DocumentmanagerConfig(Deriver.getDocumentManagerConfig("src/test/examples/struct.sd")).toString() + "\n"); + new DocumentmanagerConfig(Deriver.getDocumentManagerConfig("src/test/examples/struct.sd")).toString() + "\n"); } - @Test public void testBadStruct() throws IOException { try { SearchBuilder.buildFromFile("src/test/examples/badstruct.sd"); fail("Should throw exception."); - } catch (ParseException expected) { - // success + } catch (ParseException e) { + //ok! + //e.printStackTrace(); } } - @Test public void testStructAndDocumentWithSameNames() throws IOException, ParseException { try { @@ -43,6 +41,8 @@ public class StructTestCase extends SearchDefinitionTestCase { /** * Declaring a struct before a document will fail, no doc type to add it to. + * @throws IOException + * @throws ParseException */ @Test(expected = IllegalArgumentException.class) public void testStructOutsideDocumentIllegal() throws IOException, ParseException { diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java index 0007019e6b4..ecadf8e1b71 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/TensorFieldTestCase.java @@ -19,28 +19,28 @@ public class TensorFieldTestCase { public void requireThatTensorFieldCannotBeOfCollectionType() throws ParseException { exception.expect(IllegalArgumentException.class); exception.expectMessage("For search 'test', field 'f1': A field with collection type of tensor is not supported. Use simple type 'tensor' instead."); - SearchBuilder.createFromString(getSd("field f1 type array<tensor(x{})> {}")); + SearchBuilder.createFromString(getSd("field f1 type array<tensor> {}")); } @Test public void requireThatTensorFieldCannotBeIndexField() throws ParseException { exception.expect(IllegalArgumentException.class); exception.expectMessage("For search 'test', field 'f1': A field of type 'tensor' cannot be specified as an 'index' field."); - SearchBuilder.createFromString(getSd("field f1 type tensor(x{}) { indexing: index }")); + SearchBuilder.createFromString(getSd("field f1 type tensor { indexing: index }")); } @Test public void requireThatTensorAttributeCannotBeFastSearch() throws ParseException { exception.expect(IllegalArgumentException.class); exception.expectMessage("For search 'test', field 'f1': An attribute of type 'tensor' cannot be 'fast-search'."); - SearchBuilder.createFromString(getSd("field f1 type tensor(x{}) { indexing: attribute \n attribute: fast-search }")); + SearchBuilder.createFromString(getSd("field f1 type tensor { indexing: attribute \n attribute: fast-search }")); } @Test public void requireThatIllegalTensorTypeSpecThrowsException() throws ParseException { exception.expect(IllegalArgumentException.class); exception.expectMessage("For attribute field 'f1': Illegal tensor type spec: Failed parsing element 'invalid' in type spec 'tensor(invalid)'"); - SearchBuilder.createFromString(getSd("field f1 type tensor(x{}) { indexing: attribute \n attribute: tensor(invalid) }")); + SearchBuilder.createFromString(getSd("field f1 type tensor { indexing: attribute \n attribute: tensor(invalid) }")); } private static String getSd(String field) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java index a8b4065ef38..8c1a288c46d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SearchDataTypeValidatorTestCase.java @@ -8,7 +8,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; /** - * @author Simon Thoresen + * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> */ public class SearchDataTypeValidatorTestCase { @@ -37,5 +37,4 @@ public class SearchDataTypeValidatorTestCase { "'simple' for cluster 'content').", e.getMessage()); } } - } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java index e43827d7693..b3ef8c6d7f2 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java @@ -9,7 +9,6 @@ import java.util.List; import static com.yahoo.vespa.model.application.validation.change.ConfigChangeTestUtils.newRefeedAction; import static com.yahoo.vespa.model.application.validation.change.ConfigChangeTestUtils.newRestartAction; -import static org.junit.Assert.assertEquals; public class AttributeChangeValidatorTest { @@ -111,8 +110,8 @@ public class AttributeChangeValidatorTest { @Test public void requireThatChangingTensorTypeOfTensorFieldRequiresRefeed() throws Exception { new Fixture( - "field f1 type tensor(x[]) { indexing: attribute \n attribute: tensor(x[100]) }", - "field f1 type tensor(y[]) { indexing: attribute \n attribute: tensor(y[]) }") + "field f1 type tensor { indexing: attribute \n attribute: tensor(x[100]) }", + "field f1 type tensor { indexing: attribute \n attribute: tensor(y[]) }") .assertValidation(newRefeedAction( "tensor-type-change", ValidationOverrides.empty(), @@ -120,24 +119,10 @@ public class AttributeChangeValidatorTest { } @Test - public void requireThatCompatibleTensorTypeChangeIsOk() throws Exception { + public void requireThatNotChangingTensorTypeOfTensorFieldIsOk() throws Exception { new Fixture( - "field f1 type tensor(x[],y[]) { indexing: attribute \n attribute: tensor(x[104], y[52]) }", - "field f1 type tensor(x[200],y[]) { indexing: attribute \n attribute: tensor(x[104], y[52]) }") + "field f1 type tensor { indexing: attribute \n attribute: tensor(x[104], y[52]) }", + "field f1 type tensor { indexing: attribute \n attribute: tensor(x[104], y[52]) }") .assertValidation(); } - - @Test - public void requireIncompatibleTensorTypeChangeIsNotOk() throws Exception { - try { - new Fixture( - "field f1 type tensor(x[],y[]) { indexing: attribute \n attribute: tensor(x[104], y[52]) }", - "field f1 type tensor(x[100],y[]) { indexing: attribute \n attribute: tensor(x[104], y[52]) }") - .assertValidation(); - } - catch (IllegalArgumentException e) { - assertEquals("For search 'test', field 'f1': Incompatible types. Expected tensor(x[100],y[]) for attribute 'f1', got tensor(x[104],y[52]).", e.getMessage()); - } - } - } diff --git a/container-search/src/test/java/com/yahoo/fs4/test/RankFeaturesTestCase.java b/container-search/src/test/java/com/yahoo/fs4/test/RankFeaturesTestCase.java index 5cf9aeda978..8c209438565 100644 --- a/container-search/src/test/java/com/yahoo/fs4/test/RankFeaturesTestCase.java +++ b/container-search/src/test/java/com/yahoo/fs4/test/RankFeaturesTestCase.java @@ -5,7 +5,6 @@ import com.yahoo.io.GrowableByteBuffer; import com.yahoo.search.query.ranking.RankFeatures; import com.yahoo.search.query.ranking.RankProperties; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import com.yahoo.tensor.serialization.TypedBinaryFormat; import com.yahoo.text.Utf8; import org.junit.Test; @@ -31,18 +30,16 @@ public class RankFeaturesTestCase { @Test public void requireThatSingleTensorIsBinaryEncoded() { - TensorType type = new TensorType.Builder().mapped("x").mapped("y").mapped("z").build(); - Tensor tensor = Tensor.from(type, "{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); - assertTensorEncodingAndDecoding(type, "query(my_tensor)", "my_tensor", tensor); - assertTensorEncodingAndDecoding(type, "$my_tensor", "my_tensor", tensor); + Tensor tensor = Tensor.from("{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); + assertTensorEncodingAndDecoding("query(my_tensor)", "my_tensor", tensor); + assertTensorEncodingAndDecoding("$my_tensor", "my_tensor", tensor); } @Test public void requireThatMultipleTensorsAreBinaryEncoded() { - TensorType type = new TensorType.Builder().mapped("x").mapped("y").mapped("z").build(); - Tensor tensor1 = Tensor.from(type, "{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); - Tensor tensor2 = Tensor.from(type, "{ {x:a, y:b, z:c}:5.0 }"); - assertTensorEncodingAndDecoding(type, Arrays.asList( + Tensor tensor1 = Tensor.from("{ {x:a, y:b, z:c}:2.0, {x:a, y:b, z:c2}:3.0 }"); + Tensor tensor2 = Tensor.from("{ {x:a, y:b, z:c}:5.0 }"); + assertTensorEncodingAndDecoding(Arrays.asList( new Entry("query(tensor1)", "tensor1", tensor1), new Entry("$tensor2", "tensor2", tensor2))); } @@ -58,11 +55,11 @@ public class RankFeaturesTestCase { } } - private static void assertTensorEncodingAndDecoding(TensorType type, List<Entry> entries) { + private static void assertTensorEncodingAndDecoding(List<Entry> entries) { RankProperties properties = createRankPropertiesWithTensors(entries); assertEquals(entries.size(), properties.asMap().size()); - Map<String, Object> decodedProperties = decode(type, encode(properties)); + Map<String, Object> decodedProperties = decode(encode(properties)); assertEquals(entries.size() * 2, properties.asMap().size()); // tensor type info has been added assertEquals(entries.size() * 2, decodedProperties.size()); for (Entry entry : entries) { @@ -71,8 +68,8 @@ public class RankFeaturesTestCase { } } - private static void assertTensorEncodingAndDecoding(TensorType type, String key, String normalizedKey, Tensor tensor) { - assertTensorEncodingAndDecoding(type, Arrays.asList(new Entry(key, normalizedKey, tensor))); + private static void assertTensorEncodingAndDecoding(String key, String normalizedKey, Tensor tensor) { + assertTensorEncodingAndDecoding(Arrays.asList(new Entry(key, normalizedKey, tensor))); } private static RankProperties createRankPropertiesWithTensors(List<Entry> entries) { @@ -94,7 +91,7 @@ public class RankFeaturesTestCase { return result; } - private static Map<String, Object> decode(TensorType type, byte[] encodedProperties) { + private static Map<String, Object> decode(byte[] encodedProperties) { GrowableByteBuffer buffer = GrowableByteBuffer.wrap(encodedProperties); byte[] mapNameBytes = new byte[buffer.getInt()]; buffer.get(mapNameBytes); @@ -109,7 +106,7 @@ public class RankFeaturesTestCase { if (key.contains(".type")) { result.put(key, Utf8.toString(value)); } else { - result.put(key, TypedBinaryFormat.decode(type, value)); + result.put(key, TypedBinaryFormat.decode(null, value)); // TODO: Pass type } } return result; diff --git a/document/src/main/java/com/yahoo/document/ArrayDataType.java b/document/src/main/java/com/yahoo/document/ArrayDataType.java index 4b24bb1ae00..640bd94bd1c 100644 --- a/document/src/main/java/com/yahoo/document/ArrayDataType.java +++ b/document/src/main/java/com/yahoo/document/ArrayDataType.java @@ -8,10 +8,9 @@ import java.util.ArrayList; import java.util.List; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class ArrayDataType extends CollectionDataType { - // The global class identifier shared with C++. public static int classId = registerClass(Ids.document + 54, ArrayDataType.class); diff --git a/document/src/main/java/com/yahoo/document/DataType.java b/document/src/main/java/com/yahoo/document/DataType.java index 184340f295e..51af799efd9 100644 --- a/document/src/main/java/com/yahoo/document/DataType.java +++ b/document/src/main/java/com/yahoo/document/DataType.java @@ -14,7 +14,6 @@ import com.yahoo.document.datatypes.Raw; import com.yahoo.document.datatypes.StringFieldValue; import com.yahoo.document.datatypes.TensorFieldValue; import com.yahoo.document.datatypes.UriFieldValue; -import com.yahoo.tensor.TensorType; import com.yahoo.vespa.objects.Identifiable; import com.yahoo.vespa.objects.Ids; import com.yahoo.vespa.objects.ObjectVisitor; @@ -47,30 +46,40 @@ public abstract class DataType extends Identifiable implements Serializable, Com public final static PrimitiveDataType RAW = new PrimitiveDataType("raw", 3, Raw.class, Raw.getFactory()); public final static NumericDataType LONG = new NumericDataType("long", 4, LongFieldValue.class, LongFieldValue.getFactory()); public final static NumericDataType DOUBLE = new NumericDataType("double", 5, DoubleFieldValue.class, DoubleFieldValue.getFactory()); + // ARRAY is type 6, but never used, array IDs are generated + // public final static PrimitiveDataType FIELDMAP = new PrimitiveDataType("FieldMap", 7, FieldMap.class); public final static DocumentType DOCUMENT = new DocumentType("document"); + // Not used anymore : public final static NumericDataType TIMESTAMP = new NumericDataType("Timestamp", 9, LongFieldValue.class); public final static PrimitiveDataType URI = new PrimitiveDataType("uri", 10, UriFieldValue.class, new UriFieldValue.Factory()); + // Not used anymore : public final static PrimitiveDataType EXACTSTRING = new PrimitiveDataType("ExactString", 11, StringFieldValue.class); + // Not used anymore: public final static PrimitiveDataType CONTENT = new PrimitiveDataType("content", 12, Content.class, new Content.Factory()); public final static NumericDataType BYTE = new NumericDataType("byte", 16, ByteFieldValue.class, ByteFieldValue.getFactory()); - public final static PrimitiveDataType PREDICATE = new PrimitiveDataType("predicate", 20, PredicateFieldValue.class, PredicateFieldValue.getFactory()); - public final static int tensorDataTypeCode = 21; // All TensorDataType instances have id=21 but carries additional type information serialized separately - // ADDITIONAL parametrized types added at runtime: map, struct, array, weighted set, annotation reference, tensor - - // Tags are converted to weightedset<string> when reading the search definition TODO: Remove it + // WEIGHTEDSET is type 17, but never used, weighted set IDs are generated + // Tags are converted to weightedset<string> when reading the search definition public final static WeightedSetDataType TAG = new WeightedSetDataType(DataType.STRING, true, true); + // Not yet, just reserve id 19. public final static NumericDataType SHORT = new NumericDataType("Int", 19, ShortFieldValue.class); + // Guess I'll say STRUCT is 19 though, although I never intend to use it for anything as it has to be autogenerated now.. + // Let's say that AnnotationReference is 20, but those types will be generated from AnnotationReferenceDataType + public final static PrimitiveDataType PREDICATE = new PrimitiveDataType("predicate", 20, PredicateFieldValue.class, PredicateFieldValue.getFactory()); + public final static PrimitiveDataType TENSOR = new PrimitiveDataType("tensor", 21, TensorFieldValue.class, TensorFieldValue.getFactory()); public static int lastPredefinedDataTypeId() { return 21; } - /** Set to true when this type is registered in a type manager. From that time we should refuse changes. */ + /** + * Set to true when this type is registered in a type manager. From that time we should refuse changes. + */ private boolean registered = false; private String name; - /** The id of this type */ + /** + * The id of this type + */ private int dataTypeId; static final private CopyOnWriteHashMap<Pair, Constructor> constructorCache = new CopyOnWriteHashMap<>(); - /** * Creates a datatype * @@ -87,21 +96,26 @@ public abstract class DataType extends Identifiable implements Serializable, Com return (DataType)super.clone(); } - void setRegistered() { + public void setRegistered() { registered = true; } + public boolean isRegistered() { return registered; } - /** Creates a new, empty FieldValue of this type */ + /** + * Creates a new, empty FieldValue of this type. + * + * @return a new, empty FieldValue of this type. + */ public abstract FieldValue createFieldValue(); /** - * Creates a field value by reflection - * - * @param arg the value of the newly created field value - * @return a fully constructed value + * This will try to create the object by reflection. This can be very expensive + * so some might discourage that. + * @param arg The constructor argument. + * @return Fully constructed value. */ protected FieldValue createByReflection(Object arg) { Class<?> valClass = getValueClass(); @@ -127,8 +141,8 @@ public abstract class DataType extends Identifiable implements Serializable, Com /** * Creates a new FieldValue of this type, with the given value. * - * @param arg the value of the new FieldValue - * @return a new FieldValue of this type, with the given value + * @param arg the value that the new FieldValue shall have. + * @return A new FieldValue of this type, with the given value. */ public FieldValue createFieldValue(Object arg) { if (arg == null) { @@ -197,17 +211,12 @@ public abstract class DataType extends Identifiable implements Serializable, Com return new WeightedSetDataType(type, createIfNonExistent, removeIfZero); } - /** Returns the given tensor type as a DataType */ - public static TensorDataType getTensor(TensorType type) { - return new TensorDataType(type); - } - public String getName() { return name; } /** - * Sets the name of this data type. WARNING! Do not use! + * Sets the name of this data type. WARNING! Do not use! * * @param name the name of this data type. */ @@ -220,7 +229,7 @@ public abstract class DataType extends Identifiable implements Serializable, Com } /** - * Sets the ID of this data type. WARNING! Do not use! + * Sets the ID of this data type. WARNING! Do not use! * * @param id the ID of this data type. */ @@ -229,7 +238,7 @@ public abstract class DataType extends Identifiable implements Serializable, Com } /** - * Registers this type in the given document manager. + * Registeres this type in the given document manager. * * @param manager the DocumentTypeManager to register in. */ @@ -246,12 +255,14 @@ public abstract class DataType extends Identifiable implements Serializable, Com } public boolean equals(Object other) { - if (!(other instanceof DataType)) return false; + if (!(other instanceof DataType)) { + return false; + } DataType type = (DataType)other; return (name.equals(type.name) && dataTypeId == type.dataTypeId); } - public String toString() { + public java.lang.String toString() { return "datatype " + name + " (code: " + dataTypeId + ")"; } @@ -267,8 +278,8 @@ public abstract class DataType extends Identifiable implements Serializable, Com */ public FieldPath buildFieldPath(String fieldPathString) { if (fieldPathString.length() > 0) { - throw new IllegalArgumentException("Datatype " + toString() + - " does not support further recursive structure: " + fieldPathString); + throw new IllegalArgumentException( + "Datatype " + toString() + " does not support further recursive structure: " + fieldPathString); } return new FieldPath(); } diff --git a/document/src/main/java/com/yahoo/document/Document.java b/document/src/main/java/com/yahoo/document/Document.java index e1d912b4e51..34c952e1cec 100644 --- a/document/src/main/java/com/yahoo/document/Document.java +++ b/document/src/main/java/com/yahoo/document/Document.java @@ -26,7 +26,7 @@ import java.util.Map; * be removed soon. * * @author bratseth - * @author Einar M R Rosenvinge + * @author <a href="einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class Document extends StructuredFieldValue { @@ -267,9 +267,7 @@ public class Document extends StructuredFieldValue { } /** Returns true if the argument is a document which has the same set of values */ - @Override public boolean equals(Object o) { - if (o == this) return true; if (!(o instanceof Document)) return false; Document other = (Document) o; return (super.equals(o) && docId.equals(other.docId) && @@ -396,5 +394,4 @@ public class Document extends StructuredFieldValue { comp = body.compareTo(otherValue.body); return comp; } - } diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManager.java b/document/src/main/java/com/yahoo/document/DocumentTypeManager.java index 1b3370cfa66..0de7fe60500 100644 --- a/document/src/main/java/com/yahoo/document/DocumentTypeManager.java +++ b/document/src/main/java/com/yahoo/document/DocumentTypeManager.java @@ -12,7 +12,6 @@ import com.yahoo.document.serialization.DocumentDeserializer; import com.yahoo.document.serialization.DocumentDeserializerFactory; import com.yahoo.document.serialization.VespaDocumentDeserializer42; import com.yahoo.io.GrowableByteBuffer; -import com.yahoo.tensor.TensorType; import java.lang.reflect.Modifier; import java.util.*; @@ -29,23 +28,13 @@ import java.util.logging.Logger; * datatypes, for instance displaying the data type in human-readable form * or as XML. * - * @author Thomas Gundersen + * @author <a href="mailto:thomasg@yahoo-inc.com">Thomas Gundersen</a> */ public class DocumentTypeManager { private final static Logger log = Logger.getLogger(DocumentTypeManager.class.getName()); private ConfigSubscriber subscriber; - // *Configured data types* (not built-in/primitive) indexed by their id - // - // *Primitive* data types are always available and have a single id. - // - // *Built-in dynamic* types: The tensor type. - // Any tensor type has the same id and is always available just like primitive types. - // However, unlike primitive types, each tensor type is a separate DataType instance - // (which carries additional type information (detailedType) supplied at runtime). - // The reason for this is that we want the data type to stay the same when we change the detailed tensor type - // to maintain compatibility on (some) tensor type changes. private Map<Integer, DataType> dataTypes = new LinkedHashMap<>(); private Map<DataTypeName, DocumentType> documentTypes = new LinkedHashMap<>(); private AnnotationTypeRegistry annotationTypeRegistry = new AnnotationTypeRegistry(); @@ -96,7 +85,6 @@ public class DocumentTypeManager { } public boolean hasDataType(String name) { - if (name.startsWith("tensor(")) return true; // built-in dynamic: Always present for (DataType type : dataTypes.values()) { if (type.getName().equalsIgnoreCase(name)) { return true; @@ -106,14 +94,10 @@ public class DocumentTypeManager { } public boolean hasDataType(int code) { - if (code == DataType.tensorDataTypeCode) return true; // built-in dynamic: Always present return dataTypes.containsKey(code); } public DataType getDataType(String name) { - if (name.startsWith("tensor(")) // built-in dynamic - return new TensorDataType(TensorType.fromSpec(name)); - List<DataType> foundTypes = new ArrayList<>(); for (DataType type : dataTypes.values()) { if (type.getName().equalsIgnoreCase(name)) { @@ -141,19 +125,7 @@ public class DocumentTypeManager { return foundTypes.get(0); } - public DataType getDataType(int code) { return getDataType(code, ""); } - - /** - * Return a data type instance - * - * @param code the code of the data type to return, which must be either built in or present in this manager - * @param detailedType detailed type information, or the empty string if none - * @return the appropriate DataType instance - */ - public DataType getDataType(int code, String detailedType) { - if (code == DataType.tensorDataTypeCode) // built-in dynamic - return new TensorDataType(TensorType.fromSpec(detailedType)); - + public DataType getDataType(int code) { DataType type = dataTypes.get(code); if (type == null) { StringBuilder types=new StringBuilder(); @@ -166,11 +138,11 @@ public class DocumentTypeManager { } } - DataType getDataTypeAndReturnTemporary(int code, String detailedType) { + DataType getDataTypeAndReturnTemporary(int code) { if (hasDataType(code)) { - return getDataType(code, detailedType); + return getDataType(code); } - return new TemporaryDataType(code, detailedType); + return new TemporaryDataType(code); } /** @@ -184,11 +156,9 @@ public class DocumentTypeManager { /** * Register a single datatype. Re-registering an existing, but equal, datatype is ok. - * * @param type The datatype to register */ void registerSingleType(DataType type) { - if (type instanceof TensorDataType) return; // built-in dynamic: Created on the fly if (dataTypes.containsKey(type.getId())) { DataType existingType = dataTypes.get(type.getId()); if (((type instanceof TemporaryDataType) || (type instanceof TemporaryStructuredDataType)) @@ -218,7 +188,7 @@ public class DocumentTypeManager { dataTypes.remove(existingType.getId()); } else { throw new IllegalStateException("Datatype " + existingType + " is not equal to datatype attempted registered " - + type + ", but already uses id " + type.getId()); + + type + ", but already uses id " + type.getId()); } } @@ -280,8 +250,7 @@ public class DocumentTypeManager { } /** - * Returns a read only view of the registered data types - * + * A read only view of the registered data types * @return collection of types */ public Collection<DataType> getDataTypes() { @@ -349,7 +318,7 @@ public class DocumentTypeManager { for (Field field : structDataType.getFieldsThisTypeOnly()) { DataType fieldType = field.getDataType(); if (fieldType instanceof TemporaryDataType) { - field.setDataType(getDataType(fieldType.getCode(), ((TemporaryDataType)fieldType).getDetailedType())); + field.setDataType(getDataType(fieldType.getCode())); } else { if (!seenStructs.contains(fieldType)) { replaceTemporaryTypes(fieldType, seenStructs); @@ -360,7 +329,7 @@ public class DocumentTypeManager { private void replaceTemporaryTypesInCollection(CollectionDataType collectionDataType, List<DataType> seenStructs) { if (collectionDataType.getNestedType() instanceof TemporaryDataType) { - collectionDataType.setNestedType(getDataType(collectionDataType.getNestedType().getCode(), "")); + collectionDataType.setNestedType(getDataType(collectionDataType.getNestedType().getCode())); } else { replaceTemporaryTypes(collectionDataType.getNestedType(), seenStructs); } @@ -368,13 +337,13 @@ public class DocumentTypeManager { private void replaceTemporaryTypesInMap(MapDataType mapDataType, List<DataType> seenStructs) { if (mapDataType.getValueType() instanceof TemporaryDataType) { - mapDataType.setValueType(getDataType(mapDataType.getValueType().getCode(), "")); + mapDataType.setValueType(getDataType(mapDataType.getValueType().getCode())); } else { replaceTemporaryTypes(mapDataType.getValueType(), seenStructs); } if (mapDataType.getKeyType() instanceof TemporaryDataType) { - mapDataType.setKeyType(getDataType(mapDataType.getKeyType().getCode(), "")); + mapDataType.setKeyType(getDataType(mapDataType.getKeyType().getCode())); } else { replaceTemporaryTypes(mapDataType.getKeyType(), seenStructs); } @@ -382,7 +351,7 @@ public class DocumentTypeManager { private void replaceTemporaryTypesInWeightedSet(WeightedSetDataType weightedSetDataType, List<DataType> seenStructs) { if (weightedSetDataType.getNestedType() instanceof TemporaryDataType) { - weightedSetDataType.setNestedType(getDataType(weightedSetDataType.getNestedType().getCode(), "")); + weightedSetDataType.setNestedType(getDataType(weightedSetDataType.getNestedType().getCode())); } else { replaceTemporaryTypes(weightedSetDataType.getNestedType(), seenStructs); } diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java index 7b5f1392032..9d7139e6226 100644 --- a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java +++ b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java @@ -13,7 +13,7 @@ import java.util.logging.Logger; /** * Configures the Vespa document manager from a config id. * - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSubscriber<DocumentmanagerConfig>{ @@ -82,21 +82,21 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub try { for (Object o : thisDataType.arraytype()) { DocumentmanagerConfig.Datatype.Arraytype array = (DocumentmanagerConfig.Datatype.Arraytype) o; - DataType nestedType = manager.getDataType(array.datatype(), ""); + DataType nestedType = manager.getDataType(array.datatype()); ArrayDataType type = new ArrayDataType(nestedType, id); manager.register(type); } for (Object o : thisDataType.maptype()) { DocumentmanagerConfig.Datatype.Maptype map = (DocumentmanagerConfig.Datatype.Maptype) o; - DataType keyType = manager.getDataType(map.keytype(), ""); - DataType valType = manager.getDataType(map.valtype(), ""); + DataType keyType = manager.getDataType(map.keytype()); + DataType valType = manager.getDataType(map.valtype()); MapDataType type = new MapDataType(keyType, valType, id); manager.register(type); } for (Object o : thisDataType.weightedsettype()) { DocumentmanagerConfig.Datatype.Weightedsettype wset = (DocumentmanagerConfig.Datatype.Weightedsettype) o; - DataType nestedType = manager.getDataType(wset.datatype(), ""); + DataType nestedType = manager.getDataType(wset.datatype()); WeightedSetDataType type = new WeightedSetDataType( nestedType, wset.createifnonexistant(), wset.removeifzero(), id); manager.register(type); @@ -114,8 +114,8 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub DocumentmanagerConfig.Datatype.Structtype.Field field = (DocumentmanagerConfig.Datatype.Structtype.Field) j; DataType fieldType = (field.datatype() == id) - ? manager.getDataTypeAndReturnTemporary(field.datatype(), field.detailedtype()) - : manager.getDataType(field.datatype(), field.detailedtype()); + ? manager.getDataTypeAndReturnTemporary(field.datatype()) + : manager.getDataType(field.datatype()); if (field.id().size() == 1) { type.addField(new Field(field.name(), field.id().get(0).id(), fieldType, true)); @@ -127,8 +127,8 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub } for (Object o : thisDataType.documenttype()) { DocumentmanagerConfig.Datatype.Documenttype doc = (DocumentmanagerConfig.Datatype.Documenttype) o; - StructDataType header = (StructDataType) manager.getDataType(doc.headerstruct(), ""); - StructDataType body = (StructDataType) manager.getDataType(doc.bodystruct(), ""); + StructDataType header = (StructDataType) manager.getDataType(doc.headerstruct()); + StructDataType body = (StructDataType) manager.getDataType(doc.bodystruct()); for (Field field : body.getFields()) { field.setHeader(false); } @@ -210,7 +210,7 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub private static void addAnnotationTypePayloads(DocumentmanagerConfig config, DocumentTypeManager manager) { for (DocumentmanagerConfig.Annotationtype annType : config.annotationtype()) { AnnotationType annotationType = manager.getAnnotationTypeRegistry().getType(annType.id()); - DataType payload = manager.getDataType(annType.datatype(), ""); + DataType payload = manager.getDataType(annType.datatype()); if (!payload.equals(DataType.NONE)) { annotationType.setDataType(payload); } @@ -234,7 +234,7 @@ public class DocumentTypeManagerConfigurer implements ConfigSubscriber.SingleSub int id = thisDataType.id(); for (Object o : thisDataType.structtype()) { DocumentmanagerConfig.Datatype.Structtype struct = (DocumentmanagerConfig.Datatype.Structtype) o; - StructDataType thisStruct = (StructDataType) manager.getDataType(id, ""); + StructDataType thisStruct = (StructDataType) manager.getDataType(id); for (DocumentmanagerConfig.Datatype.Structtype.Inherits parent : struct.inherits()) { StructDataType parentStruct = (StructDataType) manager.getDataType(parent.name()); diff --git a/document/src/main/java/com/yahoo/document/Field.java b/document/src/main/java/com/yahoo/document/Field.java index b80d92e0e4d..86543916b42 100644 --- a/document/src/main/java/com/yahoo/document/Field.java +++ b/document/src/main/java/com/yahoo/document/Field.java @@ -13,7 +13,7 @@ import java.io.Serializable; * A name and type. Fields are contained in document types to describe their fields, * but is also used to represent name/type pairs which are not part of document types. * - * @author Thomas Gundersen + * @author <a href="mailto:thomasg@yahoo-inc.com">Thomas Gundersen</a> * @author bratseth */ public class Field extends FieldBase implements FieldSet, Comparable, Serializable { diff --git a/document/src/main/java/com/yahoo/document/PrimitiveDataType.java b/document/src/main/java/com/yahoo/document/PrimitiveDataType.java index 23bf4b43ccf..a0024bb0497 100644 --- a/document/src/main/java/com/yahoo/document/PrimitiveDataType.java +++ b/document/src/main/java/com/yahoo/document/PrimitiveDataType.java @@ -8,10 +8,9 @@ import com.yahoo.vespa.objects.ObjectVisitor; import java.util.Objects; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public class PrimitiveDataType extends DataType { - public static abstract class Factory { public abstract FieldValue create(); } diff --git a/document/src/main/java/com/yahoo/document/TemporaryDataType.java b/document/src/main/java/com/yahoo/document/TemporaryDataType.java index a0c6fcb889d..da65dde72da 100644 --- a/document/src/main/java/com/yahoo/document/TemporaryDataType.java +++ b/document/src/main/java/com/yahoo/document/TemporaryDataType.java @@ -4,15 +4,11 @@ package com.yahoo.document; import com.yahoo.document.datatypes.FieldValue; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ class TemporaryDataType extends DataType { - - private final String detailedType; - - TemporaryDataType(int dataTypeId, String detailedType) { + TemporaryDataType(int dataTypeId) { super("temporary_" + dataTypeId, dataTypeId); - this.detailedType = detailedType; } @Override @@ -29,7 +25,4 @@ class TemporaryDataType extends DataType { public boolean isValueCompatible(FieldValue value) { return false; } - - String getDetailedType() { return detailedType; } - } diff --git a/document/src/main/java/com/yahoo/document/TensorDataType.java b/document/src/main/java/com/yahoo/document/TensorDataType.java deleted file mode 100644 index dbaf6ee7763..00000000000 --- a/document/src/main/java/com/yahoo/document/TensorDataType.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.yahoo.document; - -import com.yahoo.document.datatypes.FieldValue; -import com.yahoo.document.datatypes.TensorFieldValue; -import com.yahoo.tensor.TensorType; -import com.yahoo.vespa.objects.Ids; - -/** - * A DataType containing a tensor type - * - * @author bratseth - */ -public class TensorDataType extends DataType { - - private final TensorType tensorType; - - // The global class identifier shared with C++. - public static int classId = registerClass(Ids.document + 59, TensorDataType.class); - - public TensorDataType(TensorType tensorType) { - super(tensorType.toString(), DataType.tensorDataTypeCode); - this.tensorType = tensorType; - } - - public TensorDataType clone() { - return (TensorDataType)super.clone(); - } - - @Override - public FieldValue createFieldValue() { - return new TensorFieldValue(tensorType); - } - - @Override - public Class<? extends TensorFieldValue> getValueClass() { - return TensorFieldValue.class; - } - - @Override - public boolean isValueCompatible(FieldValue value) { - if (value == null) return false; - if ( ! TensorFieldValue.class.isAssignableFrom(value.getClass())) return false; - TensorFieldValue tensorValue = (TensorFieldValue)value; - return tensorValue.getDataType().getTensorType().isAssignableTo(tensorType); - } - - /** Returns the type of the tensor this field can hold */ - public TensorType getTensorType() { return tensorType; } - -} diff --git a/document/src/main/java/com/yahoo/document/datatypes/Array.java b/document/src/main/java/com/yahoo/document/datatypes/Array.java index 09fb8b71db1..66cc472de69 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/Array.java +++ b/document/src/main/java/com/yahoo/document/datatypes/Array.java @@ -16,7 +16,7 @@ import java.util.*; /** * FieldValue which encapsulates a Array value * - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> */ public final class Array<T extends FieldValue> extends CollectionFieldValue<T> implements List<T> { diff --git a/document/src/main/java/com/yahoo/document/datatypes/Struct.java b/document/src/main/java/com/yahoo/document/datatypes/Struct.java index b5920cb4758..5a01dc33aa1 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/Struct.java +++ b/document/src/main/java/com/yahoo/document/datatypes/Struct.java @@ -215,6 +215,7 @@ public class Struct extends StructuredFieldValue { if (!super.equals(o)) return false; Struct struct = (Struct) o; + return values.equals(struct.values); } @@ -387,5 +388,4 @@ public class Struct extends StructuredFieldValue { } return fieldType.cast(fieldValue); } - } diff --git a/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java index 7957d9b812f..b4585a2188d 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/StructuredFieldValue.java @@ -10,7 +10,7 @@ import java.util.List; import java.util.Map; /** - * @author HÃ¥kon Humberset + * @author <a href="mailto:humbe@yahoo-inc.com">Håkon Humberset</a> */ public abstract class StructuredFieldValue extends CompositeFieldValue { diff --git a/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java index 9d8e9a83b5e..bee29478219 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/TensorFieldValue.java @@ -3,12 +3,11 @@ package com.yahoo.document.datatypes; import com.yahoo.document.DataType; import com.yahoo.document.Field; -import com.yahoo.document.TensorDataType; +import com.yahoo.document.PrimitiveDataType; import com.yahoo.document.serialization.FieldReader; import com.yahoo.document.serialization.FieldWriter; import com.yahoo.document.serialization.XmlStream; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import java.util.Objects; import java.util.Optional; @@ -21,18 +20,12 @@ import java.util.Optional; public class TensorFieldValue extends FieldValue { private Optional<Tensor> tensor; - - private final TensorDataType dataType; - /** Create an empty tensor field value */ - public TensorFieldValue(TensorType type) { - this.dataType = new TensorDataType(type); - this.tensor = Optional.empty(); + public TensorFieldValue() { + tensor = Optional.empty(); } - /** Create a tensor field value containing the given tensor */ public TensorFieldValue(Tensor tensor) { - this.dataType = new TensorDataType(tensor.type()); this.tensor = Optional.of(tensor); } @@ -41,8 +34,8 @@ public class TensorFieldValue extends FieldValue { } @Override - public TensorDataType getDataType() { - return dataType; + public DataType getDataType() { + return DataType.TENSOR; } @Override @@ -58,23 +51,16 @@ public class TensorFieldValue extends FieldValue { @Override public void assign(Object o) { if (o == null) { - assignTensor(Optional.empty()); + tensor = Optional.empty(); } else if (o instanceof Tensor) { - assignTensor(Optional.of((Tensor)o)); + tensor = Optional.of((Tensor)o); } else if (o instanceof TensorFieldValue) { - assignTensor(((TensorFieldValue)o).getTensor()); + tensor = ((TensorFieldValue)o).getTensor(); } else { throw new IllegalArgumentException("Expected class '" + getClass().getName() + "', got '" + - o.getClass().getName() + "'."); + o.getClass().getName() + "'."); } } - - public void assignTensor(Optional<Tensor> tensor) { - if (tensor.isPresent() && ! dataType.getTensorType().isAssignableTo(tensor.get().type())) - throw new IllegalArgumentException("Type mismatch: Cannot assign tensor of type " + tensor.get().type() + - " to field of type " + dataType.getTensorType()); - this.tensor = tensor; - } @Override public void serialize(Field field, FieldWriter writer) { @@ -88,14 +74,27 @@ public class TensorFieldValue extends FieldValue { @Override public boolean equals(Object o) { - if (this == o) return true; - if ( ! (o instanceof TensorFieldValue)) return false; - - TensorFieldValue other = (TensorFieldValue)o; - if ( ! dataType.getTensorType().equals(other.dataType.getTensorType())) return false; - if ( ! tensor.equals(other.tensor)) return false; + if (this == o) { + return true; + } + if (!(o instanceof TensorFieldValue)) { + return false; + } + TensorFieldValue rhs = (TensorFieldValue)o; + if (!Objects.equals(tensor, rhs.tensor)) { + return false; + } return true; } + public static PrimitiveDataType.Factory getFactory() { + return new PrimitiveDataType.Factory() { + + @Override + public FieldValue create() { + return new TensorFieldValue(); + } + }; + } } diff --git a/document/src/main/java/com/yahoo/document/json/JsonReader.java b/document/src/main/java/com/yahoo/document/json/JsonReader.java index e0740338aae..b1c635d7641 100644 --- a/document/src/main/java/com/yahoo/document/json/JsonReader.java +++ b/document/src/main/java/com/yahoo/document/json/JsonReader.java @@ -583,41 +583,71 @@ public class JsonReader { } private void fillTensor(TensorFieldValue tensorFieldValue) { - Tensor.Builder tensorBuilder = Tensor.Builder.of(tensorFieldValue.getDataType().getTensorType()); expectObjectStart(buffer.currentToken()); int initNesting = buffer.nesting(); + Tensor.Builder tensorBuilder = null; // read tensor cell fields and ignore everything else for (buffer.next(); buffer.nesting() >= initNesting; buffer.next()) { if (TENSOR_CELLS.equals(buffer.currentName())) - readTensorCells(tensorBuilder); + tensorBuilder = readTensorCells(tensorBuilder); } expectObjectEnd(buffer.currentToken()); + if (tensorBuilder == null) // no cells + no type: empty tensor type + tensorBuilder = Tensor.Builder.of(TensorType.empty); tensorFieldValue.assign(tensorBuilder.build()); } - private void readTensorCells(Tensor.Builder tensorBuilder) { + private Tensor.Builder readTensorCells(Tensor.Builder tensorBuilder) { expectArrayStart(buffer.currentToken()); int initNesting = buffer.nesting(); - for (buffer.next(); buffer.nesting() >= initNesting; buffer.next()) - readTensorCell(tensorBuilder); + for (buffer.next(); buffer.nesting() >= initNesting; buffer.next()) { + tensorBuilder = readTensorCell(tensorBuilder); + } expectCompositeEnd(buffer.currentToken()); + return tensorBuilder; } - private void readTensorCell(Tensor.Builder tensorBuilder) { + private Tensor.Builder readTensorCell(Tensor.Builder tensorBuilder) { expectObjectStart(buffer.currentToken()); int initNesting = buffer.nesting(); double cellValue = 0.0; - Tensor.Builder.CellBuilder cellBuilder = tensorBuilder.cell(); + Tensor.Builder.CellBuilder cellBuilder = null; for (buffer.next(); buffer.nesting() >= initNesting; buffer.next()) { String currentName = buffer.currentName(); if (TENSOR_ADDRESS.equals(currentName)) { - readTensorAddress(cellBuilder); + if (tensorBuilder != null) { + cellBuilder = tensorBuilder.cell(); + readTensorAddress(cellBuilder); + } + else { // gnarly temporary path to create a type on the fly TODO; Remove when we always have a type + expectObjectStart(buffer.currentToken()); + int initNesting2 = buffer.nesting(); + List<Pair<String,String>> entries = new ArrayList<>(); + for (buffer.next(); buffer.nesting() >= initNesting2; buffer.next()) { + String dimension = buffer.currentName(); + String label = buffer.currentText(); + entries.add(new Pair<>(dimension, label)); + } + TensorType.Builder typeBuilder = new TensorType.Builder(); + for (Pair<String,String> entry : entries) + typeBuilder.mapped(entry.getFirst()); + tensorBuilder = Tensor.Builder.of(typeBuilder.build()); + cellBuilder = tensorBuilder.cell(); + for (Pair<String,String> entry : entries) + cellBuilder.label(entry.getFirst(), entry.getSecond()); + expectObjectEnd(buffer.currentToken()); + } } else if (TENSOR_VALUE.equals(currentName)) { cellValue = Double.valueOf(buffer.currentText()); } } expectObjectEnd(buffer.currentToken()); + if (tensorBuilder == null) { // no content TODO; This will go away with the above + tensorBuilder = Tensor.Builder.of(TensorType.empty); + cellBuilder = tensorBuilder.cell(); + } cellBuilder.value(cellValue); + return tensorBuilder; } private void readTensorAddress(MappedTensor.Builder.CellBuilder cellBuilder) { diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java b/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java index 5f1b227790b..52a62caf296 100644 --- a/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java +++ b/document/src/main/java/com/yahoo/document/serialization/DocumentReader.java @@ -9,7 +9,7 @@ import com.yahoo.document.DocumentTypeManager; /** * This interface is used to implement custom deserialization of document updates. * - * @author Ravi Sharma + * @author <a href="mailto:ravishar@yahoo-inc.com">Ravi Sharma</a> * @author baldersheim */ public interface DocumentReader { diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java index 6e9495b1437..753008de7e0 100644 --- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java +++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializer42.java @@ -115,8 +115,8 @@ public class VespaDocumentDeserializer42 extends VespaDocumentSerializer42 imple // Verify that we have correct version version = getShort(null); if (version < 6 || version > Document.SERIALIZED_VERSION) { - throw new DeserializationException("Unknown version " + version + ", expected " + - Document.SERIALIZED_VERSION + "."); + throw new DeserializationException( + "Unknown version " + version + ", expected " + Document.SERIALIZED_VERSION + "."); } int dataLength = 0; @@ -278,7 +278,7 @@ public class VespaDocumentDeserializer42 extends VespaDocumentSerializer42 imple int encodedTensorLength = buf.getInt1_4Bytes(); if (encodedTensorLength > 0) { byte[] encodedTensor = getBytes(null, encodedTensorLength); - value.assign(TypedBinaryFormat.decode(value.getDataType().getTensorType(), encodedTensor)); + value.assign(TypedBinaryFormat.decode(null, encodedTensor)); // TODO: Pass type } else { value.clear(); } @@ -328,7 +328,7 @@ public class VespaDocumentDeserializer42 extends VespaDocumentSerializer42 imple fieldIdsAndLengths.add(new Tuple2<>(getInt1_4Bytes(null), getInt2_4_8Bytes(null))); } - // save a reference to the big buffer we're reading from: + //save a reference to the big buffer we're reading from: GrowableByteBuffer bigBuf = buf; if (version < 7) { diff --git a/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java b/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java index 02773c7dad0..413d1581e58 100644 --- a/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java +++ b/document/src/test/java/com/yahoo/document/DocumentUpdateTestCase.java @@ -10,7 +10,6 @@ import com.yahoo.document.update.FieldUpdate; import com.yahoo.document.update.ValueUpdate; import com.yahoo.io.GrowableByteBuffer; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import java.io.FileOutputStream; import java.io.IOException; @@ -44,7 +43,6 @@ public class DocumentUpdateTestCase extends junit.framework.TestCase { private final String documentId = "doc:something:foooo"; private final String tensorField = "tensorfield"; - private final TensorType tensorType = new TensorType.Builder().mapped("x").build(); private Document createDocument() { return new Document(docMan.getDocumentType("foobar"), new DocumentId(documentId)); @@ -62,7 +60,7 @@ public class DocumentUpdateTestCase extends junit.framework.TestCase { DataType stringwset = DataType.getWeightedSet(DataType.STRING); docType.addField(new Field("strwset", stringwset)); - docType.addField(new Field(tensorField, new TensorDataType(tensorType))); + docType.addField(new Field(tensorField, DataType.TENSOR)); docMan.register(docType); docType2 = new DocumentType("otherdoctype"); @@ -627,7 +625,7 @@ public class DocumentUpdateTestCase extends junit.framework.TestCase { private DocumentUpdate createTensorAssignUpdate() { DocumentUpdate result = new DocumentUpdate(docType, new DocumentId(documentId)); result.addFieldUpdate(FieldUpdate.createAssign(docType.getField(tensorField), - createTensorFieldValue("{{x:0}:2.0}"))); + createTensorFieldValue("{{x:0}:2.0}"))); return result; } diff --git a/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java b/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java index 6f3abd85521..6f841aac821 100644 --- a/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java +++ b/document/src/test/java/com/yahoo/document/TemporaryDataTypeTestCase.java @@ -9,17 +9,16 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; /** - * @author Einar M R Rosenvinge + * @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a> + * @since 5.1.10 */ public class TemporaryDataTypeTestCase { - @Test public void requireNulls() { - TemporaryDataType type = new TemporaryDataType(0, ""); + TemporaryDataType type = new TemporaryDataType(0); assertThat(type.createFieldValue(new Object()), nullValue()); assertThat(type.createFieldValue(), nullValue()); assertThat(type.getValueClass(), nullValue()); assertThat(type.isValueCompatible(new StringFieldValue("")), is(false)); } - } diff --git a/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java b/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java index c94c917d2ca..80386141968 100644 --- a/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java +++ b/document/src/test/java/com/yahoo/document/datatypes/TensorFieldValueTestCase.java @@ -2,7 +2,6 @@ package com.yahoo.document.datatypes; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import org.junit.Test; import static org.junit.Assert.assertFalse; @@ -14,8 +13,8 @@ import static org.junit.Assert.assertTrue; */ public class TensorFieldValueTestCase { - private static TensorFieldValue createFieldValue(String tensorString) { - return new TensorFieldValue(Tensor.from(tensorString)); + private static TensorFieldValue createFieldValue(String tensor) { + return new TensorFieldValue(Tensor.from(tensor)); } @Test @@ -24,27 +23,20 @@ public class TensorFieldValueTestCase { } @Test - public void requireThatDifferentTensorTypesWithEmptyValuesAreNotEqual() { - TensorFieldValue field1 = new TensorFieldValue(new TensorType.Builder().mapped("x").build()); - TensorFieldValue field2 = new TensorFieldValue(new TensorType.Builder().indexed("y").build()); - assertFalse(field1.equals(field2)); - } - - @Test public void requireThatDifferentTensorValuesAreNotEqual() { - TensorFieldValue field1 = createFieldValue("{{x:0}:2.0}"); - TensorFieldValue field2 = createFieldValue("{{x:0}:3.0}"); - assertFalse(field1.equals(field2)); - assertFalse(field1.equals(new TensorFieldValue(TensorType.empty))); + TensorFieldValue lhs = createFieldValue("{{x:0}:2.0}"); + TensorFieldValue rhs = createFieldValue("{{x:0}:3.0}"); + assertFalse(lhs.equals(rhs)); + assertFalse(lhs.equals(new TensorFieldValue())); } @Test public void requireThatSameTensorValueIsEqual() { Tensor tensor = Tensor.from("{{x:0}:2.0}"); - TensorFieldValue field1 = new TensorFieldValue(tensor); - TensorFieldValue field2 = new TensorFieldValue(tensor); - assertTrue(field1.equals(field1)); - assertTrue(field1.equals(field2)); - assertTrue(field1.equals(createFieldValue("{{x:0}:2.0}"))); + TensorFieldValue lhs = new TensorFieldValue(tensor); + TensorFieldValue rhs = new TensorFieldValue(tensor); + assertTrue(lhs.equals(lhs)); + assertTrue(lhs.equals(rhs)); + assertTrue(lhs.equals(createFieldValue("{{x:0}:2.0}"))); } } diff --git a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java index a0f993fd2fc..ffec7927ab3 100644 --- a/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java +++ b/document/src/test/java/com/yahoo/document/json/DocumentUpdateJsonSerializerTest.java @@ -10,9 +10,7 @@ import com.yahoo.document.DocumentUpdate; import com.yahoo.document.Field; import com.yahoo.document.MapDataType; import com.yahoo.document.PositionDataType; -import com.yahoo.document.TensorDataType; import com.yahoo.document.WeightedSetDataType; -import com.yahoo.tensor.TensorType; import com.yahoo.text.Utf8; import org.junit.Test; @@ -29,7 +27,6 @@ import static com.yahoo.test.json.JsonTestHelper.inputJson; */ public class DocumentUpdateJsonSerializerTest { - final static TensorType tensorType = new TensorType.Builder().mapped("x").mapped("y").build(); final static DocumentTypeManager types = new DocumentTypeManager(); final static JsonFactory parserFactory = new JsonFactory(); final static DocumentType docType = new DocumentType("doctype"); @@ -42,7 +39,7 @@ public class DocumentUpdateJsonSerializerTest { docType.addField(new Field("float_field", DataType.FLOAT)); docType.addField(new Field("double_field", DataType.DOUBLE)); docType.addField(new Field("byte_field", DataType.BYTE)); - docType.addField(new Field("tensor_field", new TensorDataType(tensorType))); + docType.addField(new Field("tensor_field", DataType.TENSOR)); docType.addField(new Field("predicate_field", DataType.PREDICATE)); docType.addField(new Field("raw_field", DataType.RAW)); docType.addField(new Field("int_array", new ArrayDataType(DataType.INT))); diff --git a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java index 34c93580eb3..6c46f743332 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonReaderTestCase.java @@ -19,7 +19,6 @@ import com.yahoo.document.Field; import com.yahoo.document.MapDataType; import com.yahoo.document.PositionDataType; import com.yahoo.document.StructDataType; -import com.yahoo.document.TensorDataType; import com.yahoo.document.WeightedSetDataType; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.FieldValue; @@ -38,10 +37,7 @@ import com.yahoo.document.update.ClearValueUpdate; import com.yahoo.document.update.FieldUpdate; import com.yahoo.document.update.MapValueUpdate; import com.yahoo.document.update.ValueUpdate; -import com.yahoo.tensor.IndexedTensor; -import com.yahoo.tensor.MappedTensor; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import com.yahoo.text.Utf8; import org.apache.commons.codec.binary.Base64; import org.junit.After; @@ -70,12 +66,11 @@ import static org.junit.Assert.*; /** * Basic test of JSON streams to Vespa document instances. * - * @author Steinar Knutsen + * @author <a href="mailto:steinar@yahoo-inc.com">Steinar Knutsen</a> */ public class JsonReaderTestCase { - - private DocumentTypeManager types; - private JsonFactory parserFactory; + DocumentTypeManager types; + JsonFactory parserFactory; @Rule public ExpectedException exception = ExpectedException.none(); @@ -138,10 +133,7 @@ public class JsonReaderTestCase { } { DocumentType x = new DocumentType("testtensor"); - x.addField(new Field("mappedtensorfield", - new TensorDataType(new TensorType.Builder().mapped("x").mapped("y").build()))); - x.addField(new Field("indexedtensorfield", - new TensorDataType(new TensorType.Builder().indexed("x").indexed("y").build()))); + x.addField(new Field("tensorfield", DataType.TENSOR)); types.registerDocumentType(x); } { @@ -1030,88 +1022,83 @@ public class JsonReaderTestCase { Document doc = createPutWithoutTensor().getDocument(); assertEquals("testtensor", doc.getId().getDocType()); assertEquals("id:unittest:testtensor::0", doc.getId().toString()); - TensorFieldValue fieldValue = (TensorFieldValue)doc.getFieldValue(doc.getField("mappedtensorfield")); + TensorFieldValue fieldValue = (TensorFieldValue)doc.getFieldValue(doc.getField("tensorfield")); assertNull(fieldValue); } @Test public void testParsingOfEmptyTensor() { - assertMappedTensorField("tensor(x{},y{}):{}", createPutWithMappedTensor("{}")); + assertTensorField("{}", createPutWithTensor("{}")); } @Test public void testParsingOfTensorWithEmptyDimensions() { - assertMappedTensorField("tensor(x{},y{}):{}", - createPutWithMappedTensor("{ " - + " \"dimensions\": [] " - + "}")); + assertTensorField("{}", + createPutWithTensor("{ " + + " \"dimensions\": [] " + + "}")); } @Test public void testParsingOfTensorWithEmptyCells() { - assertMappedTensorField("tensor(x{},y{}):{}", - createPutWithMappedTensor("{ " - + " \"cells\": [] " - + "}")); + assertTensorField("{}", + createPutWithTensor("{ " + + " \"cells\": [] " + + "}")); } @Test - public void testParsingOfMappedTensorWithCells() { - Tensor tensor = assertMappedTensorField("{{x:a,y:b}:2.0,{x:c,y:b}:3.0}}", - createPutWithMappedTensor("{ " - + " \"cells\": [ " - + " { \"address\": { \"x\": \"a\", \"y\": \"b\" }, " - + " \"value\": 2.0 }, " - + " { \"address\": { \"x\": \"c\", \"y\": \"b\" }, " - + " \"value\": 3.0 } " - + " ]" - + "}")); - assertTrue(tensor instanceof MappedTensor); // any functional instance is fine + public void testParsingOfTensorWithCells() { + assertTensorField("{{x:a,y:b}:2.0,{x:c,y:b}:3.0}}", + createPutWithTensor("{ " + + " \"cells\": [ " + + " { \"address\": { \"x\": \"a\", \"y\": \"b\" }, " + + " \"value\": 2.0 }, " + + " { \"address\": { \"x\": \"c\", \"y\": \"b\" }, " + + " \"value\": 3.0 } " + + " ]" + + "}")); } @Test - public void testParsingOfIndexedTensorWithCells() { - Tensor tensor = assertTensorField("{{x:0,y:0}:2.0,{x:1,y:0}:3.0}}", - createPutWithTensor("{ " - + " \"cells\": [ " - + " { \"address\": { \"x\": \"0\", \"y\": \"0\" }, " - + " \"value\": 2.0 }, " - + " { \"address\": { \"x\": \"1\", \"y\": \"0\" }, " - + " \"value\": 3.0 } " - + " ]" - + "}", "indexedtensorfield"), "indexedtensorfield"); - assertTrue(tensor instanceof IndexedTensor); // this matters for performance + public void testParsingOfTensorWithSingleCellInDifferentJsonOrder() { + assertTensorField("{{x:a,y:b}:2.0}", + createPutWithTensor("{ " + + " \"cells\": [ " + + " { \"value\": 2.0, " + + " \"address\": { \"x\": \"a\", \"y\": \"b\" } } " + + " ]" + + "}")); } @Test - public void testParsingOfTensorWithSingleCellInDifferentJsonOrder() { - assertMappedTensorField("{{x:a,y:b}:2.0}", - createPutWithMappedTensor("{ " - + " \"cells\": [ " - + " { \"value\": 2.0, " - + " \"address\": { \"x\": \"a\", \"y\": \"b\" } } " - + " ]" - + "}")); + public void testParsingOfTensorWithSingleCellWithoutAddress() { + assertTensorField("{{}:2.0}", + createPutWithTensor("{ " + + " \"cells\": [ " + + " { \"value\": 2.0 } " + + " ]" + + "}")); } @Test - public void testAssignUpdateOfEmptyMappedTensor() { - assertTensorAssignUpdate("tensor(x{},y{}):{}", createAssignUpdateWithMappedTensor("{}")); + public void testParsingOfTensorWithSingleCellWithoutValue() { + assertTensorField("{{x:a}:0.0}", + createPutWithTensor("{ " + + " \"cells\": [ " + + " { \"address\": { \"x\": \"a\" } } " + + " ]" + + "}")); } @Test - public void testAssignUpdateOfEmptyIndexedTensor() { - try { - assertTensorAssignUpdate("tensor(x{},y{}):{}", createAssignUpdateWithTensor("{}", "indexedtensorfield")); - } - catch (IllegalArgumentException e) { - assertEquals("An indexed tensor must have a value", "Tensor of type tensor(x[],y[]) has no values", e.getMessage()); - } + public void testAssignUpdateOfEmptyTensor() { + assertTensorAssignUpdate("{}", createAssignUpdateWithTensor("{}")); } @Test public void testAssignUpdateOfNullTensor() { - ClearValueUpdate clearUpdate = (ClearValueUpdate) getTensorField(createAssignUpdateWithMappedTensor(null)).getValueUpdate(0); + ClearValueUpdate clearUpdate = (ClearValueUpdate) getTensorField(createAssignUpdateWithTensor(null)).getValueUpdate(0); assertTrue(clearUpdate != null); assertTrue(clearUpdate.getValue() == null); } @@ -1119,7 +1106,7 @@ public class JsonReaderTestCase { @Test public void testAssignUpdateOfTensorWithCells() { assertTensorAssignUpdate("{{x:a,y:b}:2.0,{x:c,y:b}:3.0}}", - createAssignUpdateWithMappedTensor("{ " + createAssignUpdateWithTensor("{ " + " \"cells\": [ " + " { \"address\": { \"x\": \"a\", \"y\": \"b\" }, " + " \"value\": 2.0 }, " @@ -1207,13 +1194,10 @@ public class JsonReaderTestCase { return (DocumentPut) reader.next(); } - private DocumentPut createPutWithMappedTensor(String inputTensor) { - return createPutWithTensor(inputTensor, "mappedtensorfield"); - } - private DocumentPut createPutWithTensor(String inputTensor, String tensorFieldName) { + private DocumentPut createPutWithTensor(String inputTensor) { InputStream rawDoc = new ByteArrayInputStream( Utf8.toBytes("[" - + " { \"put\": \"" + TENSOR_DOC_ID + "\", \"fields\": { \"" + tensorFieldName + "\": " + + " { \"put\": \"" + TENSOR_DOC_ID + "\", \"fields\": { \"tensorfield\": " + inputTensor + " }}" + "]")); @@ -1221,27 +1205,20 @@ public class JsonReaderTestCase { return (DocumentPut) reader.next(); } - private DocumentUpdate createAssignUpdateWithMappedTensor(String inputTensor) { - return createAssignUpdateWithTensor(inputTensor, "mappedtensorfield"); - } - private DocumentUpdate createAssignUpdateWithTensor(String inputTensor, String tensorFieldName) { + private DocumentUpdate createAssignUpdateWithTensor(String inputTensor) { InputStream rawDoc = new ByteArrayInputStream( - Utf8.toBytes("[ { \"update\": \"" + TENSOR_DOC_ID + "\", \"fields\": { \"" + tensorFieldName + "\": {" + Utf8.toBytes("[ { \"update\": \"" + TENSOR_DOC_ID + "\", \"fields\": { \"tensorfield\": {" + "\"assign\": " + (inputTensor != null ? inputTensor : "null") + " } } } ]")); JsonReader reader = new JsonReader(types, rawDoc, parserFactory); return (DocumentUpdate) reader.next(); } - private static Tensor assertMappedTensorField(String expectedTensor, DocumentPut put) { - return assertTensorField(expectedTensor, put, "mappedtensorfield"); - } - private static Tensor assertTensorField(String expectedTensor, DocumentPut put, String tensorFieldName) { + private static void assertTensorField(String expectedTensor, DocumentPut put) { final Document doc = put.getDocument(); assertEquals("testtensor", doc.getId().getDocType()); assertEquals(TENSOR_DOC_ID, doc.getId().toString()); - TensorFieldValue fieldValue = (TensorFieldValue)doc.getFieldValue(doc.getField(tensorFieldName)); + TensorFieldValue fieldValue = (TensorFieldValue)doc.getFieldValue(doc.getField("tensorfield")); assertEquals(Tensor.from(expectedTensor), fieldValue.getTensor().get()); - return fieldValue.getTensor().get(); } private static void assertTensorAssignUpdate(String expectedTensor, DocumentUpdate update) { @@ -1253,7 +1230,7 @@ public class JsonReaderTestCase { } private static FieldUpdate getTensorField(DocumentUpdate update) { - FieldUpdate fieldUpdate = update.getFieldUpdate("mappedtensorfield"); + FieldUpdate fieldUpdate = update.getFieldUpdate("tensorfield"); assertEquals(1, fieldUpdate.size()); return fieldUpdate; } diff --git a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java index 57b3e088efc..f29c208a113 100644 --- a/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java +++ b/document/src/test/java/com/yahoo/document/json/JsonWriterTestCase.java @@ -19,10 +19,8 @@ import com.yahoo.document.Field; import com.yahoo.document.MapDataType; import com.yahoo.document.PositionDataType; import com.yahoo.document.StructDataType; -import com.yahoo.document.TensorDataType; import com.yahoo.document.WeightedSetDataType; import com.yahoo.document.datatypes.TensorFieldValue; -import com.yahoo.tensor.TensorType; import com.yahoo.text.Utf8; import org.apache.commons.codec.binary.Base64; import org.junit.After; @@ -117,8 +115,7 @@ public class JsonWriterTestCase { } { DocumentType x = new DocumentType("testtensor"); - TensorType tensorType = new TensorType.Builder().mapped("x").mapped("y").build(); - x.addField(new Field("tensorfield", new TensorDataType(tensorType))); + x.addField(new Field("tensorfield", DataType.TENSOR)); types.registerDocumentType(x); } } @@ -301,7 +298,7 @@ public class JsonWriterTestCase { @Test public void testWritingOfEmptyTensor() throws IOException { - assertTensorRoundTripEquality("{}","{ \"cells\": [] }"); + assertTensorRoundTripEquality("{}","{ \"cells\": [{\"address\": {}, \"value\": 0.0}] }"); } @Test @@ -324,12 +321,20 @@ public class JsonWriterTestCase { } @Test + public void testWritingOfTensorWithSingleCellWithEmptyAddress() throws IOException { + assertTensorRoundTripEquality("{ " + + " \"cells\": [ " + + " { \"address\": {}, \"value\": 2.0 } " + + " ]" + + "}"); + } + + @Test public void testWritingOfTensorFieldValueWithoutTensor() throws IOException { - DocumentType documentTypeWithTensor = types.getDocumentType("testtensor"); + DocumentType tensorType = types.getDocumentType("testtensor"); String docId = "id:unittest:testtensor::0"; - Document doc = new Document(documentTypeWithTensor, docId); - Field tensorField = documentTypeWithTensor.getField("tensorfield"); - doc.setFieldValue(tensorField, new TensorFieldValue(((TensorDataType)tensorField.getDataType()).getTensorType())); + Document doc = new Document(tensorType, docId); + doc.setFieldValue(tensorType.getField("tensorfield"), new TensorFieldValue()); assertEqualJson(asDocument(docId, "{ \"tensorfield\": {} }"), JsonWriter.toByteArray(doc)); } diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java b/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java index 7e3fabc30fb..f3987085e32 100644 --- a/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java +++ b/document/src/test/java/com/yahoo/document/serialization/SerializationTestUtils.java @@ -2,7 +2,6 @@ package com.yahoo.document.serialization; import com.yahoo.document.Document; -import com.yahoo.document.datatypes.TensorFieldValue; import com.yahoo.io.GrowableByteBuffer; import java.io.IOException; diff --git a/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java b/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java index ae61bb3cf6f..22cb35ae937 100644 --- a/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java +++ b/document/src/test/java/com/yahoo/document/serialization/TensorFieldValueSerializationTestCase.java @@ -4,10 +4,8 @@ package com.yahoo.document.serialization; import com.yahoo.document.DataType; import com.yahoo.document.Document; import com.yahoo.document.DocumentType; -import com.yahoo.document.TensorDataType; import com.yahoo.document.datatypes.TensorFieldValue; import com.yahoo.tensor.Tensor; -import com.yahoo.tensor.TensorType; import org.junit.Test; import java.io.IOException; @@ -21,31 +19,30 @@ import static org.junit.Assert.assertEquals; */ public class TensorFieldValueSerializationTestCase { - private final static TensorType tensorType = new TensorType.Builder().mapped("dimX").mapped("dimY").build(); private final static String TENSOR_FIELD = "my_tensor"; private final static String TENSOR_FILES = "src/test/resources/tensor/"; - private final static TestDocumentFactory docFactory = new TestDocumentFactory(createDocType(), - "id:test:my_type::foo"); + private final static TestDocumentFactory docFactory = + new TestDocumentFactory(createDocType(), "id:test:my_type::foo"); private static DocumentType createDocType() { DocumentType type = new DocumentType("my_type"); - type.addField(TENSOR_FIELD, new TensorDataType(tensorType)); + type.addField(TENSOR_FIELD, DataType.TENSOR); return type; } @Test public void requireThatTensorFieldValueIsSerializedAndDeserialized() { - assertSerialization(new TensorFieldValue(tensorType)); - assertSerialization(createTensor(tensorType, "{}")); - assertSerialization(createTensor(tensorType, "{{dimX:a,dimY:bb}:2.0,{dimX:ccc,dimY:dddd}:3.0,{dimX:e,dimY:ff}:5.0}")); + assertSerialization(new TensorFieldValue()); + assertSerialization(createTensor("{}")); + assertSerialization(createTensor("{{dimX:a,dimY:bb}:2.0,{dimX:ccc,dimY:dddd}:3.0,{dimX:e,dimY:ff}:5.0}")); } @Test public void requireThatSerializationMatchesCpp() throws IOException { - assertSerializationMatchesCpp("non_existing_tensor", new TensorFieldValue(tensorType)); - assertSerializationMatchesCpp("empty_tensor", createTensor(tensorType, "{}")); + assertSerializationMatchesCpp("non_existing_tensor", new TensorFieldValue()); + assertSerializationMatchesCpp("empty_tensor", createTensor("{}")); assertSerializationMatchesCpp("multi_cell_tensor", - createTensor(tensorType, "{{dimX:a,dimY:bb}:2.0,{dimX:ccc,dimY:dddd}:3.0,{dimX:e,dimY:ff}:5.0}")); + createTensor("{{dimX:a,dimY:bb}:2.0,{dimX:ccc,dimY:dddd}:3.0,{dimX:e,dimY:ff}:5.0}")); } private static void assertSerialization(TensorFieldValue tensor) { @@ -63,8 +60,8 @@ public class TensorFieldValueSerializationTestCase { SerializationTestUtils.assertSerializationMatchesCpp(TENSOR_FILES, fileName, document, docFactory); } - private static TensorFieldValue createTensor(TensorType type, String tensorCellString) { - return new TensorFieldValue(Tensor.from(type, tensorCellString)); + private static TensorFieldValue createTensor(String tensor) { + return new TensorFieldValue(Tensor.from(tensor)); } } diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java index 3dc6ebd1403..3cfbcac5b62 100644 --- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java +++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlFieldReaderTestCase.java @@ -12,7 +12,6 @@ import com.yahoo.document.predicate.FeatureRange; import com.yahoo.document.predicate.FeatureSet; import com.yahoo.document.predicate.Predicate; import com.yahoo.document.serialization.DeserializationException; -import com.yahoo.tensor.TensorType; import org.apache.commons.codec.binary.Base64; import org.junit.Test; @@ -76,8 +75,8 @@ public class VespaXmlFieldReaderTestCase { @Test public void requireThatPutsForTensorFieldsAreNotSupported() throws Exception { - assertThrows(new Field("my_tensor", new TensorDataType(TensorType.empty)), "", - "Field 'my_tensor': XML input for fields of type TENSOR is not supported. Please use JSON input instead."); + assertThrows(new Field("my_tensor", DataType.TENSOR), "", + "Field 'my_tensor': XML input for fields of type TENSOR is not supported. Please use JSON input instead."); } private class MockedReaderFixture { diff --git a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java index 8a5fabde9ea..8730265c80d 100644 --- a/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java +++ b/document/src/test/java/com/yahoo/vespaxmlparser/VespaXmlUpdateReaderTestCase.java @@ -7,9 +7,7 @@ import com.yahoo.document.DocumentTypeManager; import com.yahoo.document.DocumentUpdate; import com.yahoo.document.Field; import com.yahoo.document.StructDataType; -import com.yahoo.document.TensorDataType; import com.yahoo.document.serialization.DeserializationException; -import com.yahoo.tensor.TensorType; import org.junit.Ignore; import org.junit.Test; @@ -217,8 +215,8 @@ public class VespaXmlUpdateReaderTestCase { @Test public void requireThatUpdatesForTensorFieldsAreNotSupported() throws Exception { - assertThrows(new Field("my_tensor", new TensorDataType(TensorType.empty)), "<assign field='my_tensor'></assign>", - "Field 'my_tensor': XML input for fields of type TENSOR is not supported. Please use JSON input instead."); + assertThrows(new Field("my_tensor", DataType.TENSOR), "<assign field='my_tensor'></assign>", + "Field 'my_tensor': XML input for fields of type TENSOR is not supported. Please use JSON input instead."); } private static void assertThrows(Field field, String fieldXml, String expected) throws Exception { diff --git a/document/src/test/resources/tensor/empty_tensor__cpp b/document/src/test/resources/tensor/empty_tensor__cpp Binary files differindex 2c15c152558..365182b14eb 100644 --- a/document/src/test/resources/tensor/empty_tensor__cpp +++ b/document/src/test/resources/tensor/empty_tensor__cpp diff --git a/document/src/test/resources/tensor/empty_tensor__java b/document/src/test/resources/tensor/empty_tensor__java Binary files differindex 2c15c152558..1fbade8c785 100644 --- a/document/src/test/resources/tensor/empty_tensor__java +++ b/document/src/test/resources/tensor/empty_tensor__java diff --git a/document/src/test/resources/tensor/multi_cell_tensor__cpp b/document/src/test/resources/tensor/multi_cell_tensor__cpp Binary files differindex d923fc10559..c0b2b3a165a 100644 --- a/document/src/test/resources/tensor/multi_cell_tensor__cpp +++ b/document/src/test/resources/tensor/multi_cell_tensor__cpp diff --git a/document/src/tests/serialization/vespadocumentserializer_test.cpp b/document/src/tests/serialization/vespadocumentserializer_test.cpp index 7e5e978f0d1..98aa3f3ae3e 100644 --- a/document/src/tests/serialization/vespadocumentserializer_test.cpp +++ b/document/src/tests/serialization/vespadocumentserializer_test.cpp @@ -811,7 +811,7 @@ void checkDeserialization(const string &name, std::unique_ptr<Tensor> tensor) { TEST("Require that tensor deserialization matches Java") { checkDeserialization("non_existing_tensor", std::unique_ptr<Tensor>()); - checkDeserialization("empty_tensor", createTensor({}, {})); + checkDeserialization("empty_tensor", createTensor({{{}, 0.0}}, {})); checkDeserialization("multi_cell_tensor", createTensor({ {{{"dimX", "a"}, {"dimY", "bb"}}, 2.0 }, {{{"dimX", "ccc"}, diff --git a/document/src/vespa/document/config/documentmanager.def b/document/src/vespa/document/config/documentmanager.def index 6ababfc19fb..267273cfa21 100644 --- a/document/src/vespa/document/config/documentmanager.def +++ b/document/src/vespa/document/config/documentmanager.def @@ -60,10 +60,6 @@ datatype[].structtype[].field[].id[].id int ## one specified in config. datatype[].structtype[].field[].datatype int -## Additional, optional type information which can be changed without -## (necessarily) causing field incompatibility -datatype[].structtype[].field[].detailedtype string default="" - ## Specify a document type to inherit datatype[].structtype[].inherits[].name string diff --git a/document/src/vespa/document/config/documenttypes.def b/document/src/vespa/document/config/documenttypes.def index 21cde02ad54..5e0c5e4e528 100644 --- a/document/src/vespa/document/config/documenttypes.def +++ b/document/src/vespa/document/config/documenttypes.def @@ -28,7 +28,7 @@ documenttype[].inherits[].id int documenttype[].datatype[].id int ## This is the type of the datatype. -documenttype[].datatype[].type enum {STRUCT, ARRAY, WSET, MAP, ANNOTATIONREF, PRIMITIVE, TENSOR} +documenttype[].datatype[].type enum {STRUCT, ARRAY, WSET, MAP, ANNOTATIONREF, PRIMITIVE} ## This is the id of the datatype of the element in the array. documenttype[].datatype[].array.element.id int default=0 @@ -82,10 +82,6 @@ documenttype[].datatype[].sstruct.field[].id_v6 int ## or one of its inherited document types. documenttype[].datatype[].sstruct.field[].datatype int -## Additional, optional type information which can be changed without -## (necessarily) causing field incompatibility -documenttype[].datatype[].sstruct.field[].detailedtype string default="" - ## The id of the annotation type. documenttype[].annotationtype[].id int diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java index cd783999456..ce56597cc86 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ArithmeticExpression.java @@ -74,10 +74,10 @@ public class ArithmeticExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); - context.setValue(evaluate(context.setValue(input).execute(lhs).getValue(), - context.setValue(input).execute(rhs).getValue())); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); + ctx.setValue(evaluate(ctx.setValue(input).execute(lhs).getValue(), + ctx.setValue(input).execute(rhs).getValue())); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java index 97034185a40..d40005bcba1 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64DecodeExpression.java @@ -33,8 +33,8 @@ public class Base64DecodeExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java index dc86c0480ea..b29971449e4 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Base64EncodeExpression.java @@ -25,8 +25,8 @@ public class Base64EncodeExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java index 79576563504..fe7771f83ec 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/CatExpression.java @@ -49,17 +49,17 @@ public class CatExpression extends ExpressionList<Expression> { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); List<DataType> types = new LinkedList<>(); for (Expression exp : this) { - DataType val = context.setValue(input).execute(exp).getValue(); + DataType val = ctx.setValue(input).execute(exp).getValue(); types.add(val); if (val == null) { throw new VerificationException(this, "Attempting to concatenate a null value (" + exp + ")."); } } - context.setValue(resolveOutputType(types)); + ctx.setValue(resolveOutputType(types)); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java index a8af8f7b4fb..7fb4951bfd9 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ClearStateExpression.java @@ -15,8 +15,8 @@ public class ClearStateExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.clear(); + protected void doVerify(VerificationContext ctx) { + ctx.clear(); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java index 93fbf4339bb..67f0c2faef4 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EchoExpression.java @@ -31,7 +31,7 @@ public class EchoExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java index 9727cc815cf..be70291cb70 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java @@ -39,7 +39,7 @@ public class ExactExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java index 2ed288760e7..f94a100b31d 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java @@ -13,7 +13,7 @@ import com.yahoo.vespa.indexinglanguage.parser.ParseException; import com.yahoo.vespa.objects.Selectable; /** - * @author Simon Thoresen + * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> */ public abstract class Expression extends Selectable { @@ -30,9 +30,9 @@ public abstract class Expression extends Selectable { return adapter.getFullOutput(); } - public static DocumentUpdate execute(Expression expression, AdapterFactory factory, DocumentUpdate update) { + public static DocumentUpdate execute(Expression expression, AdapterFactory factory, DocumentUpdate upd) { DocumentUpdate ret = null; - for (UpdateAdapter adapter : factory.newUpdateAdapterList(update)) { + for (UpdateAdapter adapter : factory.newUpdateAdapterList(upd)) { DocumentUpdate output = adapter.getExpression(expression).execute(adapter); if (output == null) { // ignore @@ -43,7 +43,7 @@ public abstract class Expression extends Selectable { } } if (ret != null) { - ret.setCreateIfNonExistent(update.getCreateIfNonExistent()); + ret.setCreateIfNonExistent(upd.getCreateIfNonExistent()); } return ret; } @@ -57,10 +57,10 @@ public abstract class Expression extends Selectable { return execute(new ExecutionContext(adapter)); } - public final FieldValue execute(ExecutionContext context) { + public final FieldValue execute(ExecutionContext ctx) { DataType inputType = requiredInputType(); if (inputType != null) { - FieldValue input = context.getValue(); + FieldValue input = ctx.getValue(); if (input == null) { return null; } @@ -69,16 +69,16 @@ public abstract class Expression extends Selectable { " input, got " + input.getDataType().getName() + "."); } } - doExecute(context); + doExecute(ctx); DataType outputType = createdOutputType(); if (outputType != null) { - FieldValue output = context.getValue(); + FieldValue output = ctx.getValue(); if (output != null && !outputType.isValueCompatible(output)) { throw new IllegalStateException("Expression '" + this + "' expected " + outputType.getName() + " output, got " + output.getDataType().getName() + "."); } } - return context.getValue(); + return ctx.getValue(); } protected abstract void doExecute(ExecutionContext ctx); @@ -132,10 +132,12 @@ public abstract class Expression extends Selectable { return verify(new VerificationContext(adapter)); } - public final DataType verify(VerificationContext context) { + public final DataType verify(VerificationContext ctx) { +// System.err.println("enter_verify(exp = '" + this + "', req = " + requiredInputType(ctx) + +// ", in = " + ctx.getValue() + ")"); DataType inputType = requiredInputType(); if (inputType != null) { - DataType input = context.getValue(); + DataType input = ctx.getValue(); if (input == null) { throw new VerificationException(this, "Expected " + inputType.getName() + " input, got null."); } @@ -147,10 +149,12 @@ public abstract class Expression extends Selectable { input.getName() + "."); } } - doVerify(context); + doVerify(ctx); DataType outputType = createdOutputType(); +// System.err.println("exit_verify(exp = '" + this + "', req = " + createdOutputType(ctx) + +// ", out = " + ctx.getValue() + ")"); if (outputType != null) { - DataType output = context.getValue(); + DataType output = ctx.getValue(); if (output == null) { throw new VerificationException(this, "Expected " + outputType.getName() + " output, got null."); } @@ -162,10 +166,10 @@ public abstract class Expression extends Selectable { output.getName() + "."); } } - return context.getValue(); + return ctx.getValue(); } - protected abstract void doVerify(VerificationContext context); + protected abstract void doVerify(VerificationContext ctx); public abstract DataType requiredInputType(); @@ -199,13 +203,12 @@ public abstract class Expression extends Selectable { } return true; } - // Convenience For testing public static Document execute(Expression expression, Document doc) { return expression.execute(new SimpleAdapterFactory(), doc); } - public static final DocumentUpdate execute(Expression expression, DocumentUpdate update) { - return expression.execute(expression, new SimpleAdapterFactory(), update); + public static final DocumentUpdate execute(Expression expression, DocumentUpdate upd) { + return expression.execute(expression, new SimpleAdapterFactory(), upd); } public final FieldValue execute() { return execute(new ExecutionContext()); diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java index a0dc490d4a4..915092f5e02 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java @@ -58,8 +58,8 @@ public class FlattenExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java index d634309ca9f..a74f02e9a4a 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachExpression.java @@ -45,26 +45,26 @@ public class ForEachExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); if (input instanceof ArrayDataType || input instanceof WeightedSetDataType) { - context.setValue(((CollectionDataType)input).getNestedType()).execute(exp); + ctx.setValue(((CollectionDataType)input).getNestedType()).execute(exp); if (input instanceof ArrayDataType) { - context.setValue(DataType.getArray(context.getValue())); + ctx.setValue(DataType.getArray(ctx.getValue())); } else { WeightedSetDataType wset = (WeightedSetDataType)input; - context.setValue(DataType.getWeightedSet(context.getValue(), wset.createIfNonExistent(), wset.removeIfZero())); + ctx.setValue(DataType.getWeightedSet(ctx.getValue(), wset.createIfNonExistent(), wset.removeIfZero())); } } else if (input instanceof StructDataType) { for (Field field : ((StructDataType)input).getFields()) { DataType fieldType = field.getDataType(); - DataType valueType = context.setValue(fieldType).execute(exp).getValue(); + DataType valueType = ctx.setValue(fieldType).execute(exp).getValue(); if (!fieldType.isAssignableFrom(valueType)) { throw new VerificationException(this, "Expected " + fieldType.getName() + " output, got " + valueType.getName() + "."); } } - context.setValue(input); + ctx.setValue(input); } else { throw new VerificationException(this, "Expected Array, Struct or WeightedSet input, got " + input.getName() + "."); diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java index 80fc5ad04f5..6cc06953437 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetFieldExpression.java @@ -38,8 +38,8 @@ public class GetFieldExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); if (!(input instanceof StructuredDataType)) { throw new VerificationException(this, "Expected structured input, got " + input.getName() + "."); } @@ -47,7 +47,7 @@ public class GetFieldExpression extends Expression { if (field == null) { throw new VerificationException(this, "Field '" + fieldName + "' not found."); } - context.setValue(field.getDataType()); + ctx.setValue(field.getDataType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java index e18143fb2f4..34f0139037b 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GetVarExpression.java @@ -25,12 +25,12 @@ public class GetVarExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getVariable(varName); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getVariable(varName); if (input == null) { throw new VerificationException(this, "Variable '" + varName + "' not found."); } - context.setValue(input); + ctx.setValue(input); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java index db187f0b5d1..b7a49e938b5 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/GuardExpression.java @@ -35,8 +35,8 @@ public class GuardExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - exp.verify(context); + protected void doVerify(VerificationContext ctx) { + exp.verify(ctx); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java index b582218f958..11e58883b27 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexDecodeExpression.java @@ -37,8 +37,8 @@ public class HexDecodeExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java index 18650837ad6..80c7b95308f 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HexEncodeExpression.java @@ -18,8 +18,8 @@ public class HexEncodeExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java index b8fdfb0f26a..30007090b78 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/HostNameExpression.java @@ -22,8 +22,8 @@ public class HostNameExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java index d81672da371..eb7e1c9a005 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/IfThenExpression.java @@ -95,13 +95,13 @@ public class IfThenExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); - context.setValue(input).execute(lhs); - context.setValue(input).execute(rhs); - context.setValue(input).execute(ifTrue); - context.setValue(input).execute(ifFalse); - context.setValue(input); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); + ctx.setValue(input).execute(lhs); + ctx.setValue(input).execute(rhs); + ctx.setValue(input).execute(ifTrue); + ctx.setValue(input).execute(ifFalse); + ctx.setValue(input); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java index 618c7787440..29957e440a4 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java @@ -38,12 +38,12 @@ public class InputExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - DataType val = context.getInputType(this, fieldName); + protected void doVerify(VerificationContext ctx) { + DataType val = ctx.getInputType(this, fieldName); if (val == null) { throw new VerificationException(this, "Field '" + fieldName + "' not found."); } - context.setValue(val); + ctx.setValue(val); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java index b73ac949cae..b440c2e68c8 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/JoinExpression.java @@ -44,12 +44,12 @@ public class JoinExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); if (!(input instanceof ArrayDataType)) { throw new VerificationException(this, "Expected Array input, got " + input.getName() + "."); } - context.setValue(createdOutputType()); + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java index e64c3a21a31..272e2c3a3e5 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/LowerCaseExpression.java @@ -18,8 +18,8 @@ public class LowerCaseExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java index 441c30dd9d9..74e2b30a799 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NGramExpression.java @@ -73,7 +73,7 @@ public class NGramExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java index ec1ac5ee4ed..75fb355580c 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/NowExpression.java @@ -30,8 +30,8 @@ public class NowExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java index b3980cf71ad..838fb0b3c3b 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OptimizePredicateExpression.java @@ -42,11 +42,11 @@ public class OptimizePredicateExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - checkVariable(context, "arity", DataType.INT, true); - checkVariable(context, "lower_bound", DataType.LONG, false); - checkVariable(context, "upper_bound", DataType.LONG, false); - context.setValue(DataType.PREDICATE); + protected void doVerify(VerificationContext ctx) { + checkVariable(ctx, "arity", DataType.INT, true); + checkVariable(ctx, "lower_bound", DataType.LONG, false); + checkVariable(ctx, "upper_bound", DataType.LONG, false); + ctx.setValue(DataType.PREDICATE); } private void checkVariable(VerificationContext ctx, String var, DataType type, boolean required) { diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java index fdda256eab2..063ec3a8955 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/OutputExpression.java @@ -27,8 +27,8 @@ public abstract class OutputExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.tryOutputType(this, fieldName, context.getValue()); + protected void doVerify(VerificationContext ctx) { + ctx.tryOutputType(this, fieldName, ctx.getValue()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java index 3b1f3bd234d..57d833a0748 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ParenthesisExpression.java @@ -27,8 +27,8 @@ public class ParenthesisExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - innerExp.verify(context); + protected void doVerify(VerificationContext ctx) { + innerExp.verify(ctx); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java index 4aeeafb8ba6..8a5cfc1bb88 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/RandomExpression.java @@ -38,8 +38,8 @@ public class RandomExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java index d536127f123..79ac7590cac 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java @@ -41,12 +41,12 @@ public class ScriptExpression extends ExpressionList<StatementExpression> { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); for (Expression exp : this) { - context.setValue(input).execute(exp); + ctx.setValue(input).execute(exp); } - context.setValue(input); + ctx.setValue(input); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java index fd079812cfc..8663dcf7a9d 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SelectInputExpression.java @@ -42,16 +42,16 @@ public class SelectInputExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); for (Pair<String, Expression> entry : cases) { - DataType val = context.getInputType(this, entry.getFirst()); + DataType val = ctx.getInputType(this, entry.getFirst()); if (val == null) { throw new VerificationException(this, "Field '" + entry.getFirst() + "' not found."); } - context.setValue(val).execute(entry.getSecond()); + ctx.setValue(val).execute(entry.getSecond()); } - context.setValue(input); + ctx.setValue(input); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java index 59a4d2a42b5..35f02ccb05b 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetLanguageExpression.java @@ -16,7 +16,7 @@ public class SetLanguageExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java index 59091dc06c0..edc1fcfa9ee 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetValueExpression.java @@ -30,8 +30,8 @@ public class SetValueExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(value.getDataType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(value.getDataType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java index 61267f32e33..d92831fd6b3 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SetVarExpression.java @@ -25,14 +25,14 @@ public class SetVarExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - DataType next = context.getValue(); - DataType prev = context.getVariable(varName); + protected void doVerify(VerificationContext ctx) { + DataType next = ctx.getValue(); + DataType prev = ctx.getVariable(varName); if (prev != null && !prev.equals(next)) { throw new VerificationException(this, "Attempting to assign conflicting types to variable '" + varName + "', " + prev.getName() + " vs " + next.getName() + "."); } - context.setVariable(varName, next); + ctx.setVariable(varName, next); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java index 1fea4029c3b..c2cfcd0cd0e 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SplitExpression.java @@ -38,8 +38,8 @@ public class SplitExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java index 0595165c5ba..012ca87ed37 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java @@ -35,9 +35,9 @@ public class StatementExpression extends ExpressionList<Expression> { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { for (Expression exp : this) { - context.execute(exp); + ctx.execute(exp); } } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java index fabfc1f742e..bb4351bee77 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java @@ -44,8 +44,8 @@ public class SubstringExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java index 45ec5c45b74..21f633c3aba 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SwitchExpression.java @@ -73,8 +73,8 @@ public class SwitchExpression extends CompositeExpression { } @Override - protected void doVerify(VerificationContext context) { - DataType input = context.getValue(); + protected void doVerify(VerificationContext ctx) { + DataType input = ctx.getValue(); if (input == null) { throw new VerificationException(this, "Expected " + DataType.STRING.getName() + " input, got null."); } @@ -83,10 +83,10 @@ public class SwitchExpression extends CompositeExpression { input.getName() + "."); } for (Expression exp : cases.values()) { - context.setValue(input).execute(exp); + ctx.setValue(input).execute(exp); } - context.setValue(input).execute(defaultExp); - context.setValue(input); + ctx.setValue(input).execute(defaultExp); + ctx.setValue(input); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java index ffea3f9ac92..8ad37b98f4c 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ThisExpression.java @@ -15,7 +15,7 @@ public class ThisExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java index 4f072b9c820..197ed431955 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToArrayExpression.java @@ -26,8 +26,8 @@ public class ToArrayExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(DataType.getArray(context.getValue())); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(DataType.getArray(ctx.getValue())); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java index c537fcb5e45..cd01f8251b0 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToByteExpression.java @@ -16,8 +16,8 @@ public class ToByteExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java index 3cf7a1d14d7..fb54aefe696 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToDoubleExpression.java @@ -16,8 +16,8 @@ public class ToDoubleExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java index 1bac0df2020..ebd866abfa9 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToFloatExpression.java @@ -16,8 +16,8 @@ public class ToFloatExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java index b39a3803ba0..0c900c7756a 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToIntegerExpression.java @@ -16,8 +16,8 @@ public class ToIntegerExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java index efb914fb203..63b8b446437 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToLongExpression.java @@ -16,8 +16,8 @@ public class ToLongExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java index 1b2bb923ae1..2b89e05b7b2 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToPositionExpression.java @@ -16,8 +16,8 @@ public class ToPositionExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java index 997bd01646b..0db289a6b6b 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToStringExpression.java @@ -15,8 +15,8 @@ public class ToStringExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java index 8dcb5336dc7..f15bac00031 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ToWsetExpression.java @@ -42,8 +42,8 @@ public class ToWsetExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(DataType.getWeightedSet(context.getValue(), createIfNonExistent, removeIfZero)); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(DataType.getWeightedSet(ctx.getValue(), createIfNonExistent, removeIfZero)); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java index 1617b715c68..272fbde342c 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TokenizeExpression.java @@ -46,7 +46,7 @@ public class TokenizeExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { // empty } diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java index 4b23be7fe91..d544b9218e4 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/TrimExpression.java @@ -16,8 +16,8 @@ public class TrimExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java index 65e06c970a8..cdf795ea7d5 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ZCurveExpression.java @@ -32,8 +32,8 @@ public class ZCurveExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { - context.setValue(createdOutputType()); + protected void doVerify(VerificationContext ctx) { + ctx.setValue(createdOutputType()); } @Override diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java index 068ebedc4fc..cd5f17c3b98 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ExpressionConverterTestCase.java @@ -264,7 +264,7 @@ public class ExpressionConverterTestCase { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java index a13cc2125e5..2bf00c98490 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/ForEachTestCase.java @@ -237,7 +237,7 @@ public class ForEachTestCase { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java index 9f3b431ff75..11f269b4d01 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/expressions/SimpleExpression.java @@ -47,9 +47,9 @@ class SimpleExpression extends Expression { } @Override - protected void doVerify(VerificationContext context) { + protected void doVerify(VerificationContext ctx) { if (hasVerifyValue) { - context.setValue(verifyValue); + ctx.setValue(verifyValue); } } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java index b0132693fa3..fbc469c1829 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorType.java @@ -74,25 +74,6 @@ public class TensorType { return Optional.empty(); } - /** - * Returns whether a tensor of the given type can be assigned to this type, - * i.e of this type is a generalization of the given type. - */ - public boolean isAssignableTo(TensorType other) { - if (other.dimensions().size() != this.dimensions().size()) return false; - for (int i = 0; i < other.dimensions().size(); i++) { - Dimension thisDimension = this.dimensions().get(i); - Dimension otherDimension = other.dimensions().get(i); - if (thisDimension.isIndexed() != otherDimension.isIndexed()) return false; - if ( ! thisDimension.name().equals(otherDimension.name())) return false; - if (thisDimension.size().isPresent()) { - if ( ! otherDimension.size().isPresent()) return false; - if (otherDimension.size().get() > thisDimension.size().get() ) return false; - } - } - return true; - } - @Override public String toString() { return "tensor(" + dimensions.stream().map(Dimension::toString).collect(Collectors.joining(",")) + ")"; diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java index 8ab23c8d77c..30b36e83457 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java @@ -54,12 +54,24 @@ class SparseBinaryFormat implements BinaryFormat { @Override public Tensor decode(TensorType type, GrowableByteBuffer buffer) { - consumeAndValidateDimensions(type, buffer); + if (type == null) // TODO (January 2017): Remove this when types are available + type = decodeDimensionsToType(buffer); + else + consumeAndValidateDimensions(type, buffer); Tensor.Builder builder = Tensor.Builder.of(type); decodeCells(buffer, builder, type); return builder.build(); } + private TensorType decodeDimensionsToType(GrowableByteBuffer buffer) { + TensorType.Builder builder = new TensorType.Builder(); + int numDimensions = buffer.getInt1_4Bytes(); + for (int i = 0; i < numDimensions; ++i) { + builder.mapped(buffer.getUtf8String()); + } + return builder.build(); + } + private void consumeAndValidateDimensions(TensorType type, GrowableByteBuffer buffer) { int dimensionCount = buffer.getInt1_4Bytes(); if (type.dimensions().size() != dimensionCount) diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java index 19c1810d928..65216aa2fcd 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java @@ -24,7 +24,7 @@ public class TypedBinaryFormat { public static byte[] encode(Tensor tensor) { GrowableByteBuffer buffer = new GrowableByteBuffer(); - if (tensor instanceof IndexedTensor) { + if (tensor instanceof IndexedTensor && 1==2) { // TODO: Activate when we have type information everywhere buffer.putInt1_4Bytes(DENSE_BINARY_FORMAT_TYPE); new DenseBinaryFormat().encode(buffer, tensor); } diff --git a/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java b/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java index d303a69a68d..e0edc6f4e64 100644 --- a/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java +++ b/vespajlib/src/main/java/com/yahoo/vespa/objects/Identifiable.java @@ -16,7 +16,7 @@ import java.util.HashMap; * methods. * * @author baldersheim - * @author Simon Thoresen + * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a> */ public class Identifiable extends Selectable implements Cloneable { @@ -177,7 +177,7 @@ public class Identifiable extends Selectable implements Cloneable { * * @param id The class identifier to register with. * @param spec The class to register. - * @return the identifier argument. + * @return The identifier argument. */ protected static int registerClass(int id, Class<? extends Identifiable> spec) { if (registry == null) { diff --git a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java index 15e82e6b15c..d2b2044f3ed 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/serialization/DenseBinaryFormatTestCase.java @@ -28,6 +28,7 @@ public class DenseBinaryFormatTestCase { } @Test + @Ignore // TODO: Activate when encoding in this format is activated public void requireThatSerializationFormatDoNotChange() { byte[] encodedTensor = new byte[]{2, // binary format type 2, // dimension count |