aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/query/streaming
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/query/streaming')
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/query.cpp4
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/query.h8
-rw-r--r--searchlib/src/vespa/searchlib/query/streaming/querynode.cpp6
3 files changed, 18 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.cpp b/searchlib/src/vespa/searchlib/query/streaming/query.cpp
index 4773827c036..309edf4d472 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/query.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/query.cpp
@@ -126,6 +126,10 @@ TrueNode::evaluate() const
return true;
}
+bool FalseNode::evaluate() const {
+ return false;
+}
+
bool
AndQueryNode::evaluate() const
{
diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.h b/searchlib/src/vespa/searchlib/query/streaming/query.h
index 75388d564ee..d77bb7f0f65 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/query.h
+++ b/searchlib/src/vespa/searchlib/query/streaming/query.h
@@ -49,6 +49,14 @@ public:
bool evaluate() const override;
};
+/** False operator. Matches nothing. */
+class FalseNode : public QueryConnector
+{
+public:
+ FalseNode() : QueryConnector("AND") { }
+ bool evaluate() const override;
+};
+
/**
N-ary Or operator that simply ANDs all the nodes together.
*/
diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
index 38939e3a8a4..060573861d9 100644
--- a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
+++ b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp
@@ -64,6 +64,12 @@ QueryNode::Build(const QueryNode * parent, const QueryNodeResultFactory & factor
}
}
break;
+ case ParseItem::ITEM_TRUE:
+ qn = std::make_unique<TrueNode>();
+ break;
+ case ParseItem::ITEM_FALSE:
+ qn = std::make_unique<FalseNode>();
+ break;
case ParseItem::ITEM_GEO_LOCATION_TERM:
// TODO implement this:
// vespalib::string field = queryRep.getIndexName();