summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-03-19 17:45:47 +0100
committerGitHub <noreply@github.com>2019-03-19 17:45:47 +0100
commit62dc056f9a8e0acac0ac5f329f2c3846659fa668 (patch)
treef2c06b75d330e7900ac017d6f76fbdcbb3de7193 /searchlib
parentca1422c22a1863874a243f917bcb67f3ea3c1842 (diff)
parent6e04e49fa9f0e15c44e68c5e68ed1abed66fc312 (diff)
Merge pull request #8824 from vespa-engine/balder/avoid-adding-another-layer-when-injecting-geo-search
Balder/avoid adding another layer when injecting geo search
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/query/querybuilder_test.cpp21
-rw-r--r--searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp23
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediate.cpp21
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/intermediate.h2
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp20
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp2
6 files changed, 44 insertions, 45 deletions
diff --git a/searchlib/src/tests/query/querybuilder_test.cpp b/searchlib/src/tests/query/querybuilder_test.cpp
index 0f05419c4e5..6673a107d44 100644
--- a/searchlib/src/tests/query/querybuilder_test.cpp
+++ b/searchlib/src/tests/query/querybuilder_test.cpp
@@ -522,13 +522,13 @@ TEST("require that Using Position Data Can Be Turned Off") {
Node::UP node = builder.build();
ASSERT_TRUE(!builder.hasError());
Intermediate * andNode = dynamic_cast<Intermediate *>(node.get());
- ASSERT_TRUE(andNode != NULL);
+ ASSERT_TRUE(andNode != nullptr);
ASSERT_TRUE(andNode->getChildren().size() == 2);
Term * term = dynamic_cast<Term *>(andNode->getChildren()[0]);
- ASSERT_TRUE(term != NULL);
+ ASSERT_TRUE(term != nullptr);
EXPECT_TRUE(!term->usePositionData());
Phrase * phrase = dynamic_cast<Phrase *>(andNode->getChildren()[1]);
- ASSERT_TRUE(phrase != NULL);
+ ASSERT_TRUE(phrase != nullptr);
EXPECT_TRUE(!phrase->usePositionData());
}
@@ -536,13 +536,11 @@ TEST("require that Weight Override Works Across Multiple Levels") {
QueryBuilder<SimpleQueryNodeTypes> builder;
builder.addPhrase(2, view[0], id[0], weight[0]);
- SimpleStringTerm &string_term_1 =
- builder.addStringTerm(str[1], view[1], id[1], weight[1]);
+ SimpleStringTerm &string_term_1 = builder.addStringTerm(str[1], view[1], id[1], weight[1]);
EXPECT_EQUAL(weight[0].percent(), string_term_1.getWeight().percent());
builder.addAnd(2);
- SimpleStringTerm &string_term_2 =
- builder.addStringTerm(str[2], view[2], id[2], weight[2]);
+ SimpleStringTerm &string_term_2 = builder.addStringTerm(str[2], view[2], id[2], weight[2]);
EXPECT_EQUAL(weight[0].percent(), string_term_2.getWeight().percent());
}
@@ -579,14 +577,12 @@ TEST("require that All Range Syntaxes Work") {
string stackDump = StackDumpCreator::create(*node);
SimpleQueryStackDumpIterator iterator(stackDump);
- Node::UP new_node =
- QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator);
+ Node::UP new_node = QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator);
And *and_node = dynamic_cast<And *>(new_node.get());
ASSERT_TRUE(and_node);
EXPECT_EQUAL(3u, and_node->getChildren().size());
- RangeTerm *range_term =
- dynamic_cast<RangeTerm *>(and_node->getChildren()[0]);
+ auto range_term = dynamic_cast<RangeTerm *>(and_node->getChildren()[0]);
ASSERT_TRUE(range_term);
EXPECT_TRUE(range0 == range_term->getTerm());
@@ -608,8 +604,7 @@ TEST("require that empty intermediate node can be added") {
string stackDump = StackDumpCreator::create(*node);
SimpleQueryStackDumpIterator iterator(stackDump);
- Node::UP new_node =
- QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator);
+ Node::UP new_node = QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator);
And *and_node = dynamic_cast<And *>(new_node.get());
ASSERT_TRUE(and_node);
EXPECT_EQUAL(0u, and_node->getChildren().size());
diff --git a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
index b9e3377d8f9..755245438f2 100644
--- a/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
+++ b/searchlib/src/vespa/searchlib/fef/test/indexenvironment.cpp
@@ -4,9 +4,7 @@
#include <vespa/searchlib/attribute/attributefactory.h>
#include <vespa/vespalib/util/stringfmt.h>
-namespace search {
-namespace fef {
-namespace test {
+namespace search::fef::test {
using vespalib::eval::ValueType;
using vespalib::eval::ErrorValue;
@@ -18,21 +16,14 @@ IndexEnvironment::Constant notFoundError(ValueType::error_type(),
}
-IndexEnvironment::IndexEnvironment() :
- _properties(),
- _fields(),
- _attrMap(),
- _tableMan(),
- _constants()
-{
-}
+IndexEnvironment::IndexEnvironment() = default;
-IndexEnvironment::~IndexEnvironment() {}
+IndexEnvironment::~IndexEnvironment() = default;
const FieldInfo *
IndexEnvironment::getField(uint32_t id) const
{
- return id < _fields.size() ? &_fields[id] : NULL;
+ return id < _fields.size() ? &_fields[id] : nullptr;
}
const FieldInfo *
@@ -44,7 +35,7 @@ IndexEnvironment::getFieldByName(const string &name) const
return &(*it);
}
}
- return NULL;
+ return nullptr;
}
@@ -71,6 +62,4 @@ IndexEnvironment::addConstantValue(const vespalib::string &name,
(void) insertRes;
}
-} // namespace test
-} // namespace fef
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp b/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
index f56da9c2cf9..a5cfe69c2d5 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediate.cpp
@@ -9,10 +9,29 @@ Intermediate::~Intermediate() {
}
}
-Intermediate &Intermediate::append(Node::UP child)
+Intermediate &
+Intermediate::append(Node::UP child)
{
_children.push_back(child.release());
return *this;
}
+Intermediate &
+Intermediate::prepend(Node::UP child)
+{
+ _children.insert(_children.begin(), child.release());
+ return *this;
+}
+
+Node::UP
+Intermediate::stealFirst()
+{
+ if ( _children.empty()) {
+ return Node::UP();
+ }
+ Node::UP first(_children.front());
+ _children.erase(_children.begin());
+ return first;
+}
+
}
diff --git a/searchlib/src/vespa/searchlib/query/tree/intermediate.h b/searchlib/src/vespa/searchlib/query/tree/intermediate.h
index 052dc1db269..2f4323f8e87 100644
--- a/searchlib/src/vespa/searchlib/query/tree/intermediate.h
+++ b/searchlib/src/vespa/searchlib/query/tree/intermediate.h
@@ -20,7 +20,9 @@ class Intermediate : public Node
const std::vector<Node *> &getChildren() const { return _children; }
Intermediate &reserve(size_t sz) { _children.reserve(sz); return *this; }
+ Intermediate &prepend(Node::UP child);
Intermediate &append(Node::UP child);
+ Node::UP stealFirst();
};
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
index 212c9439e6b..997f9afc54f 100644
--- a/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/fake_searchable.cpp
@@ -17,8 +17,7 @@ using search::query::StringTerm;
using search::query::SubstringTerm;
using search::query::SuffixTerm;
-namespace search {
-namespace queryeval {
+namespace search::queryeval {
FakeSearchable::FakeSearchable()
: _tag("<undef>"),
@@ -74,7 +73,7 @@ LookupVisitor<Map>::LookupVisitor(Searchable &searchable, const IRequestContext
{}
template <class Map>
-LookupVisitor<Map>::~LookupVisitor() { }
+LookupVisitor<Map>::~LookupVisitor() = default;
template <class Map>
template <class TermNode>
@@ -83,15 +82,13 @@ LookupVisitor<Map>::visitTerm(TermNode &n) {
const vespalib::string term_string = termAsString(n);
FakeResult result;
- typename Map::const_iterator pos =
- _map.find(typename Map::key_type(getField().getName(), term_string));
+ auto pos = _map.find(typename Map::key_type(getField().getName(), term_string));
if (pos != _map.end()) {
result = pos->second;
}
- FakeBlueprint *fake = new FakeBlueprint(getField(), result);
- Blueprint::UP b(fake);
+ auto fake = std::make_unique<FakeBlueprint>(getField(), result);
fake->tag(_tag).term(term_string);
- setResult(std::move(b));
+ setResult(std::move(fake));
}
} // namespace search::queryeval::<unnamed>
@@ -106,9 +103,6 @@ FakeSearchable::createBlueprint(const IRequestContext & requestContext,
return visitor.getResult();
}
-FakeSearchable::~FakeSearchable()
-{
-}
+FakeSearchable::~FakeSearchable() = default;
-} // namespace search::queryeval
-} // namespace search
+}
diff --git a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
index 5cb51aa4fd0..0a11203c390 100644
--- a/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/intermediate_blueprints.cpp
@@ -208,7 +208,7 @@ AndBlueprint::inheritStrict(size_t i) const
SearchIterator::UP
AndBlueprint::createIntermediateSearch(const MultiSearch::Children &subSearches,
- bool strict, search::fef::MatchData & md) const
+ bool strict, search::fef::MatchData & md) const
{
UnpackInfo unpackInfo(calculateUnpackInfo(md));
AndSearch * search = 0;