diff options
25 files changed, 167 insertions, 204 deletions
diff --git a/document/src/tests/annotation/annotation_test.cpp b/document/src/tests/annotation/annotation_test.cpp index 846504fda94..5e7fc325ecd 100644 --- a/document/src/tests/annotation/annotation_test.cpp +++ b/document/src/tests/annotation/annotation_test.cpp @@ -140,8 +140,8 @@ TEST("requireThatSpanTreeCanHaveMultipleLevels") { TEST("requireThatAnnotationsCanHaveValues") { PrimitiveDataType double_type(DataType::T_DOUBLE); StructDataType city_data_type; - city_data_type.addField(Field("latitude", 0, double_type, false)); - city_data_type.addField(Field("longitude", 1, double_type, false)); + city_data_type.addField(Field("latitude", 0, double_type)); + city_data_type.addField(Field("longitude", 1, double_type)); StructFieldValue::UP position(new StructFieldValue(city_data_type)); position->setValue("latitude", DoubleFieldValue(37.774929)); @@ -162,14 +162,12 @@ TEST("requireThatAnnotationsCanReferenceAnnotations") { AnnotationReferenceDataType annotation_ref_type(text_type, 101); ArrayDataType array_type(annotation_ref_type); StructDataType city_data_type("name", 42); - city_data_type.addField(Field("references", 0, array_type, false)); + city_data_type.addField(Field("references", 0, array_type)); StructFieldValue::UP city_data(new StructFieldValue(city_data_type)); ArrayFieldValue ref_list(array_type); - ref_list.add(AnnotationReferenceFieldValue(annotation_ref_type, - san_index)); - ref_list.add(AnnotationReferenceFieldValue(annotation_ref_type, - fran_index)); + ref_list.add(AnnotationReferenceFieldValue(annotation_ref_type, san_index)); + ref_list.add(AnnotationReferenceFieldValue(annotation_ref_type, fran_index)); city_data->setValue("references", ref_list); StructFieldValue original(*city_data); diff --git a/document/src/tests/datatype/datatype_test.cpp b/document/src/tests/datatype/datatype_test.cpp index fff913a0f91..1e9b9ad64fa 100644 --- a/document/src/tests/datatype/datatype_test.cpp +++ b/document/src/tests/datatype/datatype_test.cpp @@ -51,8 +51,8 @@ TEST("require that assignment operator works for LongFieldValue") { TEST("require that StructDataType can redeclare identical fields.") { StructDataType s("foo"); - Field field1("field1", 42, *DataType::STRING, true); - Field field2("field2", 42, *DataType::STRING, true); + Field field1("field1", 42, *DataType::STRING); + Field field2("field2", 42, *DataType::STRING); s.addField(field1); s.addField(field1); // ok diff --git a/document/src/tests/documentselectparsertest.cpp b/document/src/tests/documentselectparsertest.cpp index b75d094459b..6fd9ab80faa 100644 --- a/document/src/tests/documentselectparsertest.cpp +++ b/document/src/tests/documentselectparsertest.cpp @@ -1002,7 +1002,7 @@ TEST_F(DocumentSelectParserTest, testBodyFieldDetection) select::BodyFieldDetector detector(*_repo); root->visit(detector); - EXPECT_TRUE(!detector.foundBodyField); + EXPECT_FALSE(detector.foundBodyField); EXPECT_TRUE(detector.foundHeaderField); } @@ -1011,7 +1011,7 @@ TEST_F(DocumentSelectParserTest, testBodyFieldDetection) select::BodyFieldDetector detector(*_repo); root->visit(detector); - EXPECT_TRUE(!detector.foundBodyField); + EXPECT_FALSE(detector.foundBodyField); EXPECT_TRUE(detector.foundHeaderField); } @@ -1020,7 +1020,7 @@ TEST_F(DocumentSelectParserTest, testBodyFieldDetection) select::BodyFieldDetector detector(*_repo); root->visit(detector); - EXPECT_TRUE(!detector.foundBodyField); + EXPECT_FALSE(detector.foundBodyField); EXPECT_TRUE(detector.foundHeaderField); } @@ -1029,7 +1029,7 @@ TEST_F(DocumentSelectParserTest, testBodyFieldDetection) select::BodyFieldDetector detector(*_repo); root->visit(detector); - EXPECT_TRUE(detector.foundBodyField); + EXPECT_FALSE(detector.foundBodyField); } { @@ -1040,7 +1040,7 @@ TEST_F(DocumentSelectParserTest, testBodyFieldDetection) select::BodyFieldDetector detector(*_repo); root->visit(detector); - EXPECT_TRUE(!detector.foundBodyField); + EXPECT_FALSE(detector.foundBodyField); } } diff --git a/document/src/tests/documenttestcase.cpp b/document/src/tests/documenttestcase.cpp index 968470e9693..e917e33f9ef 100644 --- a/document/src/tests/documenttestcase.cpp +++ b/document/src/tests/documenttestcase.cpp @@ -92,29 +92,29 @@ Handler::~Handler() = default; TEST(DocumentTest, testTraversing) { - Field primitive1("primitive1", 1, *DataType::INT, true); - Field primitive2("primitive2", 2, *DataType::INT, true); + Field primitive1("primitive1", 1, *DataType::INT); + Field primitive2("primitive2", 2, *DataType::INT); StructDataType struct1("struct1"); struct1.addField(primitive1); struct1.addField(primitive2); ArrayDataType iarr(*DataType::INT); ArrayDataType sarr(struct1); - Field iarrF("iarray", 21, iarr, true); - Field sarrF("sarray", 22, sarr, true); + Field iarrF("iarray", 21, iarr); + Field sarrF("sarray", 22, sarr); StructDataType struct2("struct2"); struct2.addField(primitive1); struct2.addField(primitive2); struct2.addField(iarrF); struct2.addField(sarrF); - Field s2("ss", 12, struct2, true); + Field s2("ss", 12, struct2); StructDataType struct3("struct3"); struct3.addField(primitive1); struct3.addField(s2); - Field structl1s1("l1s1", 11, struct3, true); + Field structl1s1("l1s1", 11, struct3); DocumentType type("test"); type.addField(primitive1); @@ -175,7 +175,7 @@ TEST(DocumentTest, testVariables) ArrayDataType iiarr(static_cast<DataType &>(iarr)); ArrayDataType iiiarr(static_cast<DataType &>(iiarr)); - Field iiiarrF("iiiarray", 1, iiiarr, true); + Field iiiarrF("iiiarray", 1, iiiarr); DocumentType type("test"); type.addField(iiiarrF); @@ -255,19 +255,19 @@ public: TEST(DocumentTest, testModifyDocument) { // Create test document type and content - Field primitive1("primitive1", 1, *DataType::INT, true); - Field primitive2("primitive2", 2, *DataType::INT, true); + Field primitive1("primitive1", 1, *DataType::INT); + Field primitive2("primitive2", 2, *DataType::INT); StructDataType struct1("struct1"); struct1.addField(primitive1); struct1.addField(primitive2); ArrayDataType iarr(*DataType::INT); ArrayDataType sarr(struct1); - Field iarrF("iarray", 21, iarr, true); - Field sarrF("sarray", 22, sarr, true); + Field iarrF("iarray", 21, iarr); + Field sarrF("sarray", 22, sarr); MapDataType smap(*DataType::STRING, *DataType::STRING); - Field smapF("smap", 23, smap, true); + Field smapF("smap", 23, smap); StructDataType struct2("struct2"); struct2.addField(primitive1); @@ -275,16 +275,16 @@ TEST(DocumentTest, testModifyDocument) struct2.addField(iarrF); struct2.addField(sarrF); struct2.addField(smapF); - Field s2("ss", 12, struct2, true); + Field s2("ss", 12, struct2); MapDataType structmap(*DataType::STRING, struct2); - Field structmapF("structmap", 24, structmap, true); + Field structmapF("structmap", 24, structmap); WeightedSetDataType wset(*DataType::STRING, false, false); - Field wsetF("wset", 25, wset, true); + Field wsetF("wset", 25, wset); WeightedSetDataType structwset(struct2, false, false); - Field structwsetF("structwset", 26, structwset, true); + Field structwsetF("structwset", 26, structwset); StructDataType struct3("struct3"); struct3.addField(primitive1); @@ -293,7 +293,7 @@ TEST(DocumentTest, testModifyDocument) struct3.addField(wsetF); struct3.addField(structwsetF); - Field structl1s1("l1s1", 11, struct3, true); + Field structl1s1("l1s1", 11, struct3); DocumentType type("test"); type.addField(primitive1); @@ -363,9 +363,9 @@ TEST(DocumentTest, testModifyDocument) TEST(DocumentTest, testSimpleUsage) { DocumentType::SP type(new DocumentType("test")); - Field intF("int", 1, *DataType::INT, true); - Field longF("long", 2, *DataType::LONG, true); - Field strF("content", 4, *DataType::STRING, false); + Field intF("int", 1, *DataType::INT); + Field longF("long", 2, *DataType::LONG); + Field strF("content", 4, *DataType::STRING); type->addField(intF); type->addField(longF); @@ -462,9 +462,9 @@ TEST(DocumentTest, testSimpleUsage) " DocumentType(test, id -877171244)\n" " : DocumentType(document) {\n" " StructDataType(test.header, id 306916075) {\n" -" Field(content, id 4, PrimitiveDataType(String, id 2), body)\n" -" Field(int, id 1, NumericDataType(Int, id 0), header)\n" -" Field(long, id 2, NumericDataType(Long, id 4), header)\n" +" Field(content, id 4, PrimitiveDataType(String, id 2))\n" +" Field(int, id 1, NumericDataType(Int, id 0))\n" +" Field(long, id 2, NumericDataType(Long, id 4))\n" " }\n" " }\n" " int: 1\n" @@ -484,7 +484,7 @@ TEST(DocumentTest, testSimpleUsage) // Fetch a field not existing in type // (Would be nice if this failed, but whole idea to fetch by field // objects is to improve performance.) - Field anotherIntF("int", 17, *DataType::INT, true); + Field anotherIntF("int", 17, *DataType::INT); EXPECT_TRUE(!value.hasValue(anotherIntF)); EXPECT_TRUE(!value.getValue(anotherIntF)); @@ -1096,10 +1096,10 @@ TEST(DocumentTest, testUnknownEntries) // We should be able to deserialize a document with unknown values in it. DocumentType type1("test", 0); DocumentType type2("test", 0); - Field field1("int1", *DataType::INT, true); - Field field2("int2", *DataType::INT, true); - Field field3("int3", *DataType::INT, false); - Field field4("int4", *DataType::INT, false); + Field field1("int1", *DataType::INT); + Field field2("int2", *DataType::INT); + Field field3("int3", *DataType::INT); + Field field4("int4", *DataType::INT); type1.addField(field1); type1.addField(field2); diff --git a/document/src/tests/documenttypetestcase.cpp b/document/src/tests/documenttypetestcase.cpp index caddfbc70fc..901f02652fb 100644 --- a/document/src/tests/documenttypetestcase.cpp +++ b/document/src/tests/documenttypetestcase.cpp @@ -5,7 +5,6 @@ #include <vespa/document/repo/configbuilder.h> #include <vespa/document/repo/documenttyperepo.h> #include <vespa/vespalib/testkit/test_kit.h> -#include <vespa/vespalib/util/exceptions.h> #include <gtest/gtest.h> #include <gmock/gmock.h> @@ -22,8 +21,8 @@ TEST(DocumentTypeTest, testSetGet) { DocumentType docType("doctypetestdoc", 0); - docType.addField(Field("stringattr", 3, *DataType::STRING, true)); - docType.addField(Field("nalle", 0, *DataType::INT, false)); + docType.addField(Field("stringattr", 3, *DataType::STRING)); + docType.addField(Field("nalle", 0, *DataType::INT)); const Field& fetch1 = docType.getField("stringattr"); const Field& fetch2 = docType.getField("stringattr"); @@ -42,17 +41,11 @@ TEST(DocumentTypeTest, testSetGet) void categorizeFields(const Field::Set& fields, - std::vector<const Field*>& headers, - std::vector<const Field*>& bodies) + std::vector<const Field*>& headers) { - for (Field::Set::const_iterator it(fields.begin()), e(fields.end()); - it != e; ++it) + for (const Field * field : fields) { - if ((*it)->isHeaderField()) { - headers.push_back(*it); - } else { - bodies.push_back(*it); - } + headers.push_back(field); } } @@ -81,18 +74,15 @@ TEST(DocumentTypeTest, testHeaderContent) Field::Set fields = type->getFieldsType().getFieldSet(); std::vector<const Field*> headers; - std::vector<const Field*> bodies; - categorizeFields(fields, headers, bodies); + categorizeFields(fields, headers); - EXPECT_TRUE(headers.size() == 4); + EXPECT_TRUE(headers.size() == 6); EXPECT_TRUE(headers[0]->getName() == "field1"); EXPECT_TRUE(headers[1]->getName() == "field2"); - EXPECT_TRUE(headers[2]->getName() == "field4"); - EXPECT_TRUE(headers[3]->getName() == "fieldarray1"); - - EXPECT_TRUE(bodies.size() == 2); - EXPECT_TRUE(bodies[0]->getName() == "field3"); - EXPECT_TRUE(bodies[1]->getName() == "field5"); + EXPECT_TRUE(headers[2]->getName() == "field3"); + EXPECT_TRUE(headers[3]->getName() == "field4"); + EXPECT_TRUE(headers[4]->getName() == "field5"); + EXPECT_TRUE(headers[5]->getName() == "fieldarray1"); } TEST(DocumentTypeTest, testMultipleInheritance) @@ -142,8 +132,8 @@ bool containsField(const DocumentType::FieldSet &fieldSet, const vespalib::strin TEST(DocumentTypeTest, testFieldSetCanContainFieldsNotInDocType) { DocumentType docType("test1"); - docType.addField(Field("stringattr", 3, *DataType::STRING, false)); - docType.addField(Field("nalle", 0, *DataType::INT, false)); + docType.addField(Field("stringattr", 3, *DataType::STRING)); + docType.addField(Field("nalle", 0, *DataType::INT)); { DocumentType::FieldSet::Fields tmp; tmp.insert("nalle"); @@ -160,13 +150,13 @@ TEST(DocumentTypeTest, testInheritance) { // Inheritance of conflicting but equal datatype ok DocumentType docType("test1"); - docType.addField(Field("stringattr", 3, *DataType::STRING, false)); - docType.addField(Field("nalle", 0, *DataType::INT, false)); + docType.addField(Field("stringattr", 3, *DataType::STRING)); + docType.addField(Field("nalle", 0, *DataType::INT)); DocumentType docType2("test2"); - docType2.addField(Field("stringattr", 3, *DataType::STRING, false)); - docType2.addField(Field("tmp", 5, *DataType::STRING, false)); - docType2.addField(Field("tall", 10, *DataType::INT, false)); + docType2.addField(Field("stringattr", 3, *DataType::STRING)); + docType2.addField(Field("tmp", 5, *DataType::STRING)); + docType2.addField(Field("tall", 10, *DataType::INT)); docType.inherit(docType2); EXPECT_TRUE(docType.hasField("stringattr")); @@ -175,8 +165,8 @@ TEST(DocumentTypeTest, testInheritance) EXPECT_TRUE(docType.hasField("tall")); DocumentType docType3("test3"); - docType3.addField(Field("stringattr", 3, *DataType::RAW, false)); - docType3.addField(Field("tall", 10, *DataType::INT, false)); + docType3.addField(Field("stringattr", 3, *DataType::RAW)); + docType3.addField(Field("tall", 10, *DataType::INT)); try{ docType2.inherit(docType3); @@ -206,7 +196,7 @@ TEST(DocumentTypeTest, testInheritance) } DocumentType docType5("test5"); - docType5.addField(Field("stringattr", 20, *DataType::RAW, false)); + docType5.addField(Field("stringattr", 20, *DataType::RAW)); try{ docType4.inherit(docType5); diff --git a/document/src/tests/serialization/vespadocumentserializer_test.cpp b/document/src/tests/serialization/vespadocumentserializer_test.cpp index 2ad06dc93de..c0ebdad6373 100644 --- a/document/src/tests/serialization/vespadocumentserializer_test.cpp +++ b/document/src/tests/serialization/vespadocumentserializer_test.cpp @@ -422,8 +422,8 @@ TEST("requireThatWeightedSetFieldValueCanBeSerialized") { EXPECT_EQUAL(3u, weight); } -const Field field1("field1", *DataType::INT, false); -const Field field2("field2", *DataType::STRING, false); +const Field field1("field1", *DataType::INT); +const Field field2("field2", *DataType::STRING); StructDataType getStructDataType() { StructDataType struct_type("struct"); @@ -638,7 +638,7 @@ TEST("requireThatDocumentWithDocumentCanBeSerialized") { setSpanTree(str, *tree); - const Field str_field("str", *DataType::STRING, false); + const Field str_field("str", *DataType::STRING); Document inner(*inner_type, DocumentId("id:ns:" + inner_type->getName() + "::")); inner.setValue(str_field, str); @@ -646,7 +646,7 @@ TEST("requireThatDocumentWithDocumentCanBeSerialized") { ASSERT_TRUE(type); DocumentId doc_id("id:ns:" + type->getName() + "::"); Document value(*type, doc_id); - const Field doc_field(inner_name, *inner_type, false); + const Field doc_field(inner_name, *inner_type); value.setValue(doc_field, inner); nbostream stream; diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp index 316394c289f..ac195ccf7ea 100644 --- a/document/src/vespa/document/base/field.cpp +++ b/document/src/vespa/document/base/field.cpp @@ -10,22 +10,18 @@ namespace document { -Field::Field() : Field("", 0, *DataType::INT, false) { } +Field::Field() : Field("", 0, *DataType::INT) { } -Field::Field(vespalib::stringref name, int fieldId, - const DataType& dataType, bool headerField) +Field::Field(vespalib::stringref name, int fieldId, const DataType& dataType) : FieldBase(name), _dataType(&dataType), - _fieldId(fieldId), - _isHeaderField(headerField) + _fieldId(fieldId) { } -Field::Field(vespalib::stringref name, - const DataType& dataType, bool headerField) +Field::Field(vespalib::stringref name, const DataType& dataType) : FieldBase(name), _dataType(&dataType), - _fieldId(calculateIdV7()), - _isHeaderField(headerField) + _fieldId(calculateIdV7()) { } FieldValue::UP @@ -42,9 +38,6 @@ Field::toString(bool verbose) const out << ", id " << _fieldId; } out << ", " << _dataType->toString(); - if (verbose) { - out << ", " << (_isHeaderField ? "header" : "body"); - } out << ")"; return out.str(); } diff --git a/document/src/vespa/document/base/field.h b/document/src/vespa/document/base/field.h index a77034932cf..3c739b2bfd3 100644 --- a/document/src/vespa/document/base/field.h +++ b/document/src/vespa/document/base/field.h @@ -26,8 +26,7 @@ class Field final : public vespalib::FieldBase, public FieldSet { const DataType *_dataType; - int _fieldId; - bool _isHeaderField; + int _fieldId; public: typedef std::shared_ptr<const Field> CSP; typedef std::shared_ptr<Field> SP; @@ -49,7 +48,7 @@ public: * @param headerField Whether or not this is a "header" field. */ Field(vespalib::stringref name, int fieldId, - const DataType &type, bool headerField); + const DataType &type); Field(); @@ -61,7 +60,7 @@ public: * @param dataType The datatype of the field. * @param headerField Whether or not this is a "header" field. */ - Field(vespalib::stringref name, const DataType &dataType, bool headerField); + Field(vespalib::stringref name, const DataType &dataType); Field* clone() const override { return new Field(*this); } std::unique_ptr<FieldValue> createValue() const; @@ -74,7 +73,6 @@ public: const DataType &getDataType() const { return *_dataType; } int getId() const { return _fieldId; } - bool isHeaderField() const { return _isHeaderField; } vespalib::string toString(bool verbose=false) const; bool contains(const FieldSet& fields) const override; diff --git a/document/src/vespa/document/datatype/positiondatatype.cpp b/document/src/vespa/document/datatype/positiondatatype.cpp index 24fbcc76be3..a8e9c81c895 100644 --- a/document/src/vespa/document/datatype/positiondatatype.cpp +++ b/document/src/vespa/document/datatype/positiondatatype.cpp @@ -21,17 +21,17 @@ StructDataType::UP PositionDataType::createInstance() { StructDataType::UP type(new StructDataType(PositionDataType::STRUCT_NAME)); - type->addField(Field(PositionDataType::FIELD_X, *DataType::INT, true)); - type->addField(Field(PositionDataType::FIELD_Y, *DataType::INT, true)); + type->addField(Field(PositionDataType::FIELD_X, *DataType::INT)); + type->addField(Field(PositionDataType::FIELD_Y, *DataType::INT)); return type; } const StructDataType & PositionDataType::getInstance() { - if (_instance.get() == NULL) { + if ( ! _instance) { vespalib::LockGuard guard(_lock); - if (_instance.get() == NULL) { + if ( ! _instance) { _instance = createInstance(); } } diff --git a/document/src/vespa/document/datatype/urldatatype.cpp b/document/src/vespa/document/datatype/urldatatype.cpp index 95f8af2a881..00ea31408af 100644 --- a/document/src/vespa/document/datatype/urldatatype.cpp +++ b/document/src/vespa/document/datatype/urldatatype.cpp @@ -20,22 +20,22 @@ StructDataType::UP UrlDataType::createInstance() { StructDataType::UP type(new StructDataType(UrlDataType::STRUCT_NAME)); - type->addField(Field(UrlDataType::FIELD_ALL, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_SCHEME, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_HOST, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_PORT, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_PATH, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_QUERY, *DataType::STRING, true)); - type->addField(Field(UrlDataType::FIELD_FRAGMENT,*DataType::STRING, true)); + type->addField(Field(UrlDataType::FIELD_ALL, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_SCHEME, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_HOST, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_PORT, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_PATH, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_QUERY, *DataType::STRING)); + type->addField(Field(UrlDataType::FIELD_FRAGMENT,*DataType::STRING)); return type; } const StructDataType & UrlDataType::getInstance() { - if (_instance.get() == NULL) { + if ( ! _instance ) { vespalib::LockGuard guard(_lock); - if (_instance.get() == NULL) { + if ( ! _instance ) { _instance = createInstance(); } } diff --git a/document/src/vespa/document/repo/configbuilder.cpp b/document/src/vespa/document/repo/configbuilder.cpp index 7d9b607facd..2f507a43204 100644 --- a/document/src/vespa/document/repo/configbuilder.cpp +++ b/document/src/vespa/document/repo/configbuilder.cpp @@ -6,7 +6,7 @@ namespace document::config_builder { int32_t createFieldId(const vespalib::string &name, int32_t type) { StructDataType dummy("dummy", type); - Field f(name, dummy, true); + Field f(name, dummy); return f.getId(); } diff --git a/document/src/vespa/document/repo/documenttyperepo.cpp b/document/src/vespa/document/repo/documenttyperepo.cpp index 58dbd16beb6..bcd4edb3ab8 100644 --- a/document/src/vespa/document/repo/documenttyperepo.cpp +++ b/document/src/vespa/document/repo/documenttyperepo.cpp @@ -232,7 +232,7 @@ struct DataTypeRepo { namespace { void addAnnotationType(const DocumenttypesConfig::Documenttype::Annotationtype &type, AnnotationTypeRepo &annotations) { - AnnotationType::UP a(new AnnotationType(type.id, type.name)); + auto a = std::make_unique<AnnotationType>(type.id, type.name); annotations.addAnnotationType(std::move(a)); } @@ -257,17 +257,12 @@ void setAnnotationDataTypes(const vector<DocumenttypesConfig::Documenttype::Anno typedef DocumenttypesConfig::Documenttype::Datatype Datatype; -void addField(const Datatype::Sstruct::Field &field, Repo &repo, StructDataType &struct_type, bool isHeaderField) +void addField(const Datatype::Sstruct::Field &field, Repo &repo, StructDataType &struct_type) { - LOG(spam, "Adding field %s to %s (header: %s)", - field.name.c_str(), struct_type.getName().c_str(), isHeaderField ? "yes" : "no"); + LOG(spam, "Adding field %s to %s", + field.name.c_str(), struct_type.getName().c_str()); const DataType &field_type = repo.findOrThrowOrCreate(field.datatype, field.detailedtype); - struct_type.addField(Field(field.name, field.id, field_type, isHeaderField)); -} - -bool hasSuffix(const string &s, const string &suffix) { - string::size_type pos = s.rfind(suffix.c_str()); - return pos != string::npos && pos == s.size() - suffix.size(); + struct_type.addField(Field(field.name, field.id, field_type)); } void addStruct(int32_t id, const Datatype::Sstruct &s, Repo &repo) { @@ -318,7 +313,7 @@ void addStruct(int32_t id, const Datatype::Sstruct &s, Repo &repo) { CompressionConfig(type, s.compression.level, s.compression.threshold, s.compression.minsize)); for (size_t i = 0; i < s.field.size(); ++i) { - addField(s.field[i], repo, *struct_type, hasSuffix(s.name, ".header")); + addField(s.field[i], repo, *struct_type); } } diff --git a/document/src/vespa/document/select/bodyfielddetector.cpp b/document/src/vespa/document/select/bodyfielddetector.cpp index 228fec26277..3d32813621d 100644 --- a/document/src/vespa/document/select/bodyfielddetector.cpp +++ b/document/src/vespa/document/select/bodyfielddetector.cpp @@ -18,11 +18,7 @@ BodyFieldDetector::detectFieldType(const FieldValueNode *expr, const DocumentTyp FieldPath path; type.buildFieldPath(path, expr->getFieldName()); if ( ! path.empty() ) { - if (path[0].getFieldRef().isHeaderField()) { - foundHeaderField = true; - } else { - foundBodyField = true; - } + foundHeaderField = true; } } catch (FieldNotFoundException &) { } diff --git a/document/src/vespa/document/select/bodyfielddetector.h b/document/src/vespa/document/select/bodyfielddetector.h index 028519c8101..99cf9f7c6ea 100644 --- a/document/src/vespa/document/select/bodyfielddetector.h +++ b/document/src/vespa/document/select/bodyfielddetector.h @@ -33,19 +33,4 @@ public: void visitFieldValueNode(const FieldValueNode& expr) override; }; -class NeedDocumentDetector : public TraversingVisitor -{ -private: - bool _needDocument; - void visitDocumentType(const DocType &) override { - _needDocument = true; - } - void visitFieldValueNode(const FieldValueNode &) override { - _needDocument = true; - } -public: - NeedDocumentDetector() : _needDocument(false) { } - bool needDocument() const { return _needDocument; } -}; - } diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp index 258ee5f32d8..41de6827244 100644 --- a/searchcore/src/tests/proton/attribute/attribute_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp @@ -984,7 +984,7 @@ public: StructWriterTestBase() : AttributeWriterTest(), _type("test"), - _valueField("value", 2, *DataType::INT, true), + _valueField("value", 2, *DataType::INT), _structFieldType("struct") { addAttribute({"value", AVConfig(AVBasicType::INT32, AVCollectionType::SINGLE)}); @@ -1019,7 +1019,7 @@ public: StructArrayWriterTest() : StructWriterTestBase(), _structArrayFieldType(_structFieldType), - _structArrayField("array", _structArrayFieldType, true) + _structArrayField("array", _structArrayFieldType) { addAttribute({"array.value", AVConfig(AVBasicType::INT32, AVCollectionType::ARRAY)}); _type.addField(_structArrayField); @@ -1070,7 +1070,7 @@ public: StructMapWriterTest() : StructWriterTestBase(), _structMapFieldType(*DataType::INT, _structFieldType), - _structMapField("map", _structMapFieldType, true) + _structMapField("map", _structMapFieldType) { addAttribute({"map.value.value", AVConfig(AVBasicType::INT32, AVCollectionType::ARRAY)}); addAttribute({"map.key", AVConfig(AVBasicType::INT32, AVCollectionType::ARRAY)}); diff --git a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp index 33a3de0c5b6..89dbf20eb61 100644 --- a/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp +++ b/searchcore/src/tests/proton/attribute/document_field_extractor/document_field_extractor_test.cpp @@ -97,8 +97,8 @@ struct FixtureBase FixtureBase(bool byteWeight) : type("test"), - weightField("weight", 1, byteWeight ? *DataType::BYTE : *DataType::INT, true), - nameField("name", 2, *DataType::STRING, true), + weightField("weight", 1, byteWeight ? *DataType::BYTE : *DataType::INT), + nameField("name", 2, *DataType::STRING), doc(), extractor() { @@ -174,9 +174,9 @@ struct ArrayFixture : public FixtureBase ArrayFixture(bool byteWeight = false) : FixtureBase(byteWeight), weightArrayFieldType(weightField.getDataType()), - weightArrayField("weight", weightArrayFieldType, true), + weightArrayField("weight", weightArrayFieldType), valueArrayFieldType(nameField.getDataType()), - valueArrayField("val", valueArrayFieldType, true) + valueArrayField("val", valueArrayFieldType) { type.addField(weightArrayField); type.addField(valueArrayField); @@ -206,9 +206,9 @@ struct WeightedSetFixture : public FixtureBase WeightedSetFixture(bool byteWeight = false) : FixtureBase(byteWeight), weightWeightedSetFieldType(weightField.getDataType(), false, false), - weightWeightedSetField("weight", weightWeightedSetFieldType, true), + weightWeightedSetField("weight", weightWeightedSetFieldType), valueWeightedSetFieldType(*DataType::STRING, false, false), - valueWeightedSetField("val", valueWeightedSetFieldType, true) + valueWeightedSetField("val", valueWeightedSetFieldType) { type.addField(weightWeightedSetField); type.addField(valueWeightedSetField); @@ -280,7 +280,7 @@ struct StructArrayFixture : public StructFixtureBase StructArrayFixture(bool byteWeight = false) : StructFixtureBase(byteWeight), structArrayFieldType(structFieldType), - structArrayField("s", 11, structArrayFieldType, true) + structArrayField("s", 11, structArrayFieldType) { type.addField(structArrayField); } @@ -310,7 +310,7 @@ struct StructMapFixture : public StructFixtureBase StructMapFixture(bool byteWeight = false, bool byteKey = false) : StructFixtureBase(byteWeight), structMapFieldType(byteKey ? *DataType::BYTE : *DataType::STRING, structFieldType), - structMapField("s", 12, structMapFieldType, true) + structMapField("s", 12, structMapFieldType) { type.addField(structMapField); } @@ -343,7 +343,7 @@ struct PrimitiveMapFixture : public FixtureBase PrimitiveMapFixture() : FixtureBase(false), mapFieldType(nameField.getDataType(), weightField.getDataType()), - mapField("map", mapFieldType, true) + mapField("map", mapFieldType) { type.addField(mapField); } diff --git a/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp b/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp index 167865b5c68..5e8f320d86a 100644 --- a/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp +++ b/searchcore/src/tests/proton/common/document_type_inspector/document_type_inspector_test.cpp @@ -11,14 +11,14 @@ template <class Type> void addFields(Type &type, bool fieldF3IsString, bool hasFieldF4, bool hasFieldF5) { - type.addField(Field("f1", 1, *DataType::STRING, true)); - type.addField(Field("f2", 2, *DataType::STRING, true)); - type.addField(Field("f3", 3, fieldF3IsString ? *DataType::STRING : *DataType::INT, true)); + type.addField(Field("f1", 1, *DataType::STRING)); + type.addField(Field("f2", 2, *DataType::STRING)); + type.addField(Field("f3", 3, fieldF3IsString ? *DataType::STRING : *DataType::INT)); if (hasFieldF4) { - type.addField(Field("f4", 4, *DataType::STRING, true)); + type.addField(Field("f4", 4, *DataType::STRING)); } if (hasFieldF5) { - type.addField(Field("f5", 5, *DataType::STRING, true)); + type.addField(Field("f5", 5, *DataType::STRING)); } } @@ -44,9 +44,9 @@ DocumentTypeFixture::DocumentTypeFixture(bool fieldF3IsString, bool hasFieldF4, addFields(_documentType, fieldF3IsString, hasFieldF4, hasFieldF5); if (hasStruct) { addFields(_structFieldType, fieldF3IsString, hasFieldF4, hasFieldF5); - _documentType.addField(Field("sarray", 11, _structArrayFieldType, true)); - _documentType.addField(Field("smap", 12, _structMapFieldType, true)); - _documentType.addField(Field("map", 13, _mapFieldType, true)); + _documentType.addField(Field("sarray", 11, _structArrayFieldType)); + _documentType.addField(Field("smap", 12, _structMapFieldType)); + _documentType.addField(Field("map", 13, _mapFieldType)); } } @@ -57,7 +57,7 @@ struct Fixture DocumentTypeFixture _oldDocType; DocumentTypeFixture _newDocType; DocumentTypeInspector _inspector; - Fixture(bool hasStruct = true, bool mapKeyIsByte = false) + explicit Fixture(bool hasStruct = true, bool mapKeyIsByte = false) : _oldDocType(true, true, false, hasStruct, mapKeyIsByte), _newDocType(false, false, true, true, false), _inspector(_oldDocType._documentType, _newDocType._documentType) diff --git a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp index abe326425c3..ed4c8938aa1 100644 --- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp +++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp @@ -326,8 +326,8 @@ const DocumentType &getDocType() { static DocumentType::UP doc_type; if (!doc_type) { doc_type = std::make_unique<DocumentType>("foo", 42); - doc_type->addField(Field("header", 43, *DataType::STRING, true)); - doc_type->addField(Field("body", 44, *DataType::STRING, false)); + doc_type->addField(Field("header", 43, *DataType::STRING)); + doc_type->addField(Field("body", 44, *DataType::STRING)); } return *doc_type; } @@ -336,12 +336,12 @@ const DocumentType &getAttrDocType() { static DocumentType::UP doc_type; if (!doc_type) { doc_type = std::make_unique<DocumentType>("foo", 42); - doc_type->addField(Field("header", 43, *DataType::STRING, true)); - doc_type->addField(Field("body", 44, *DataType::STRING, false)); - doc_type->addField(Field("aa", 45, *DataType::INT, false)); - doc_type->addField(Field("ab", 46, *DataType::INT, false)); - doc_type->addField(Field("dd", 47, *DataType::DOUBLE, false)); - doc_type->addField(Field("ss", 48, *DataType::STRING, false)); + doc_type->addField(Field("header", 43, *DataType::STRING)); + doc_type->addField(Field("body", 44, *DataType::STRING)); + doc_type->addField(Field("aa", 45, *DataType::INT)); + doc_type->addField(Field("ab", 46, *DataType::INT)); + doc_type->addField(Field("dd", 47, *DataType::DOUBLE)); + doc_type->addField(Field("ss", 48, *DataType::STRING)); } return *doc_type; } diff --git a/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp b/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp index f57c2118363..48b2a269f6b 100644 --- a/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp +++ b/searchcore/src/tests/proton/reference/document_db_reference_resolver/document_db_reference_resolver_test.cpp @@ -150,10 +150,10 @@ struct DocumentModel { } ~DocumentModel(); void initChildDocType() { - childDocType.addField(Field("ref", refDataType, true)); - childDocType.addField(Field("other_ref", refDataType, true)); - childDocType.addField(Field("parent2_ref", refDataType2, true)); - childDocType.addField(Field("parent3_ref", refDataType3, true)); + childDocType.addField(Field("ref", refDataType)); + childDocType.addField(Field("other_ref", refDataType)); + childDocType.addField(Field("parent2_ref", refDataType2)); + childDocType.addField(Field("parent3_ref", refDataType3)); } }; diff --git a/searchcore/src/tests/proton/server/documentretriever_test.cpp b/searchcore/src/tests/proton/server/documentretriever_test.cpp index a5279da52a2..c9fece26655 100644 --- a/searchcore/src/tests/proton/server/documentretriever_test.cpp +++ b/searchcore/src/tests/proton/server/documentretriever_test.cpp @@ -591,9 +591,9 @@ struct Lookup : public IFieldInfo TEST("require that fieldset can figure out their attributeness and rember it") { Lookup lookup; FieldSetAttributeDB fsDB(lookup); - document::Field attr1("attr1", 1, *document::DataType::LONG, true); - document::Field attr2("attr2", 2, *document::DataType::LONG, true); - document::Field not_attr1("not_attr1", 3, *document::DataType::LONG, true); + document::Field attr1("attr1", 1, *document::DataType::LONG); + document::Field attr2("attr2", 2, *document::DataType::LONG); + document::Field not_attr1("not_attr1", 3, *document::DataType::LONG); document::Field::Set allAttr; allAttr.insert(&attr1); EXPECT_TRUE(fsDB.areAllFieldsAttributes(13, allAttr)); diff --git a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp index 55c363a12c1..d3712d8a90f 100644 --- a/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp +++ b/searchsummary/src/tests/docsummary/matched_elements_filter/matched_elements_filter_test.cpp @@ -45,8 +45,8 @@ StructDataType::UP make_struct_elem_type() { auto result = std::make_unique<StructDataType>("elem"); - result->addField(Field("name", *DataType::STRING, true)); - result->addField(Field("weight", *DataType::INT, true)); + result->addField(Field("name", *DataType::STRING)); + result->addField(Field("weight", *DataType::INT)); return result; } @@ -87,8 +87,8 @@ public: _array_type(*_elem_type), _map_type(*DataType::STRING, *_elem_type) { - _doc_type.addField(Field("array_in_doc", _array_type, true)); - _doc_type.addField(Field("map_in_doc", _map_type, true)); + _doc_type.addField(Field("array_in_doc", _array_type)); + _doc_type.addField(Field("map_in_doc", _map_type)); auto* result_class = _config.AddResultClass("test", class_id); EXPECT_TRUE(result_class->AddConfigEntry("array", ResType::RES_JSONSTRING)); @@ -96,7 +96,7 @@ public: EXPECT_TRUE(result_class->AddConfigEntry("map2", ResType::RES_JSONSTRING)); _config.CreateEnumMaps(); } - ~DocsumStore() {} + ~DocsumStore(); const ResultConfig& get_config() const { return _config; } const ResultClass* get_class() const { return _config.LookupResultClass(class_id); } search::docsummary::DocsumStoreValue getMappedDocsum() { @@ -130,6 +130,8 @@ public: } }; +DocsumStore::~DocsumStore() = default; + class AttributeContext : public IAttributeContext { private: AttributeVector::SP _map_value_name; @@ -141,7 +143,7 @@ public: _map2_key(AttributeFactory::createAttribute("map2.key", Config(BasicType::STRING, CollectionType::ARRAY))), _array_weight(AttributeFactory::createAttribute("array.weight", Config(BasicType::INT32, CollectionType::ARRAY))) {} - ~AttributeContext() {} + ~AttributeContext() override; const IAttributeVector* getAttribute(const string&) const override { abort(); } const IAttributeVector* getAttributeStableEnum(const string&) const override { abort(); } void getAttributeList(std::vector<const IAttributeVector*>& list) const override { @@ -153,6 +155,8 @@ public: void asyncForAttribute(const vespalib::string&, std::unique_ptr<search::attribute::IAttributeFunctor>) const override { abort(); } }; +AttributeContext::~AttributeContext() = default; + class StateCallback : public GetDocsumsStateCallback { private: std::string _field_name; @@ -164,7 +168,7 @@ public: _matching_elements(matching_elements) { } - ~StateCallback() {} + ~StateCallback() override; void FillSummaryFeatures(GetDocsumsState*, IDocsumEnvironment*) override {} void FillRankFeatures(GetDocsumsState*, IDocsumEnvironment*) override {} std::unique_ptr<MatchingElements> fill_matching_elements(const MatchingElementsFields&) override { @@ -174,6 +178,8 @@ public: } }; +StateCallback::~StateCallback() = default; + class MatchedElementsFilterTest : public ::testing::Test { private: DocsumStore _doc_store; @@ -201,7 +207,7 @@ public: _fields(std::make_shared<MatchingElementsFields>()) { } - ~MatchedElementsFilterTest() {} + ~MatchedElementsFilterTest(); std::unique_ptr<IDocsumFieldWriter> make_field_writer(const std::string& input_field_name) { int input_field_enum = _doc_store.get_config().GetFieldNameEnum().Lookup(input_field_name.c_str()); return MatchedElementsFilterDFW::create(input_field_name, input_field_enum, @@ -215,6 +221,8 @@ public: const MatchingElementsFields& fields() const { return *_fields; } }; +MatchedElementsFilterTest::~MatchedElementsFilterTest() = default; + TEST_F(MatchedElementsFilterTest, filters_elements_in_array_field_value) { expect_filtered("array", {}, "[]"); diff --git a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp index 7d8bd2a7c22..f0518f378d1 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/searchdatatype.cpp @@ -17,13 +17,13 @@ PrimitiveDataType STRING_OBJ(DataType::T_STRING); StructDataType URI_OBJ("url"); const StructDataType *setUpUriType() { - URI_OBJ.addField(Field("all", STRING_OBJ, true)); - URI_OBJ.addField(Field("scheme", STRING_OBJ, true)); - URI_OBJ.addField(Field("host", STRING_OBJ, true)); - URI_OBJ.addField(Field("port", STRING_OBJ, true)); - URI_OBJ.addField(Field("path", STRING_OBJ, true)); - URI_OBJ.addField(Field("query", STRING_OBJ, true)); - URI_OBJ.addField(Field("fragment", STRING_OBJ, true)); + URI_OBJ.addField(Field("all", STRING_OBJ)); + URI_OBJ.addField(Field("scheme", STRING_OBJ)); + URI_OBJ.addField(Field("host", STRING_OBJ)); + URI_OBJ.addField(Field("port", STRING_OBJ)); + URI_OBJ.addField(Field("path", STRING_OBJ)); + URI_OBJ.addField(Field("query", STRING_OBJ)); + URI_OBJ.addField(Field("fragment", STRING_OBJ)); return &URI_OBJ; } } // namespace diff --git a/streamingvisitors/src/tests/matching_elements_filler/matching_elements_filler_test.cpp b/streamingvisitors/src/tests/matching_elements_filler/matching_elements_filler_test.cpp index b40e045f8b0..d14a792a8d1 100644 --- a/streamingvisitors/src/tests/matching_elements_filler/matching_elements_filler_test.cpp +++ b/streamingvisitors/src/tests/matching_elements_filler/matching_elements_filler_test.cpp @@ -143,15 +143,15 @@ struct MyDocType { }; MyDocType::MyDocType() - : _name_field("name", 1, *DataType::STRING, true), - _weight_field("weight", 2, *DataType::INT, true), + : _name_field("name", 1, *DataType::STRING), + _weight_field("weight", 2, *DataType::INT), _elem_type(make_elem_type(_name_field, _weight_field)), _elem_array_type(_elem_type), _elem_map_type(*DataType::STRING, _elem_type), _str_int_map_type(*DataType::STRING, *DataType::INT), - _elem_array_field("elem_array", 3, _elem_array_type, true), - _elem_map_field("elem_map", 4, _elem_map_type, true), - _str_int_map_field("str_int_map", _str_int_map_type, true), + _elem_array_field("elem_array", 3, _elem_array_type), + _elem_map_field("elem_map", 4, _elem_map_type), + _str_int_map_field("str_int_map", _str_int_map_type), _document_type("test") { _document_type.addField(_elem_array_field); diff --git a/vsm/src/tests/docsum/docsum.cpp b/vsm/src/tests/docsum/docsum.cpp index 3333b8d7718..fa75e6eefed 100644 --- a/vsm/src/tests/docsum/docsum.cpp +++ b/vsm/src/tests/docsum/docsum.cpp @@ -177,8 +177,8 @@ DocsumTest::testSlimeFieldWriter() } { // struct field value StructDataType subType("substruct"); - Field fd("d", 0, *DataType::STRING, true); - Field fe("e", 1, *DataType::STRING, true); + Field fd("d", 0, *DataType::STRING); + Field fe("e", 1, *DataType::STRING); subType.addField(fd); subType.addField(fe); StructFieldValue subValue(subType); @@ -186,9 +186,9 @@ DocsumTest::testSlimeFieldWriter() subValue.setValue(fe, StringFieldValue("qux")); StructDataType type("struct"); - Field fa("a", 0, *DataType::STRING, true); - Field fb("b", 1, *DataType::STRING, true); - Field fc("c", 2, subType, true); + Field fa("a", 0, *DataType::STRING); + Field fb("b", 1, *DataType::STRING); + Field fc("c", 2, subType); type.addField(fa); type.addField(fb); type.addField(fc); @@ -241,8 +241,8 @@ DocsumTest::requireThatSlimeFieldWriterHandlesMap() } { // map<string, struct> StructDataType structType("struct"); - Field fa("a", 0, *DataType::STRING, true); - Field fb("b", 1, *DataType::STRING, true); + Field fa("a", 0, *DataType::STRING); + Field fb("b", 1, *DataType::STRING); structType.addField(fa); structType.addField(fb); StructFieldValue structValue(structType); diff --git a/vsm/src/tests/document/document.cpp b/vsm/src/tests/document/document.cpp index b8175a01547..bb18c4b0a91 100644 --- a/vsm/src/tests/document/document.cpp +++ b/vsm/src/tests/document/document.cpp @@ -24,8 +24,8 @@ DocumentTest::testStorageDocument() { DocumentType dt("testdoc", 0); - Field fa("a", 0, *DataType::STRING, true); - Field fb("b", 1, *DataType::STRING, true); + Field fa("a", 0, *DataType::STRING); + Field fb("b", 1, *DataType::STRING); dt.addField(fa); dt.addField(fb); |