diff options
Diffstat (limited to 'searchlib/src/vespa')
45 files changed, 215 insertions, 26 deletions
diff --git a/searchlib/src/vespa/searchlib/aggregation/group.h b/searchlib/src/vespa/searchlib/aggregation/group.h index 4b06bcd8cae..202c5085133 100644 --- a/searchlib/src/vespa/searchlib/aggregation/group.h +++ b/searchlib/src/vespa/searchlib/aggregation/group.h @@ -39,7 +39,7 @@ public: using UP = std::unique_ptr<Group>; typedef Group * ChildP; typedef ChildP * GroupList; - struct GroupEqual : public std::binary_function<ChildP, ChildP, bool> { + struct GroupEqual { GroupEqual(const GroupList * v) : _v(v) { } bool operator()(uint32_t a, uint32_t b) { return (*_v)[a]->getId().cmpFast((*_v)[b]->getId()) == 0; } bool operator()(const Group & a, uint32_t b) { return a.getId().cmpFast((*_v)[b]->getId()) == 0; } diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp index 213bbfc3493..906400f50a5 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp @@ -235,6 +235,8 @@ public: set_allow_termwise_eval(true); } + ~LocationPreFilterBlueprint(); + bool should_use() const { return _should_use; } SearchIterator::UP @@ -258,6 +260,8 @@ public: } }; +LocationPreFilterBlueprint::~LocationPreFilterBlueprint() = default; + //----------------------------------------------------------------------------- class LocationPostFilterBlueprint : public ComplexLeafBlueprint @@ -282,6 +286,8 @@ public: setEstimate(estimate); } + ~LocationPostFilterBlueprint(); + const common::Location &location() const { return _location; } SearchIterator::UP @@ -334,6 +340,8 @@ make_location_blueprint(const FieldSpec &field, const IAttributeVector &attribut return root; } +LocationPostFilterBlueprint::~LocationPostFilterBlueprint() = default; + class LookupKey : public IDocumentWeightAttribute::LookupKey { public: LookupKey(MultiTerm & terms, uint32_t index) : _terms(terms), _index(index) {} @@ -381,6 +389,7 @@ public: _weights.reserve(size_hint); _terms.reserve(size_hint); } + ~DirectWeightedSetBlueprint() override; void addTerm(const IDocumentWeightAttribute::LookupKey & key, int32_t weight) { IDocumentWeightAttribute::LookupResult result = _attr.lookup(key, _dictionary_snapshot); @@ -423,6 +432,9 @@ public: }; template <typename SearchType> +DirectWeightedSetBlueprint<SearchType>::~DirectWeightedSetBlueprint() = default; + +template <typename SearchType> std::unique_ptr<SearchIterator> DirectWeightedSetBlueprint<SearchType>::createFilterSearch(bool, FilterConstraint) const { @@ -467,6 +479,8 @@ public: _terms.reserve(size_hint); } + ~DirectWandBlueprint(); + void addTerm(const IDocumentWeightAttribute::LookupKey & key, int32_t weight) { IDocumentWeightAttribute::LookupResult result = _attr.lookup(key, _dictionary_snapshot); HitEstimate childEst(result.posting_size, (result.posting_size == 0)); @@ -497,6 +511,8 @@ public: bool always_needs_unpack() const override { return true; } }; +DirectWandBlueprint::~DirectWandBlueprint() = default; + std::unique_ptr<SearchIterator> DirectWandBlueprint::createFilterSearch(bool, FilterConstraint constraint) const { diff --git a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp index 6b692ee4b27..0179841e7fa 100644 --- a/searchlib/src/vespa/searchlib/attribute/attrvector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attrvector.cpp @@ -99,7 +99,7 @@ void StringDirectAttribute::onSave(IAttributeSaveTarget & saveTarget) } } -class stringComp : public std::binary_function<uint32_t, uint32_t, bool> { +class stringComp { public: stringComp(const char * buffer) : _buffer(buffer) { } bool operator()(uint32_t x, uint32_t y) const { return strcmp(_buffer+x, _buffer+y) < 0; } diff --git a/searchlib/src/vespa/searchlib/attribute/changevector.hpp b/searchlib/src/vespa/searchlib/attribute/changevector.hpp index 43787bf8bd4..a81c14aa85c 100644 --- a/searchlib/src/vespa/searchlib/attribute/changevector.hpp +++ b/searchlib/src/vespa/searchlib/attribute/changevector.hpp @@ -5,6 +5,7 @@ #include "changevector.h" #include <vespa/vespalib/util/memoryusage.h> #include <vespa/vespalib/util/alloc.h> +#include <algorithm> namespace search { diff --git a/searchlib/src/vespa/searchlib/attribute/extendableattributes.h b/searchlib/src/vespa/searchlib/attribute/extendableattributes.h index 33b8544f9fe..bb8197c1908 100644 --- a/searchlib/src/vespa/searchlib/attribute/extendableattributes.h +++ b/searchlib/src/vespa/searchlib/attribute/extendableattributes.h @@ -124,6 +124,7 @@ public: MultiExtAttribute(const vespalib::string &name) : Super(name, Config(BasicType::fromType(static_cast<T>(0)), attribute::CollectionType::ARRAY)) {} + ~MultiExtAttribute() override; bool addDoc(typename Super::DocId &docId) override { docId = this->_idx.size() - 1; @@ -147,6 +148,9 @@ public: } }; +template <typename T> +MultiExtAttribute<T>::~MultiExtAttribute() = default; + typedef MultiExtAttribute<int8_t> MultiInt8ExtAttribute; typedef MultiExtAttribute<int16_t> MultiInt16ExtAttribute; typedef MultiExtAttribute<int32_t> MultiInt32ExtAttribute; diff --git a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h index fdf9ab624ad..96bdc147559 100644 --- a/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h +++ b/searchlib/src/vespa/searchlib/attribute/loadedenumvalue.h @@ -33,9 +33,7 @@ public: } }; - class EnumCompare : public std::binary_function<LoadedEnumAttribute, - LoadedEnumAttribute, - bool> + class EnumCompare { public: bool diff --git a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h index bfc636d79b9..934d20d57b2 100644 --- a/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h +++ b/searchlib/src/vespa/searchlib/attribute/loadednumericvalue.h @@ -20,7 +20,7 @@ struct LoadedNumericValue : public LoadedValue<T> { LoadedNumericValue() : LoadedValue<T>() { } - class ValueCompare : public std::binary_function<LoadedNumericValue<T>, LoadedNumericValue<T>, bool> + class ValueCompare { public: bool operator()(const LoadedNumericValue<T> &x, const LoadedNumericValue<T> &y) const { diff --git a/searchlib/src/vespa/searchlib/attribute/loadedvalue.h b/searchlib/src/vespa/searchlib/attribute/loadedvalue.h index b8f938838d2..ab20c9fbe69 100644 --- a/searchlib/src/vespa/searchlib/attribute/loadedvalue.h +++ b/searchlib/src/vespa/searchlib/attribute/loadedvalue.h @@ -40,9 +40,7 @@ public: } }; - class DocOrderCompare : public std::binary_function<LoadedValue<T>, - LoadedValue<T>, - bool> + class DocOrderCompare { public: bool diff --git a/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp b/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp index 3bc85783c2f..0a39e5defc9 100644 --- a/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp +++ b/searchlib/src/vespa/searchlib/attribute/sourceselector.cpp @@ -64,6 +64,7 @@ SourceSelector::SaveInfo::SaveInfo(const vespalib::string & baseFileName, sourceStore.save(_memSaver, _header._baseFileName); } +SourceSelector::SaveInfo::~SaveInfo() = default; bool SourceSelector::SaveInfo::save(const TuneFileAttributes &tuneFileAttributes, const FileHeaderContext &fileHeaderContext) diff --git a/searchlib/src/vespa/searchlib/attribute/sourceselector.h b/searchlib/src/vespa/searchlib/attribute/sourceselector.h index 7ab79ea34e8..de92abf212e 100644 --- a/searchlib/src/vespa/searchlib/attribute/sourceselector.h +++ b/searchlib/src/vespa/searchlib/attribute/sourceselector.h @@ -42,6 +42,7 @@ public: uint32_t baseId, uint32_t docIdLimit, AttributeVector & sourceStore); + ~SaveInfo(); const HeaderInfo & getHeader() const { return _header; } bool save(const TuneFileAttributes &tuneFileAttributes, const search::common::FileHeaderContext &fileHeaderContext); diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp index ec9b212fcf8..57882ddf1ae 100644 --- a/searchlib/src/vespa/searchlib/attribute/stringbase.cpp +++ b/searchlib/src/vespa/searchlib/attribute/stringbase.cpp @@ -107,7 +107,7 @@ public: } }; -class StdSortDataCharCompare : public std::binary_function<SortDataChar, SortDataChar, bool> +class StdSortDataCharCompare { public: bool operator() (const SortDataChar & x, const SortDataChar & y) const { diff --git a/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp b/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp index f33b571f263..60d04d7e3ad 100644 --- a/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp +++ b/searchlib/src/vespa/searchlib/common/indexmetainfo.cpp @@ -5,6 +5,7 @@ #include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/util/guard.h> #include <cassert> +#include <algorithm> #include <vespa/log/log.h> LOG_SETUP(".indexmetainfo"); diff --git a/searchlib/src/vespa/searchlib/common/sortresults.cpp b/searchlib/src/vespa/searchlib/common/sortresults.cpp index 7510ae162ce..8a9af3af828 100644 --- a/searchlib/src/vespa/searchlib/common/sortresults.cpp +++ b/searchlib/src/vespa/searchlib/common/sortresults.cpp @@ -425,7 +425,7 @@ FastS_insertion_sort(T a[], uint32_t n, Compare *compobj) } } -class StdSortDataCompare : public std::binary_function<FastS_SortSpec::SortData, FastS_SortSpec::SortData, bool> +class StdSortDataCompare { public: StdSortDataCompare(const uint8_t * s) : _sortSpec(s) { } diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp index 180151264a8..89ea14a94ac 100644 --- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.cpp @@ -40,8 +40,14 @@ RawBucketResultNode::RawBucketResultNode() _to(new RawResultNode()) {} +RawBucketResultNode::RawBucketResultNode(const RawBucketResultNode&) = default; + RawBucketResultNode::~RawBucketResultNode() = default; +RawBucketResultNode& RawBucketResultNode::operator=(const RawBucketResultNode&) = default; + +RawBucketResultNode& RawBucketResultNode::operator=(RawBucketResultNode&&) noexcept = default; + int RawBucketResultNode::onCmp(const Identifiable & rhs) const { diff --git a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h index eaca52de4f6..436304a3dce 100644 --- a/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/rawbucketresultnode.h @@ -23,8 +23,12 @@ public: DECLARE_EXPRESSIONNODE(RawBucketResultNode); DECLARE_NBO_SERIALIZE; RawBucketResultNode(); + RawBucketResultNode(const RawBucketResultNode&); + RawBucketResultNode(RawBucketResultNode&&) noexcept = default; RawBucketResultNode(ResultNode::UP from, ResultNode::UP to) : _from(from.release()), _to(to.release()) {} ~RawBucketResultNode(); + RawBucketResultNode& operator=(const RawBucketResultNode&); + RawBucketResultNode& operator=(RawBucketResultNode&&) noexcept; size_t hash() const override; int onCmp(const Identifiable & b) const override; int contains(const RawBucketResultNode & b) const; diff --git a/searchlib/src/vespa/searchlib/expression/resultvector.h b/searchlib/src/vespa/searchlib/expression/resultvector.h index 171659993ac..81d73e9b1f5 100644 --- a/searchlib/src/vespa/searchlib/expression/resultvector.h +++ b/searchlib/src/vespa/searchlib/expression/resultvector.h @@ -57,20 +57,20 @@ private: template <typename B> struct cmpT { - struct less : public std::binary_function<B, B, bool> { + struct less { bool operator()(const B & a, const B & b) { return a.cmp(b) < 0; } }; - struct equal : public std::binary_function<B, B, bool> { + struct equal { bool operator()(const B & a, const B & b) { return a.cmp(b) == 0; } }; }; template <typename B, typename V> struct contains { - struct less : public std::binary_function<B, V, bool> { + struct less { bool operator()(const B & a, const V & b) { return a.contains(b) < 0; } }; - struct equal : public std::binary_function<B, V, bool> { + struct equal { bool operator()(const B & a, const V & b) { return a.contains(b) == 0; } }; }; diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp index 6958bba2fba..5aadddfa0e2 100644 --- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp +++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.cpp @@ -9,6 +9,12 @@ IMPLEMENT_RESULTNODE(StringBucketResultNode, BucketResultNode); StringBucketResultNode StringBucketResultNode::_nullResult; +StringBucketResultNode::StringBucketResultNode(const StringBucketResultNode&) = default; + +StringBucketResultNode& StringBucketResultNode::operator=(const StringBucketResultNode&) = default; + +StringBucketResultNode& StringBucketResultNode::operator=(StringBucketResultNode&&) = default; + size_t StringBucketResultNode::hash() const { diff --git a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h index 59120680732..bf270d64729 100644 --- a/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h +++ b/searchlib/src/vespa/searchlib/expression/stringbucketresultnode.h @@ -23,9 +23,13 @@ public: DECLARE_EXPRESSIONNODE(StringBucketResultNode); DECLARE_NBO_SERIALIZE; StringBucketResultNode(); + StringBucketResultNode(const StringBucketResultNode&); + StringBucketResultNode(StringBucketResultNode&&) noexcept = default; StringBucketResultNode(vespalib::stringref from, vespalib::stringref to); StringBucketResultNode(ResultNode::UP from, ResultNode::UP to) : _from(from.release()), _to(to.release()) {} ~StringBucketResultNode(); + StringBucketResultNode& operator=(const StringBucketResultNode&); + StringBucketResultNode& operator=(StringBucketResultNode&&); size_t hash() const override; int onCmp(const Identifiable & b) const override; int contains(const StringBucketResultNode & b) const; diff --git a/searchlib/src/vespa/searchlib/features/closenessfeature.cpp b/searchlib/src/vespa/searchlib/features/closenessfeature.cpp index e98573d7a6b..04fc2a263be 100644 --- a/searchlib/src/vespa/searchlib/features/closenessfeature.cpp +++ b/searchlib/src/vespa/searchlib/features/closenessfeature.cpp @@ -107,6 +107,8 @@ ClosenessBlueprint::ClosenessBlueprint() : { } +ClosenessBlueprint::~ClosenessBlueprint() = default; + void ClosenessBlueprint::visitDumpFeatures(const IIndexEnvironment &, IDumpFeatureVisitor &) const diff --git a/searchlib/src/vespa/searchlib/features/closenessfeature.h b/searchlib/src/vespa/searchlib/features/closenessfeature.h index e45cf9687e0..799495eaff5 100644 --- a/searchlib/src/vespa/searchlib/features/closenessfeature.h +++ b/searchlib/src/vespa/searchlib/features/closenessfeature.h @@ -38,6 +38,7 @@ private: public: ClosenessBlueprint(); + ~ClosenessBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; fef::Blueprint::UP createInstance() const override; fef::ParameterDescriptions getDescriptions() const override { diff --git a/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp b/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp index 3b481ac69f1..3edfecd9a2c 100644 --- a/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/element_completeness_feature.cpp @@ -96,6 +96,8 @@ ElementCompletenessBlueprint::ElementCompletenessBlueprint() _output.push_back("elementWeight"); } +ElementCompletenessBlueprint::~ElementCompletenessBlueprint() = default; + void ElementCompletenessBlueprint::visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const diff --git a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h index 00e0d115f3d..2b1901184f4 100644 --- a/searchlib/src/vespa/searchlib/features/element_completeness_feature.h +++ b/searchlib/src/vespa/searchlib/features/element_completeness_feature.h @@ -100,7 +100,7 @@ private: public: ElementCompletenessBlueprint(); - + ~ElementCompletenessBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment & env, fef::IDumpFeatureVisitor & visitor) const override; fef::Blueprint::UP createInstance() const override; diff --git a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp index b02d336168b..586e086cf97 100644 --- a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.cpp @@ -49,6 +49,8 @@ SimpleItemRawScoreExecutor::handle_bind_match_data(const MatchData &md) //----------------------------------------------------------------------------- +ItemRawScoreBlueprint::~ItemRawScoreBlueprint() = default; + bool ItemRawScoreBlueprint::setup(const IIndexEnvironment &, const ParameterList ¶ms) diff --git a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h index 312034b732f..3f93ca5ad75 100644 --- a/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h +++ b/searchlib/src/vespa/searchlib/features/item_raw_score_feature.h @@ -46,6 +46,7 @@ private: vespalib::string _label; public: ItemRawScoreBlueprint() : Blueprint("itemRawScore"), _label() {} + ~ItemRawScoreBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new ItemRawScoreBlueprint()); diff --git a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp index 8b47c4e9e81..9472814f581 100644 --- a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.cpp @@ -59,6 +59,8 @@ NativeDotProductExecutor::handle_bind_match_data(const fef::MatchData &md) //----------------------------------------------------------------------------- +NativeDotProductBlueprint::~NativeDotProductBlueprint() = default; + bool NativeDotProductBlueprint::setup(const IIndexEnvironment &, const ParameterList ¶ms) diff --git a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h index adff5663b92..c546ed86501 100644 --- a/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h +++ b/searchlib/src/vespa/searchlib/features/native_dot_product_feature.h @@ -31,6 +31,7 @@ private: const fef::FieldInfo *_field; public: NativeDotProductBlueprint() : Blueprint("nativeDotProduct"), _field(nullptr) {} + ~NativeDotProductBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new NativeDotProductBlueprint()); diff --git a/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp b/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp index bedb62e79e4..4e4426a5dab 100644 --- a/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/raw_score_feature.cpp @@ -43,6 +43,8 @@ RawScoreExecutor::handle_bind_match_data(const fef::MatchData &md) //----------------------------------------------------------------------------- +RawScoreBlueprint::~RawScoreBlueprint() = default; + bool RawScoreBlueprint::setup(const IIndexEnvironment &, const ParameterList ¶ms) { diff --git a/searchlib/src/vespa/searchlib/features/raw_score_feature.h b/searchlib/src/vespa/searchlib/features/raw_score_feature.h index 6344b527595..14106522d38 100644 --- a/searchlib/src/vespa/searchlib/features/raw_score_feature.h +++ b/searchlib/src/vespa/searchlib/features/raw_score_feature.h @@ -26,6 +26,7 @@ private: const fef::FieldInfo *_field; public: RawScoreBlueprint() : Blueprint("rawScore"), _field(0) {} + ~RawScoreBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} fef::Blueprint::UP createInstance() const override { diff --git a/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp b/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp index 66a052ee0a2..779e14c8304 100644 --- a/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/subqueries_feature.cpp @@ -44,6 +44,8 @@ SubqueriesExecutor::handle_bind_match_data(const fef::MatchData &md) //----------------------------------------------------------------------------- +SubqueriesBlueprint::~SubqueriesBlueprint() = default; + bool SubqueriesBlueprint::setup(const IIndexEnvironment &, const ParameterList ¶ms) { _field = params[0].asField(); diff --git a/searchlib/src/vespa/searchlib/features/subqueries_feature.h b/searchlib/src/vespa/searchlib/features/subqueries_feature.h index fefda9406bd..4637dfb2414 100644 --- a/searchlib/src/vespa/searchlib/features/subqueries_feature.h +++ b/searchlib/src/vespa/searchlib/features/subqueries_feature.h @@ -24,6 +24,7 @@ private: const fef::FieldInfo *_field; public: SubqueriesBlueprint() : Blueprint("subqueries"), _field(nullptr) {} + ~SubqueriesBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment &, fef::IDumpFeatureVisitor &) const override {} fef::Blueprint::UP createInstance() const override { return Blueprint::UP(new SubqueriesBlueprint); diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp index 2723469aa67..495bb766e32 100644 --- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp +++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.cpp @@ -172,6 +172,8 @@ const vespalib::string TextSimilarityBlueprint::field_coverage_output("fieldCove TextSimilarityBlueprint::TextSimilarityBlueprint() : Blueprint("textSimilarity"), _field_id(fef::IllegalHandle) {} +TextSimilarityBlueprint::~TextSimilarityBlueprint() = default; + void TextSimilarityBlueprint::visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const diff --git a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h index f7cd259b769..dddd8d89619 100644 --- a/searchlib/src/vespa/searchlib/features/text_similarity_feature.h +++ b/searchlib/src/vespa/searchlib/features/text_similarity_feature.h @@ -57,6 +57,7 @@ private: public: TextSimilarityBlueprint(); + ~TextSimilarityBlueprint() override; void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override; fef::Blueprint::UP createInstance() const override; fef::ParameterDescriptions getDescriptions() const override { diff --git a/searchlib/src/vespa/searchlib/fef/test/labels.cpp b/searchlib/src/vespa/searchlib/fef/test/labels.cpp index ee937600ac2..6e7c144cc7d 100644 --- a/searchlib/src/vespa/searchlib/fef/test/labels.cpp +++ b/searchlib/src/vespa/searchlib/fef/test/labels.cpp @@ -1,3 +1,9 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "labels.h" + +namespace search::fef::test { + +NoLabel::~NoLabel() = default; + +} diff --git a/searchlib/src/vespa/searchlib/fef/test/labels.h b/searchlib/src/vespa/searchlib/fef/test/labels.h index b76a145f922..5f27f786405 100644 --- a/searchlib/src/vespa/searchlib/fef/test/labels.h +++ b/searchlib/src/vespa/searchlib/fef/test/labels.h @@ -10,7 +10,8 @@ struct Labels { virtual ~Labels() {} }; struct NoLabel : public Labels { - virtual void inject(Properties &) const override {} + virtual void inject(Properties &) const override {} + ~NoLabel() override; }; struct SingleLabel : public Labels { vespalib::string label; diff --git a/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt b/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt index ec9156fbb52..4fcec251caa 100644 --- a/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/query/tree/CMakeLists.txt @@ -5,6 +5,7 @@ vespa_add_library(searchlib_query_tree OBJECT intermediate.cpp intermediatenodes.cpp querybuilder.cpp + simplequery.cpp stackdumpcreator.cpp term.cpp location.cpp diff --git a/searchlib/src/vespa/searchlib/query/tree/simplequery.cpp b/searchlib/src/vespa/searchlib/query/tree/simplequery.cpp new file mode 100644 index 00000000000..cad97279b4c --- /dev/null +++ b/searchlib/src/vespa/searchlib/query/tree/simplequery.cpp @@ -0,0 +1,55 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "simplequery.h" + +namespace search::query { + +SimpleTrue::~SimpleTrue() = default; + +SimpleFalse::~SimpleFalse() = default; + +SimpleAnd::~SimpleAnd() = default; + +SimpleAndNot::~SimpleAndNot() = default; + +SimpleNear::~SimpleNear() = default; + +SimpleONear::~SimpleONear() = default; + +SimpleOr::~SimpleOr() = default; + +SimpleEquiv::~SimpleEquiv() = default; + +SimplePhrase::~SimplePhrase() = default; + +SimpleSameElement::~SimpleSameElement() = default; + +SimpleWeightedSetTerm::~SimpleWeightedSetTerm() = default; + +SimpleDotProduct::~SimpleDotProduct() = default; + +SimpleWandTerm::~SimpleWandTerm() = default; + +SimpleRank::~SimpleRank() = default; + +SimpleNumberTerm::~SimpleNumberTerm() = default; + +SimpleLocationTerm::~SimpleLocationTerm() = default; + +SimplePrefixTerm::~SimplePrefixTerm() = default; + +SimpleRangeTerm::~SimpleRangeTerm() = default; + +SimpleStringTerm::~SimpleStringTerm() = default; + +SimpleSubstringTerm::~SimpleSubstringTerm() = default; + +SimpleSuffixTerm::~SimpleSuffixTerm() = default; + +SimplePredicateQuery::~SimplePredicateQuery() = default; + +SimpleRegExpTerm::~SimpleRegExpTerm() = default; + +SimpleNearestNeighborTerm::~SimpleNearestNeighborTerm() = default; + +} diff --git a/searchlib/src/vespa/searchlib/query/tree/simplequery.h b/searchlib/src/vespa/searchlib/query/tree/simplequery.h index 0e52698c915..5047e072cb7 100644 --- a/searchlib/src/vespa/searchlib/query/tree/simplequery.h +++ b/searchlib/src/vespa/searchlib/query/tree/simplequery.h @@ -13,13 +13,30 @@ namespace search::query { -struct SimpleTrue : TrueQueryNode {}; -struct SimpleFalse : FalseQueryNode {}; -struct SimpleAnd : And {}; -struct SimpleAndNot : AndNot {}; -struct SimpleNear : Near { SimpleNear(size_t dist) : Near(dist) {} }; -struct SimpleONear : ONear { SimpleONear(size_t dist) : ONear(dist) {} }; -struct SimpleOr : Or {}; +struct SimpleTrue : TrueQueryNode { + ~SimpleTrue() override; +}; +struct SimpleFalse : FalseQueryNode { + ~SimpleFalse() override; +}; +struct SimpleAnd : And { + ~SimpleAnd() override; +}; +struct SimpleAndNot : AndNot { + ~SimpleAndNot() override; +}; +struct SimpleNear : Near { + SimpleNear(size_t dist) : Near(dist) {} + ~SimpleNear() override; +}; +struct SimpleONear : ONear { + SimpleONear(size_t dist) : ONear(dist) {} + ~SimpleONear() override; +}; +struct SimpleOr : Or +{ + ~SimpleOr() override; +}; struct SimpleWeakAnd : WeakAnd { SimpleWeakAnd(uint32_t minHits, vespalib::stringref view) : WeakAnd(minHits, view) @@ -28,70 +45,86 @@ struct SimpleWeakAnd : WeakAnd { struct SimpleEquiv : Equiv { SimpleEquiv(int32_t id, Weight weight) : Equiv(id, weight) {} + ~SimpleEquiv() override; }; struct SimplePhrase : Phrase { SimplePhrase(vespalib::stringref view, int32_t id, Weight weight) : Phrase(view, id, weight) {} + ~SimplePhrase() override; }; struct SimpleSameElement : SameElement { SimpleSameElement(vespalib::stringref view) : SameElement(view) {} + ~SimpleSameElement() override; }; struct SimpleWeightedSetTerm : WeightedSetTerm { SimpleWeightedSetTerm(uint32_t num_terms, vespalib::stringref view, int32_t id, Weight weight) : WeightedSetTerm(num_terms, view, id, weight) {} + ~SimpleWeightedSetTerm() override; }; struct SimpleDotProduct : DotProduct { SimpleDotProduct(uint32_t num_terms, vespalib::stringref view, int32_t id, Weight weight) : DotProduct(num_terms, view, id, weight) {} + ~SimpleDotProduct() override; }; struct SimpleWandTerm : WandTerm { SimpleWandTerm(uint32_t num_terms, vespalib::stringref view, int32_t id, Weight weight, uint32_t targetNumHits, int64_t scoreThreshold, double thresholdBoostFactor) : WandTerm(num_terms, view, id, weight, targetNumHits, scoreThreshold, thresholdBoostFactor) {} + ~SimpleWandTerm() override; +}; +struct SimpleRank : Rank +{ + ~SimpleRank() override; }; -struct SimpleRank : Rank {}; struct SimpleNumberTerm : NumberTerm { SimpleNumberTerm(Type term, vespalib::stringref view, int32_t id, Weight weight) : NumberTerm(term, view, id, weight) { } + ~SimpleNumberTerm() override; }; struct SimpleLocationTerm : LocationTerm { SimpleLocationTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : LocationTerm(term, view, id, weight) { } + ~SimpleLocationTerm() override; }; struct SimplePrefixTerm : PrefixTerm { SimplePrefixTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : PrefixTerm(term, view, id, weight) { } + ~SimplePrefixTerm() override; }; struct SimpleRangeTerm : RangeTerm { SimpleRangeTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : RangeTerm(term, view, id, weight) { } + ~SimpleRangeTerm() override; }; struct SimpleStringTerm : StringTerm { SimpleStringTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : StringTerm(term, view, id, weight) { } + ~SimpleStringTerm() override; }; struct SimpleSubstringTerm : SubstringTerm { SimpleSubstringTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : SubstringTerm(term, view, id, weight) { } + ~SimpleSubstringTerm() override; }; struct SimpleSuffixTerm : SuffixTerm { SimpleSuffixTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : SuffixTerm(term, view, id, weight) { } + ~SimpleSuffixTerm() override; }; struct SimplePredicateQuery : PredicateQuery { SimplePredicateQuery(PredicateQueryTerm::UP term, @@ -99,12 +132,14 @@ struct SimplePredicateQuery : PredicateQuery { int32_t id, Weight weight) : PredicateQuery(std::move(term), view, id, weight) { } + ~SimplePredicateQuery() override; }; struct SimpleRegExpTerm : RegExpTerm { SimpleRegExpTerm(const Type &term, vespalib::stringref view, int32_t id, Weight weight) : RegExpTerm(term, view, id, weight) { } + ~SimpleRegExpTerm() override; }; struct SimpleNearestNeighborTerm : NearestNeighborTerm { SimpleNearestNeighborTerm(vespalib::stringref query_tensor_name, vespalib::stringref field_name, @@ -115,6 +150,7 @@ struct SimpleNearestNeighborTerm : NearestNeighborTerm { target_num_hits, allow_approximate, explore_additional_hits, distance_threshold) {} + ~SimpleNearestNeighborTerm() override; }; diff --git a/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt b/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt index 214fb19b7ce..840f5b6b376 100644 --- a/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/queryeval/CMakeLists.txt @@ -40,6 +40,7 @@ vespa_add_library(searchlib_queryeval OBJECT nearsearch.cpp nns_index_iterator.cpp orsearch.cpp + posting_info.cpp predicate_blueprint.cpp predicate_search.cpp ranksearch.cpp diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp index 997d3013971..79d78c3faab 100644 --- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp @@ -296,6 +296,8 @@ AndBlueprint::computeNextHitRate(const Blueprint & child, double hitRate) const //----------------------------------------------------------------------------- +OrBlueprint::~OrBlueprint() = default; + Blueprint::HitEstimate OrBlueprint::combine(const std::vector<HitEstimate> &data) const { diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h index b708ae3078e..c8bd26fe4a7 100644 --- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h +++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.h @@ -60,6 +60,7 @@ private: class OrBlueprint : public IntermediateBlueprint { public: + ~OrBlueprint() override; bool supports_termwise_children() const override { return true; } HitEstimate combine(const std::vector<HitEstimate> &data) const override; FieldSpecBaseList exposeFields() const override; diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.cpp b/searchlib/src/vespa/searchlib/queryeval/posting_info.cpp new file mode 100644 index 00000000000..4b7b09b76c1 --- /dev/null +++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.cpp @@ -0,0 +1,9 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "posting_info.h" + +namespace search::queryeval { + +MinMaxPostingInfo::~MinMaxPostingInfo() = default; + +} diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.h b/searchlib/src/vespa/searchlib/queryeval/posting_info.h index 27c2eae56fb..c3fa5470e48 100644 --- a/searchlib/src/vespa/searchlib/queryeval/posting_info.h +++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.h @@ -34,6 +34,7 @@ public: _minWeight(minWeight), _maxWeight(maxWeight) {} + ~MinMaxPostingInfo() override; int32_t getMinWeight() const { return _minWeight; } int32_t getMaxWeight() const { return _maxWeight; } }; diff --git a/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt b/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt index 925d0b9b6be..b3a19d7533e 100644 --- a/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt +++ b/searchlib/src/vespa/searchlib/queryeval/test/CMakeLists.txt @@ -1,5 +1,6 @@ # Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_library(searchlib_queryeval_test INTERFACE +vespa_add_library(searchlib_queryeval_test STATIC SOURCES + searchhistory.cpp DEPENDS ) diff --git a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.cpp b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.cpp new file mode 100644 index 00000000000..700b951d8ca --- /dev/null +++ b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.cpp @@ -0,0 +1,11 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include "searchhistory.h" + +namespace search::queryeval::test { + +SearchHistory::Entry::Entry(const Entry&) = default; + +SearchHistory::Entry& SearchHistory::Entry::operator=(const Entry&) = default; + +} diff --git a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h index 17e3cc49444..9b31577cd9c 100644 --- a/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h +++ b/searchlib/src/vespa/searchlib/queryeval/test/searchhistory.h @@ -17,7 +17,11 @@ struct SearchHistory { uint32_t docid; Entry(const std::string &t, const std::string &o, uint32_t id) : target(t), op(o), docid(id) {} + Entry(const Entry&); + Entry(Entry&&) noexcept = default; ~Entry() {} + Entry& operator=(const Entry&); + Entry& operator=(Entry&&) noexcept = default; bool operator==(const Entry &rhs) const { return ((target == rhs.target) && (op == rhs.op) && |