aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-08-04 12:15:54 +0200
committerGitHub <noreply@github.com>2017-08-04 12:15:54 +0200
commitbd032a4734d39a7d6b91a4455694d692eb0a11fe (patch)
tree5a93c725e3c0662353f4cb27ed237d5ce0ae5044 /searchlib
parent18bfe04965246e119fd4779cd44afb99d06a3698 (diff)
parent7bbad58435bf428089550eacd4e5d9daf3773761 (diff)
Merge pull request #3046 from yahoo/balder/avoid-inlining
Balder/avoid inlining
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/query/query-old.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdatalayout.h7
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h7
-rw-r--r--searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h7
-rw-r--r--searchlib/src/vespa/searchlib/query/queryterm.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/blueprint.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h15
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_result.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h8
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/posting_info.h6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/simpleresult.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h12
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h8
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h7
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp6
21 files changed, 48 insertions, 106 deletions
diff --git a/searchlib/src/tests/query/query-old.cpp b/searchlib/src/tests/query/query-old.cpp
index e8e0614f51a..77fe813dda5 100644
--- a/searchlib/src/tests/query/query-old.cpp
+++ b/searchlib/src/tests/query/query-old.cpp
@@ -648,4 +648,9 @@ TEST("require that incorrectly specified diversity can be parsed") {
EXPECT_FALSE(descending_query.isValid());
}
+TEST("require that we do not break the stack on bad query") {
+ QueryTermSimple term("<form><iframe+&#09;&#10;&#11;+src=\\\"javascript&#58;alert(1)\\\"&#11;&#10;&#09;;>", QueryTerm::WORD);
+ EXPECT_FALSE(term.isValid());
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
index 5c26b19f436..e6c9e9c0590 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp
@@ -152,16 +152,14 @@ AttributeWeightedSetBlueprint::addToken(std::unique_ptr<ISearchContext> context,
}
queryeval::SearchIterator::UP
-AttributeWeightedSetBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &tfmda,
- bool strict) const
+AttributeWeightedSetBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const
{
assert(tfmda.size() == 1);
fef::TermFieldMatchData &tfmd = *tfmda[0];
if (strict) { // use generic weighted set search
std::vector<queryeval::SearchIterator*> children(_contexts.size());
for (size_t i = 0; i < _contexts.size(); ++i) {
- children[i] = _contexts[i]->createIterator(&tfmd,
- true).release();
+ children[i] = _contexts[i]->createIterator(&tfmd, true).release();
}
return queryeval::SearchIterator::UP(queryeval::WeightedSetTermSearch::create(children, tfmd, _weights));
} else { // use attribute filter optimization
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
index 0b9a0c23a80..169dfd45863 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp
@@ -2,8 +2,7 @@
#include "matchdatalayout.h"
-namespace search {
-namespace fef {
+namespace search::fef {
MatchDataLayout::MatchDataLayout()
: _numTermFields(0),
@@ -26,5 +25,4 @@ MatchDataLayout::createMatchData() const
return md;
}
-} // namespace fef
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
index b50e6bd32ed..53f94128e67 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
+++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h
@@ -5,8 +5,7 @@
#include "handle.h"
#include "matchdata.h"
-namespace search {
-namespace fef {
+namespace search::fef {
/**
* This class is used to describe the layout of term match data and
@@ -46,6 +45,4 @@ public:
MatchData::UP createMatchData() const;
};
-} // namespace fef
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
index 4b5fb6fce94..7cfc6afa72d 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp
@@ -1,11 +1,8 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "termfieldmatchdata.h"
-#include "fieldinfo.h"
-#include <algorithm>
-namespace search {
-namespace fef {
+namespace search::fef {
TermFieldMatchData::TermFieldMatchData() :
_docId(invalidId()),
@@ -114,5 +111,4 @@ TermFieldMatchData::appendPositionToAllocatedVector(const TermFieldMatchDataPosi
}
}
-} // namespace fef
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
index e921e533cc3..2d91764f7c9 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h
@@ -60,11 +60,6 @@ private:
friend class ::MatchDataHeapTest;
public:
- /**
- * This gives you access to the underlying positions.
- * @return the array of positions.
- */
- MutablePositionsIterator getPositions() { return allocated() ? getMultiple() : getFixed(); }
PositionsIterator begin() const { return allocated() ? getMultiple() : getFixed(); }
PositionsIterator end() const { return allocated() ? getMultiple() + _sz : empty() ? getFixed() : getFixed()+1; }
size_t size() const { return _sz; }
@@ -80,9 +75,7 @@ public:
* set.
**/
TermFieldMatchData();
-
TermFieldMatchData(const TermFieldMatchData & rhs);
-
~TermFieldMatchData();
TermFieldMatchData & operator = (const TermFieldMatchData & rhs);
diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
index 67db997a273..54ae3e850da 100644
--- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
+++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h
@@ -6,8 +6,7 @@
#include <cassert>
#include <cstddef>
-namespace search {
-namespace fef {
+namespace search::fef {
class TermFieldMatchData;
@@ -68,6 +67,4 @@ public:
}
};
-} // namespace fef
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/query/queryterm.cpp b/searchlib/src/vespa/searchlib/query/queryterm.cpp
index 694988ef74e..70cbcd37ee0 100644
--- a/searchlib/src/vespa/searchlib/query/queryterm.cpp
+++ b/searchlib/src/vespa/searchlib/query/queryterm.cpp
@@ -367,9 +367,9 @@ QueryTermSimple::QueryTermSimple(const string & term_, SearchTerm type) :
{
if (isFullRange(_term)) {
stringref rest(_term.c_str() + 1, _term.size() - 2);
- stringref parts[8];
+ stringref parts[9];
size_t numParts(0);
- while (! rest.empty() && (numParts < NELEMS(parts))) {
+ while (! rest.empty() && ((numParts + 1) < NELEMS(parts))) {
size_t pos(rest.find(';'));
if (pos != vespalib::string::npos) {
parts[numParts++] = rest.substr(0, pos);
@@ -382,8 +382,8 @@ QueryTermSimple::QueryTermSimple(const string & term_, SearchTerm type) :
rest = stringref();
}
}
- _valid = (numParts >= 2);
- if (numParts > 2) {
+ _valid = (numParts >= 2) && (numParts < NELEMS(parts));
+ if (_valid && numParts > 2) {
_rangeLimit = strtol(parts[2].c_str(), NULL, 0);
if (numParts > 3) {
_valid = (numParts >= 5);
diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
index 92111645761..dfc4793923a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp
@@ -12,8 +12,7 @@
#include <vespa/log/log.h>
LOG_SETUP(".queryeval.blueprint");
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
//-----------------------------------------------------------------------------
@@ -526,8 +525,7 @@ LeafBlueprint::set_tree_size(uint32_t value)
//-----------------------------------------------------------------------------
-} // namespace queryeval
-} // namespace search
+}
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
index 13511c5794d..22a859d2dde 100644
--- a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h
@@ -6,8 +6,7 @@
#include <vespa/searchlib/attribute/i_document_weight_attribute.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
class DocumentWeightSearchIterator : public SearchIterator
{
@@ -22,14 +21,10 @@ public:
const IDocumentWeightAttribute &attr,
IDocumentWeightAttribute::LookupResult dict_entry)
: _tfmd(tfmd),
- _matchPosition(NULL),
+ _matchPosition(_tfmd.populate_fixed()),
_iterator(attr.create(dict_entry.posting_idx)),
_postingInfo(queryeval::MinMaxPostingInfo(dict_entry.min_weight, dict_entry.max_weight))
- {
- search::fef::TermFieldMatchDataPosition pos;
- _tfmd.appendPosition(pos);
- _matchPosition = _tfmd.getPositions();
- }
+ { }
void initRange(uint32_t begin, uint32_t end) override {
SearchIterator::initRange(begin, end);
_iterator.lower_bound(begin);
@@ -57,6 +52,4 @@ public:
Trinary is_strict() const override { return Trinary::True; }
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_result.h b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
index 3442e0df944..83d5921e4c7 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_result.h
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_result.h
@@ -7,8 +7,7 @@
#include <vespa/searchlib/common/fslimits.h>
#include <vector>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
class FakeResult
{
@@ -104,6 +103,4 @@ public:
std::ostream &operator << (std::ostream &out, const FakeResult &result);
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
index 385412ddcfd..8da81368c72 100644
--- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
+++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h
@@ -7,9 +7,7 @@
#include "fake_result.h"
#include "searchable.h"
-namespace search {
-
-namespace queryeval {
+namespace search::queryeval {
//-----------------------------------------------------------------------------
@@ -79,6 +77,4 @@ public:
//-----------------------------------------------------------------------------
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.h b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
index ac8636814d6..b7f386475d8 100644
--- a/searchlib/src/vespa/searchlib/queryeval/posting_info.h
+++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.h
@@ -4,8 +4,7 @@
#include <cstdint>
#include <memory>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* Interface for getting global information stored in underlying posting list
@@ -42,5 +41,4 @@ public:
int32_t getMaxWeight() const { return _maxWeight; }
};
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
index e43c192a74d..5195f03b8db 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp
@@ -4,8 +4,7 @@
#include <cassert>
#include <ostream>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
SimpleResult &
SimpleResult::addHit(uint32_t docid)
@@ -74,5 +73,4 @@ operator << (std::ostream &out, const SimpleResult &result)
return out;
}
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
index c7755758fa8..30c88bb10c7 100644
--- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
+++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h
@@ -5,8 +5,7 @@
#include <vector>
#include "searchiterator.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* Simple result class containing only document ids. This class will
@@ -83,6 +82,4 @@ public:
std::ostream &operator << (std::ostream &out, const SimpleResult &result);
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
index e73409240fa..789bfc40782 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp
@@ -11,8 +11,7 @@ LOG_SETUP(".queryeval.parallel_weak_and_search");
using vespalib::make_string;
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
typedef ParallelWeakAndSearch::MatchParams MatchParams;
typedef ParallelWeakAndSearch::RankParams RankParams;
@@ -256,5 +255,4 @@ ParallelWeakAndSearch::create(search::fef::TermFieldMatchData &tfmd,
}
}
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
index c29e2f95d23..b561292d4ac 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h
@@ -1,15 +1,13 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
-#include <vespa/searchlib/queryeval/searchiterator.h>
#include "wand_parts.h"
-#include "parallel_weak_and_search.h"
#include "weak_and_heap.h"
+#include <vespa/searchlib/queryeval/searchiterator.h>
#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/searchlib/fef/termfieldmatchdata.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* WAND search iterator that uses a shared heap between match threads.
@@ -78,8 +76,4 @@ struct ParallelWeakAndSearch : public SearchIterator
bool strict);
};
-} // namespace queryeval
-} // namespace search
-
-
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
index 8f696c3b399..9fbf9f7d850 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h
@@ -15,9 +15,7 @@
#include <vespa/searchlib/attribute/i_document_weight_attribute.h>
#include <vespa/vespalib/util/stringfmt.h>
-namespace search {
-namespace queryeval {
-namespace wand {
+namespace search::queryeval::wand {
//-----------------------------------------------------------------------------
@@ -659,9 +657,7 @@ public:
//-----------------------------------------------------------------------------
-} // namespace wand
-} // namespace queryeval
-} // namespace search
+}
//-----------------------------------------------------------------------------
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
index 638ea040773..dc84eb45b8a 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp
@@ -2,8 +2,7 @@
#include "weak_and_heap.h"
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
SharedWeakAndPriorityQueue::SharedWeakAndPriorityQueue(uint32_t scoresToTrack) :
WeakAndHeap(scoresToTrack),
@@ -36,5 +35,4 @@ SharedWeakAndPriorityQueue::adjust(score_t *begin, score_t *end)
}
}
-} // namespace queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
index b9aa19f2ecb..d6105d7e6f2 100644
--- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
+++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h
@@ -5,8 +5,7 @@
#include <vespa/vespalib/util/priority_queue.h>
#include <vespa/vespalib/util/sync.h>
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
/**
* An interface used to insert scores into an underlying heap (or similar data structure)
@@ -63,6 +62,4 @@ public:
void adjust(score_t *begin, score_t *end) override;
};
-} // namespace queryeval
-} // namespace search
-
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
index 97725a00536..aae7c60bd80 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -9,8 +9,7 @@
using search::fef::TermFieldMatchData;
using vespalib::ObjectVisitor;
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
template <typename HEAP, typename IteratorPack>
class WeightedSetTermSearchImpl : public WeightedSetTermSearch
@@ -164,5 +163,4 @@ WeightedSetTermSearch::create(search::fef::TermFieldMatchData &tmd,
//-----------------------------------------------------------------------------
-} // namespace search::queryeval
-} // namespace search
+}