diff options
20 files changed, 67 insertions, 349 deletions
diff --git a/document/abi-spec.json b/document/abi-spec.json index 7a0637db1aa..9740dfea996 100644 --- a/document/abi-spec.json +++ b/document/abi-spec.json @@ -3376,22 +3376,6 @@ ], "fields": [] }, - "com.yahoo.document.fieldset.BodyFields": { - "superClass": "java.lang.Object", - "interfaces": [ - "com.yahoo.document.fieldset.FieldSet" - ], - "attributes": [ - "public" - ], - "methods": [ - "public void <init>()", - "public boolean contains(com.yahoo.document.fieldset.FieldSet)", - "public com.yahoo.document.fieldset.FieldSet clone()", - "public bridge synthetic java.lang.Object clone()" - ], - "fields": [] - }, "com.yahoo.document.fieldset.DocIdOnly": { "superClass": "java.lang.Object", "interfaces": [ @@ -3454,22 +3438,6 @@ ], "fields": [] }, - "com.yahoo.document.fieldset.HeaderFields": { - "superClass": "java.lang.Object", - "interfaces": [ - "com.yahoo.document.fieldset.FieldSet" - ], - "attributes": [ - "public" - ], - "methods": [ - "public void <init>()", - "public boolean contains(com.yahoo.document.fieldset.FieldSet)", - "public com.yahoo.document.fieldset.FieldSet clone()", - "public bridge synthetic java.lang.Object clone()" - ], - "fields": [] - }, "com.yahoo.document.fieldset.NoFields": { "superClass": "java.lang.Object", "interfaces": [ diff --git a/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java b/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java deleted file mode 100644 index 1fd0d1129fa..00000000000 --- a/document/src/main/java/com/yahoo/document/fieldset/BodyFields.java +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.document.fieldset; - -import com.yahoo.document.Field; - -/** - * @deprecated do not use - */ -@Deprecated // TODO: Remove on Vespa 8 -public class BodyFields implements FieldSet { - @Override - public boolean contains(FieldSet o) { - if (o instanceof BodyFields || o instanceof DocIdOnly || o instanceof NoFields) { - return true; - } - - if (o instanceof Field) { - return !((Field) o).isHeader(); - } - - if (o instanceof FieldCollection) { - FieldCollection c = (FieldCollection)o; - for (Field f : c) { - if (f.isHeader()) { - return false; - } - } - - return true; - } else { - return false; - } - } - - @Override - public FieldSet clone() throws CloneNotSupportedException { - return new BodyFields(); - } - -} diff --git a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java index a7035439903..862a374f182 100644 --- a/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java +++ b/document/src/main/java/com/yahoo/document/fieldset/FieldSetRepo.java @@ -7,27 +7,27 @@ import com.yahoo.document.DocumentTypeManager; import com.yahoo.document.Field; import com.yahoo.document.datatypes.FieldValue; -import java.lang.String; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; /** * TODO: Move to document and implement */ public class FieldSetRepo { - @SuppressWarnings("deprecation") FieldSet parseSpecialValues(String name) { if (name.equals("[id]")) { return new DocIdOnly(); } else if (name.equals("[all]")) { return (new AllFields()); } else if (name.equals("[none]")) { return (new NoFields()); } - else if (name.equals("[header]")) { return (new HeaderFields()); } else if (name.equals("[docid]")) { return (new DocIdOnly()); } - else if (name.equals("[body]")) { return (new BodyFields()); } else { throw new IllegalArgumentException( "The only special names (enclosed in '[]') allowed are " + - "id, all, none, header, body"); + "id, all, none"); } } @@ -40,7 +40,7 @@ public class FieldSetRepo { StringTokenizer tokenizer = new StringTokenizer(fieldNames, ","); FieldCollection collection = new FieldCollection(type); - for (; tokenizer.hasMoreTokens(); ) { + while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken(); Field f = type.getField(token); if (f == null) { @@ -74,14 +74,13 @@ public class FieldSetRepo { return parseFieldCollection(docMan, type, fields); } - @SuppressWarnings("deprecation") public String serialize(FieldSet fieldSet) { if (fieldSet instanceof Field) { return ((Field)fieldSet).getName(); } else if (fieldSet instanceof FieldCollection) { FieldCollection c = ((FieldCollection)fieldSet); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); for (Field f : c) { if (buffer.length() == 0) { buffer.append(c.getDocumentType().getName()); @@ -97,10 +96,6 @@ public class FieldSetRepo { return "[all]"; } else if (fieldSet instanceof NoFields) { return "[none]"; - } else if (fieldSet instanceof BodyFields) { - return "[body]"; - } else if (fieldSet instanceof HeaderFields) { - return "[header]"; } else if (fieldSet instanceof DocIdOnly) { return "[docid]"; } else { @@ -127,7 +122,7 @@ public class FieldSetRepo { * Strips all fields not wanted by the given field set from the document. */ public void stripFields(Document target, FieldSet fieldSet) { - List<Field> toStrip = new ArrayList<Field>(); + List<Field> toStrip = new ArrayList<>(); for (Iterator<Map.Entry<Field, FieldValue>> i = target.iterator(); i.hasNext();) { Map.Entry<Field, FieldValue> v = i.next(); diff --git a/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java b/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java deleted file mode 100644 index 220de1ab416..00000000000 --- a/document/src/main/java/com/yahoo/document/fieldset/HeaderFields.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.document.fieldset; - -import com.yahoo.document.Field; - -/** - * @deprecated do not use - */ -@Deprecated // TODO: Remove on Vespa 8 -public class HeaderFields implements FieldSet { - - @Override - public boolean contains(FieldSet o) { - if (o instanceof HeaderFields || o instanceof DocIdOnly || o instanceof NoFields) { - return true; - } - - if (o instanceof Field) { - return ((Field)o).isHeader(); - } - - if (o instanceof FieldCollection) { - FieldCollection c = (FieldCollection)o; - for (Field f : c) { - if (!f.isHeader()) { - return false; - } - } - - return true; - } else { - return false; - } - } - - @Override - public FieldSet clone() throws CloneNotSupportedException { - return new HeaderFields(); - } - -} diff --git a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java index 404b069277b..5219285fbba 100644 --- a/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java +++ b/document/src/test/java/com/yahoo/document/fieldset/FieldSetTestCase.java @@ -13,6 +13,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; /** * Test for field sets @@ -20,25 +21,19 @@ import static org.junit.Assert.assertTrue; public class FieldSetTestCase extends DocumentTestCaseBase { @Test - @SuppressWarnings("deprecation") public void testClone() throws Exception { assertTrue(new AllFields().clone() instanceof AllFields); assertTrue(new NoFields().clone() instanceof NoFields); - assertTrue(new HeaderFields().clone() instanceof HeaderFields); - assertTrue(new BodyFields().clone() instanceof BodyFields); assertTrue(new DocIdOnly().clone() instanceof DocIdOnly); } @Test - @SuppressWarnings("deprecation") public void testParsing() { FieldSetRepo repo = new FieldSetRepo(); assertTrue(repo.parse(docMan, "[all]") instanceof AllFields); assertTrue(repo.parse(docMan, "[none]") instanceof NoFields); assertTrue(repo.parse(docMan, "[id]") instanceof DocIdOnly); - assertTrue(repo.parse(docMan, "[header]") instanceof HeaderFields); - assertTrue(repo.parse(docMan, "[body]") instanceof BodyFields); FieldCollection collection = (FieldCollection)repo.parse(docMan, "testdoc:stringattr,intattr"); assertEquals(2, collection.size()); @@ -61,50 +56,37 @@ public class FieldSetTestCase extends DocumentTestCaseBase { void assertError(String str) { try { new FieldSetRepo().parse(docMan, str); - assertTrue(false); + fail(); } catch (Exception e) { } } @Test - @SuppressWarnings("deprecation") public void testContains() throws Exception { - Field headerField = testDocType.getField("intattr"); - Field bodyField = testDocType.getField("rawattr"); - - assertFalse(headerField.contains(testDocType.getField("byteattr"))); - assertTrue(headerField.contains(testDocType.getField("intattr"))); - assertFalse(headerField.contains(bodyField)); - assertTrue(headerField.contains(new DocIdOnly())); - assertTrue(headerField.contains(new NoFields())); - assertFalse(headerField.contains(new AllFields())); - assertFalse(headerField.contains(new HeaderFields())); - assertFalse(headerField.contains(new BodyFields())); - - assertFalse(new NoFields().contains(headerField)); + Field intAttr = testDocType.getField("intattr"); + Field rawAttr = testDocType.getField("rawattr"); + + assertFalse(intAttr.contains(testDocType.getField("byteattr"))); + assertTrue(intAttr.contains(testDocType.getField("intattr"))); + assertFalse(intAttr.contains(rawAttr)); + assertTrue(intAttr.contains(new DocIdOnly())); + assertTrue(intAttr.contains(new NoFields())); + assertFalse(intAttr.contains(new AllFields())); + + assertFalse(new NoFields().contains(intAttr)); assertFalse(new NoFields().contains(new AllFields())); assertFalse(new NoFields().contains(new DocIdOnly())); - assertTrue(new AllFields().contains(new HeaderFields())); - assertTrue(new AllFields().contains(headerField)); - assertTrue(new AllFields().contains(bodyField)); - assertTrue(new AllFields().contains(new BodyFields())); + assertTrue(new AllFields().contains(intAttr)); + assertTrue(new AllFields().contains(rawAttr)); assertTrue(new AllFields().contains(new DocIdOnly())); assertTrue(new AllFields().contains(new NoFields())); assertTrue(new AllFields().contains(new AllFields())); assertTrue(new DocIdOnly().contains(new NoFields())); assertTrue(new DocIdOnly().contains(new DocIdOnly())); - assertFalse(new DocIdOnly().contains(headerField)); - - assertTrue(new HeaderFields().contains(headerField)); - assertTrue(new HeaderFields().contains(bodyField)); - assertTrue(new HeaderFields().contains(new DocIdOnly())); - assertTrue(new HeaderFields().contains(new NoFields())); + assertFalse(new DocIdOnly().contains(intAttr)); - assertNotContains("[body]", "testdoc:rawattr"); - assertContains("[header]", "testdoc:intattr"); - assertContains("[header]", "testdoc:rawattr"); assertContains("testdoc:rawattr,intattr", "testdoc:intattr"); assertNotContains("testdoc:intattr", "testdoc:rawattr,intattr"); assertContains("testdoc:intattr,rawattr", "testdoc:rawattr,intattr"); @@ -116,17 +98,17 @@ public class FieldSetTestCase extends DocumentTestCaseBase { } String stringifyFields(Document doc) { - String retVal = ""; + StringBuilder retVal = new StringBuilder(); for (Iterator<Map.Entry<Field, FieldValue>> i = doc.iterator(); i.hasNext(); ) { Map.Entry<Field, FieldValue> v = i.next(); if (retVal.length() > 0) { - retVal += ","; + retVal.append(","); } - retVal += v.getKey().getName() + ":" + v.getValue().toString(); + retVal.append(v.getKey().getName()).append(":").append(v.getValue().toString()); } - return retVal; + return retVal.toString(); } String doCopyFields(Document source, String fieldSet) { @@ -141,8 +123,6 @@ public class FieldSetTestCase extends DocumentTestCaseBase { Document doc = getTestDocument(); doc.removeFieldValue("rawattr"); - assertEquals("", doCopyFields(doc, "[body]")); - assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doCopyFields(doc, "[header]")); assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doCopyFields(doc, "[all]")); assertEquals("floatattr:3.56,byteattr:30", doCopyFields(doc, "testdoc:floatattr,byteattr")); } @@ -159,8 +139,6 @@ public class FieldSetTestCase extends DocumentTestCaseBase { Document doc = getTestDocument(); doc.removeFieldValue("rawattr"); - assertEquals("", doStripFields(doc, "[body]")); - assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doStripFields(doc, "[header]")); assertEquals("floatattr:3.56,stringattr:tjohei,intattr:50,byteattr:30", doStripFields(doc, "[all]")); assertEquals("floatattr:3.56,byteattr:30", doStripFields(doc, "testdoc:floatattr,byteattr")); } @@ -171,9 +149,7 @@ public class FieldSetTestCase extends DocumentTestCaseBase { { "[all]", "[none]", - "[header]", "[docid]", - "[body]", "testdoc:rawattr", "testdoc:rawattr,intattr" }; diff --git a/document/src/tests/fieldsettest.cpp b/document/src/tests/fieldsettest.cpp index b0cad61b72a..f77bd9bfb09 100644 --- a/document/src/tests/fieldsettest.cpp +++ b/document/src/tests/fieldsettest.cpp @@ -43,8 +43,6 @@ TEST_F(FieldSetTest, testParsing) (void) dynamic_cast<AllFields&>(*repo.parse(docRepo, "[all]")); (void) dynamic_cast<NoFields&>(*repo.parse(docRepo, "[none]")); (void) dynamic_cast<DocIdOnly&>(*repo.parse(docRepo, "[id]")); - (void) dynamic_cast<HeaderFields&>(*repo.parse(docRepo, "[header]")); - (void) dynamic_cast<BodyFields&>(*repo.parse(docRepo, "[body]")); FieldSet::UP set = repo.parse(docRepo, "testdoctype1:headerval,content"); FieldCollection& coll = dynamic_cast<FieldCollection&>(*set); @@ -88,13 +86,10 @@ TEST_F(FieldSetTest, testContains) const DocumentType& type = *repo.getDocumentType("testdoctype1"); const Field& headerField = type.getField("headerval"); - const Field& bodyField = type.getField("content"); NoFields none; AllFields all; DocIdOnly id; - HeaderFields h; - BodyFields b; EXPECT_EQ(false, headerField.contains(type.getField("headerlongval"))); EXPECT_EQ(true, headerField.contains(headerField)); @@ -109,17 +104,7 @@ TEST_F(FieldSetTest, testContains) EXPECT_EQ(false, none.contains(id)); EXPECT_EQ(true, id.contains(none)); - EXPECT_EQ(true, h.contains(headerField)); - EXPECT_EQ(false, h.contains(bodyField)); - - EXPECT_EQ(false, b.contains(headerField)); - EXPECT_EQ(true, b.contains(bodyField)); - FieldSetRepo r; - EXPECT_EQ(true, checkContains(r, repo, "[body]", - "testdoctype1:content")); - EXPECT_EQ(false, checkContains(r, repo, "[header]", - "testdoctype1:content")); EXPECT_EQ(true, checkContains(r, repo, "testdoctype1:content,headerval", "testdoctype1:content")); @@ -209,13 +194,8 @@ TEST_F(FieldSetTest, testCopyDocumentFields) const DocumentTypeRepo& repo = testDocMan.getTypeRepo(); Document::UP src(createTestDocument(testDocMan)); - EXPECT_EQ(std::string("content: megafoo megabar\n"), - doCopyFields(*src, repo, "[body]")); EXPECT_EQ(std::string(""), doCopyFields(*src, repo, "[none]")); - EXPECT_EQ(std::string("headerval: 5678\n" - "hstringval: hello fantastic world\n"), - doCopyFields(*src, repo, "[header]")); EXPECT_EQ(std::string("content: megafoo megabar\n" "headerval: 5678\n" "hstringval: hello fantastic world\n"), @@ -228,7 +208,7 @@ TEST_F(FieldSetTest, testCopyDocumentFields) Document dest(src->getType(), DocumentId("id:ns:" + src->getType().getName() + "::bar")); dest.setValue(dest.getField("content"), StringFieldValue("overwriteme")); EXPECT_EQ(std::string("content: megafoo megabar\n"), - doCopyFields(*src, repo, "[body]", &dest)); + doCopyFields(*src, repo, src->getType().getName() + ":content", &dest)); } } @@ -263,8 +243,6 @@ TEST_F(FieldSetTest, testDocumentSubsetCopy) const char* fieldSets[] = { "[all]", "[none]", - "[header]", - "[body]", "testdoctype1:hstringval,content" }; for (size_t i = 0; i < sizeof(fieldSets) / sizeof(fieldSets[0]); ++i) { @@ -281,9 +259,7 @@ TEST_F(FieldSetTest, testSerialize) const char* fieldSets[] = { "[all]", "[none]", - "[header]", "[docid]", - "[body]", "testdoctype1:content", "testdoctype1:content,hstringval" }; @@ -301,15 +277,10 @@ TEST_F(FieldSetTest, testStripFields) const DocumentTypeRepo& repo = testDocMan.getTypeRepo(); Document::UP src(createTestDocument(testDocMan)); - EXPECT_EQ(std::string("content: megafoo megabar\n"), - doStripFields(*src, repo, "[body]")); EXPECT_EQ(std::string(""), doStripFields(*src, repo, "[none]")); EXPECT_EQ(std::string(""), doStripFields(*src, repo, "[id]")); - EXPECT_EQ(std::string("headerval: 5678\n" - "hstringval: hello fantastic world\n"), - doStripFields(*src, repo, "[header]")); EXPECT_EQ(std::string("content: megafoo megabar\n" "headerval: 5678\n" "hstringval: hello fantastic world\n"), diff --git a/document/src/vespa/document/base/field.cpp b/document/src/vespa/document/base/field.cpp index be5d94ce7f0..e85703d203c 100644 --- a/document/src/vespa/document/base/field.cpp +++ b/document/src/vespa/document/base/field.cpp @@ -62,8 +62,6 @@ Field::contains(const FieldSet& fields) const case NONE: case DOCID: return true; - case HEADER: - case BODY: case ALL: return false; } diff --git a/document/src/vespa/document/fieldset/fieldset.h b/document/src/vespa/document/fieldset/fieldset.h index 309a7caf517..6c9acadcf5d 100644 --- a/document/src/vespa/document/fieldset/fieldset.h +++ b/document/src/vespa/document/fieldset/fieldset.h @@ -20,14 +20,12 @@ public: SET, ALL, NONE, - HEADER, // Special collection used by VDS - BODY, // Special collection used by VDS DOCID }; typedef std::unique_ptr<FieldSet> UP; - virtual ~FieldSet() {}; + virtual ~FieldSet() = default; /** * @return Return true if all the fields in "fields" are contained in @@ -54,9 +52,7 @@ public: * needs to only contain fields matching a given field set and can * readily be modified in-place. */ - static void copyFields(Document& dest, - const Document& src, - const FieldSet& fields); + static void copyFields(Document& dest, const Document& src, const FieldSet& fields); /** * Creates a copy of document src containing only the fields given by @@ -64,16 +60,13 @@ public: * See comment for copyFields() for performance notes. * @return The new, (partially) copied document instance. */ - static std::unique_ptr<Document> createDocumentSubsetCopy( - const Document& src, - const FieldSet& fields); + static std::unique_ptr<Document> createDocumentSubsetCopy(const Document& src, const FieldSet& fields); /** * Strip all fields _except_ the ones that are contained within the * fieldsToKeep fieldset. Modifies original document in-place. */ - static void stripFields(Document& doc, - const FieldSet& fieldsToKeep); + static void stripFields(Document& doc, const FieldSet& fieldsToKeep); }; } diff --git a/document/src/vespa/document/fieldset/fieldsetrepo.cpp b/document/src/vespa/document/fieldset/fieldsetrepo.cpp index aa14cfc2b80..c7d91ec5175 100644 --- a/document/src/vespa/document/fieldset/fieldsetrepo.cpp +++ b/document/src/vespa/document/fieldset/fieldsetrepo.cpp @@ -22,16 +22,12 @@ parseSpecialValues(vespalib::stringref name) fs.reset(new AllFields()); } else if ((name.size() == 6) && (name[1] == 'n') && (name[2] == 'o') && (name[3] == 'n') && (name[4] == 'e') && (name[5] == ']')) { fs.reset(new NoFields()); - } else if ((name.size() == 8) && (name[1] == 'h') && (name[2] == 'e') && (name[3] == 'a') && (name[4] == 'd') && (name[5] == 'e') && (name[6] == 'r') && (name[7] == ']')) { - fs.reset(new HeaderFields()); } else if ((name.size() == 7) && (name[1] == 'd') && (name[2] == 'o') && (name[3] == 'c') && (name[4] == 'i') && (name[5] == 'd') && (name[6] == ']')) { fs.reset(new DocIdOnly()); - } else if ((name.size() == 6) && (name[1] == 'b') && (name[2] == 'o') && (name[3] == 'd') && (name[4] == 'y') && (name[5] == ']')) { - fs.reset(new BodyFields()); } else { throw vespalib::IllegalArgumentException( "The only special names (enclosed in '[]') allowed are " - "id, all, none, header, body, not '" + name + "'."); + "id, all, none, not '" + name + "'."); } return fs; } @@ -43,8 +39,7 @@ parseFieldCollection(const DocumentTypeRepo& repo, { const DocumentType* typePtr = repo.getDocumentType(docType); if (!typePtr) { - throw vespalib::IllegalArgumentException( - "Unknown document type " + docType); + throw vespalib::IllegalArgumentException("Unknown document type " + docType); } const DocumentType& type(*typePtr); @@ -113,10 +108,6 @@ FieldSetRepo::serialize(const FieldSet& fieldSet) return "[all]"; case FieldSet::NONE: return "[none]"; - case FieldSet::HEADER: - return "[header]"; - case FieldSet::BODY: - return "[body]"; case FieldSet::DOCID: return "[docid]"; default: diff --git a/document/src/vespa/document/fieldset/fieldsets.cpp b/document/src/vespa/document/fieldset/fieldsets.cpp index 1f9ea32273b..1a6cd5e6b84 100644 --- a/document/src/vespa/document/fieldset/fieldsets.cpp +++ b/document/src/vespa/document/fieldset/fieldsets.cpp @@ -6,70 +6,7 @@ namespace document { -bool -HeaderFields::contains(const FieldSet& fields) const -{ - switch (fields.getType()) { - case FIELD: - return static_cast<const Field&>(fields).isHeaderField(); - case SET: - { - const FieldCollection& coll = static_cast<const FieldCollection&>(fields); - for (Field::Set::const_iterator iter = coll.getFields().begin(); - iter != coll.getFields().end(); - ++iter) { - if (!(*iter)->isHeaderField()) { - return false; - } - } - - return true; - } - case NONE: - case DOCID: - case HEADER: - return true; - case BODY: - case ALL: - return false; - } - - return false; -} - -bool -BodyFields::contains(const FieldSet& fields) const -{ - switch (fields.getType()) { - case FIELD: - return !static_cast<const Field&>(fields).isHeaderField(); - case SET: - { - const FieldCollection& coll = static_cast<const FieldCollection&>(fields); - for (Field::Set::const_iterator iter = coll.getFields().begin(); - iter != coll.getFields().end(); - ++iter) { - if ((*iter)->isHeaderField()) { - return false; - } - } - - return true; - } - case NONE: - case DOCID: - case BODY: - return true; - case HEADER: - case ALL: - return false; - } - - return false; -} - -FieldCollection::FieldCollection(const DocumentType& type, - const Field::Set& s) +FieldCollection::FieldCollection(const DocumentType& type, const Field::Set& s) : _set(s), _docType(type) { @@ -104,8 +41,6 @@ FieldCollection::contains(const FieldSet& fields) const case NONE: case DOCID: return true; - case BODY: - case HEADER: case ALL: return false; } @@ -126,9 +61,7 @@ FieldCollection::insert(const Field::Set& c) } void -FieldSet::copyFields(Document& dest, - const Document& src, - const FieldSet& fields) +FieldSet::copyFields(Document& dest, const Document& src, const FieldSet& fields) { if (fields.getType() == ALL) { dest.getFields() = src.getFields(); @@ -146,8 +79,7 @@ FieldSet::copyFields(Document& dest, } Document::UP -FieldSet::createDocumentSubsetCopy(const Document& src, - const FieldSet& fields) +FieldSet::createDocumentSubsetCopy(const Document& src, const FieldSet& fields) { auto ret = std::make_unique<Document>(src.getType(), src.getId()); copyFields(*ret, src, fields); @@ -155,8 +87,7 @@ FieldSet::createDocumentSubsetCopy(const Document& src, } void -FieldSet::stripFields(Document& doc, - const FieldSet& fieldsToKeep) +FieldSet::stripFields(Document& doc, const FieldSet& fieldsToKeep) { if (fieldsToKeep.getType() == ALL) { return; diff --git a/document/src/vespa/document/fieldset/fieldsets.h b/document/src/vespa/document/fieldset/fieldsets.h index 1ff34e2d882..7b8ec6bbff0 100644 --- a/document/src/vespa/document/fieldset/fieldsets.h +++ b/document/src/vespa/document/fieldset/fieldsets.h @@ -10,6 +10,7 @@ class DocumentType; class AllFields final : public FieldSet { public: + static constexpr const char * NAME = "[all]"; bool contains(const FieldSet&) const override { return true; } Type getType() const override { return ALL; } FieldSet* clone() const override { return new AllFields(); } @@ -18,6 +19,7 @@ public: class NoFields final : public FieldSet { public: + static constexpr const char * NAME = "[none]"; bool contains(const FieldSet& f) const override { return f.getType() == NONE; } Type getType() const override { return NONE; } FieldSet* clone() const override { return new NoFields(); } @@ -26,6 +28,7 @@ public: class DocIdOnly final : public FieldSet { public: + static constexpr const char * NAME = "[id]"; bool contains(const FieldSet& fields) const override { return fields.getType() == DOCID || fields.getType() == NONE; } @@ -33,22 +36,6 @@ public: FieldSet* clone() const override { return new DocIdOnly(); } }; -class HeaderFields final : public FieldSet -{ -public: - bool contains(const FieldSet& fields) const override; - Type getType() const override { return HEADER; } - FieldSet* clone() const override { return new HeaderFields(); } -}; - -class BodyFields final : public FieldSet -{ -public: - bool contains(const FieldSet& fields) const override; - Type getType() const override { return BODY; } - FieldSet* clone() const override { return new BodyFields(); } -}; - class FieldCollection : public FieldSet { public: diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java index 61e0c9ba8b3..6a128c8097d 100644 --- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java +++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorParametersTestCase.java @@ -23,7 +23,7 @@ public class VisitorParametersTestCase { params.setRoute("extraterrestrial/highway"); params.setTimeoutMs(1337); params.setMaxPending(111); - params.setFieldSet("[header]"); + params.setFieldSet("[all]"); params.setLoadType(loadType); params.setVisitRemoves(true); params.setVisitInconsistentBuckets(true); @@ -59,7 +59,7 @@ public class VisitorParametersTestCase { assertEquals("extraterrestrial/highway", copy.getRoute().toString()); assertEquals(1337, copy.getTimeoutMs()); assertEquals(111, copy.getMaxPending()); - assertEquals("[header]", copy.getFieldSet()); + assertEquals("[all]", copy.getFieldSet()); assertEquals(loadType, copy.getLoadType()); assertEquals(true, copy.getVisitRemoves()); assertEquals(true, copy.getVisitInconsistentBuckets()); @@ -98,7 +98,7 @@ public class VisitorParametersTestCase { " Visitor library parameters:\n" + " groovy : dudes\n" + " ninja : turtles\n" + - " Field set: [header]\n" + + " Field set: [all]\n" + " Route: extraterrestrial/highway\n" + " Weight: 1.0\n" + " Max firstpass hits: 555\n" + diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java index 9d0011ef05d..017ef39d365 100755 --- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java +++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/test/MessageBusVisitorSessionTestCase.java @@ -712,14 +712,13 @@ public class MessageBusVisitorSessionTestCase { params.setRoute("extraterrestrial/highway"); params.setTimeoutMs(1337); params.setMaxPending(111); - params.setFieldSet("[header]"); + params.setFieldSet("[id]"); params.setLoadType(new LoadType(3, "samnmax", DocumentProtocol.Priority.HIGH_3)); params.setVisitRemoves(true); params.setVisitInconsistentBuckets(true); params.setTraceLevel(9); - MessageBusVisitorSession visitorSession = createVisitorSession( - sender, receiver, executor, params); + MessageBusVisitorSession visitorSession = createVisitorSession(sender, receiver, executor, params); visitorSession.start(); // Process initial task which sends a single CreateVisitor. @@ -735,7 +734,7 @@ public class MessageBusVisitorSessionTestCase { "from timestamp=9001\n" + "to timestamp=10001\n" + "max pending=111\n" + - "fieldset=[header]\n" + + "fieldset=[id]\n" + "visit inconsistent=true\n" + "visit removes=true\n" + "parameters=[\n" + diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp index 036a2b87692..3d15d09814f 100644 --- a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp +++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp @@ -43,8 +43,7 @@ PersistenceProvider::UP getSpi(ConformanceTest::PersistenceFactory &factory, enum SELECTION_FIELDS { METADATA_ONLY = 0, - FIELDS_HEADER = 1, - FIELDS_BODY = 2 + ALL_FIELDS = 1 }; CreateIteratorResult @@ -52,13 +51,11 @@ createIterator(PersistenceProvider& spi, const Bucket& b, const Selection& sel, IncludedVersions versions = NEWEST_DOCUMENT_ONLY, - int fields = FIELDS_HEADER | FIELDS_BODY) + int fields = ALL_FIELDS) { document::FieldSet::UP fieldSet; - if (fields & FIELDS_BODY) { + if (fields & ALL_FIELDS) { fieldSet.reset(new document::AllFields()); - } else if (fields & FIELDS_HEADER) { - fieldSet.reset(new document::HeaderFields()); } else { fieldSet.reset(new document::DocIdOnly()); } 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 9342ddd4b8a..b76d433337b 100644 --- a/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp +++ b/searchcore/src/tests/proton/document_iterator/document_iterator_test.cpp @@ -748,7 +748,9 @@ TEST("require that document selection and timestamp range works together") { } TEST("require that fieldset limits fields returned") { - DocumentIterator itr(bucket(5), document::HeaderFields(), selectAll(), newestV(), -1, false); + document::FieldCollection limited(getDocType()); + limited.insert(getDocType().getField("header")); + DocumentIterator itr(bucket(5), limited, selectAll(), newestV(), -1, false); itr.add(doc_with_fields("id:ns:foo::xxx1", Timestamp(1), bucket(5))); IterateResult res = itr.iterate(largeNum); EXPECT_TRUE(res.isCompleted()); diff --git a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp index bf0083311fb..3407b77d698 100644 --- a/storage/src/tests/persistence/filestorage/filestormanagertest.cpp +++ b/storage/src/tests/persistence/filestorage/filestormanagertest.cpp @@ -1245,8 +1245,7 @@ createIterator(DummyStorageLink& link, const document::BucketId& bucketId, const std::string& docSel, framework::MicroSecTime fromTime = framework::MicroSecTime(0), - framework::MicroSecTime toTime = framework::MicroSecTime::max(), - bool headerOnly = false) + framework::MicroSecTime toTime = framework::MicroSecTime::max()) { spi::Bucket bucket(makeSpiBucket(bucketId)); @@ -1256,7 +1255,7 @@ createIterator(DummyStorageLink& link, selection.setToTimestamp(spi::Timestamp(toTime.getTime())); auto createIterCmd = std::make_shared<CreateIteratorCommand>( makeDocumentBucket(bucket), selection, - headerOnly ? "[header]" : "[all]", + "[all]", spi::NEWEST_DOCUMENT_ONLY); link.sendDown(createIterCmd); link.waitForMessages(1, FileStorManagerTest::LONG_WAITTIME); @@ -1358,7 +1357,7 @@ TEST_F(FileStorManagerTest, visiting) { } EXPECT_EQ(27u, totalDocs); } - // Visit bucket with min and max timestamps set, headers only + // Visit bucket with min and max timestamps set { document::BucketId bucket(16, 2); spi::IteratorId iterId( @@ -1366,8 +1365,7 @@ TEST_F(FileStorManagerTest, visiting) { ids[1], "", framework::MicroSecTime(30), - framework::MicroSecTime(40), - true)); + framework::MicroSecTime(40))); uint32_t totalDocs = 0; while (true) { auto cmd = std::make_shared<GetIterCommand>(makeDocumentBucket(ids[1]), iterId, 16*1024); diff --git a/storage/src/tests/persistence/persistencetestutils.cpp b/storage/src/tests/persistence/persistencetestutils.cpp index cf8bf71708d..504767e68c7 100644 --- a/storage/src/tests/persistence/persistencetestutils.cpp +++ b/storage/src/tests/persistence/persistencetestutils.cpp @@ -219,15 +219,11 @@ spi::GetResult PersistenceTestUtils::doGetOnDisk( uint16_t disk, const document::BucketId& bucketId, - const document::DocumentId& docId, - bool headerOnly) + const document::DocumentId& docId) { - document::FieldSet::UP fieldSet(new document::AllFields()); + auto fieldSet = std::make_unique<document::AllFields>(); spi::Context context(defaultLoadType, spi::Priority(0), spi::Trace::TraceLevel(0)); - if (headerOnly) { - fieldSet.reset(new document::HeaderFields()); - } return getPersistenceProvider().get(makeSpiBucket( bucketId, spi::PartitionId(disk)), *fieldSet, docId, context); } diff --git a/storage/src/tests/persistence/persistencetestutils.h b/storage/src/tests/persistence/persistencetestutils.h index cdd08d42565..6cee3b79ab8 100644 --- a/storage/src/tests/persistence/persistencetestutils.h +++ b/storage/src/tests/persistence/persistencetestutils.h @@ -190,14 +190,12 @@ public: spi::GetResult doGetOnDisk( uint16_t disk, const document::BucketId& bucketId, - const document::DocumentId& docId, - bool headerOnly); + const document::DocumentId& docId); spi::GetResult doGet( const document::BucketId& bucketId, - const document::DocumentId& docId, - bool headerOnly) - { return doGetOnDisk(0, bucketId, docId, headerOnly); } + const document::DocumentId& docId) + { return doGetOnDisk(0, bucketId, docId); } std::shared_ptr<document::DocumentUpdate> createBodyUpdate( const document::DocumentId& id, diff --git a/storage/src/vespa/storage/persistence/bucketprocessor.cpp b/storage/src/vespa/storage/persistence/bucketprocessor.cpp index d6c549ef6f4..c88b08612d7 100644 --- a/storage/src/vespa/storage/persistence/bucketprocessor.cpp +++ b/storage/src/vespa/storage/persistence/bucketprocessor.cpp @@ -48,7 +48,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider, = spi::Selection(spi::DocumentSelection(documentSelection)); spi::CreateIteratorResult createIterResult(provider.createIterator( bucket, - document::HeaderFields(), + document::AllFields(), sel, versions, context)); @@ -64,8 +64,7 @@ BucketProcessor::iterateAll(spi::PersistenceProvider& provider, IteratorGuard iteratorGuard(provider, iteratorId, context); while (true) { - spi::IterateResult result( - provider.iterate(iteratorId, UINT64_MAX, context)); + spi::IterateResult result(provider.iterate(iteratorId, UINT64_MAX, context)); if (result.getErrorCode() != spi::Result::ErrorType::NONE) { vespalib::asciistream ss; ss << "Failed: " << result.getErrorMessage(); diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java index 50b499b8df2..f52be3d47dd 100644 --- a/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java +++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/CommandLineOptionsTest.java @@ -92,7 +92,7 @@ public class CommandLineOptionsTest { public void testInvalidCombination3() { exception.expect(IllegalArgumentException.class); exception.expectMessage("Field set option can not be used in combination with print ids option."); - getParsedOptions("--printids", "--fieldset", "[header]"); + getParsedOptions("--printids", "--fieldset", "[all]"); } @Test |