summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-06-16 12:50:20 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-06-16 13:04:54 +0000
commite16f9af477a49e009a5ec29cad863f4549669d22 (patch)
treec8ca10271ef27e89e5da30bde5099f50d902e1dd
parent56d4744194e2684077b9585780e65a6912bf181d (diff)
Forward prepareSharedState too
-rw-r--r--searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp7
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h5
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h3
5 files changed, 20 insertions, 5 deletions
diff --git a/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp b/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
index c7c3447a4cc..63484932f39 100644
--- a/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
+++ b/searchlib/src/tests/features/ranking_expression/ranking_expression_test.cpp
@@ -26,6 +26,8 @@ struct DummyExpression : IntrinsicExpression {
DummyExpression(const FeatureType &type_in) : type(type_in) {}
vespalib::string describe_self() const override { return "dummy"; }
const FeatureType &result_type() const override { return type; }
+ void prepare_shared_state(const QueryEnv &, IObjectStore &) const override {
+ }
FeatureExecutor &create_executor(const QueryEnv &, vespalib::Stash &stash) const override {
return stash.create<DummyExecutor>();
}
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
index 018da0e7bcd..4ff9d2f4e30 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_blueprint_adapter.cpp
@@ -29,8 +29,11 @@ struct IntrinsicBlueprint : IntrinsicExpression {
: blueprint(std::move(blueprint_in)), type(type_in) {}
vespalib::string describe_self() const override { return blueprint->getName(); }
const FeatureType &result_type() const override { return type; }
- FeatureExecutor &create_executor(const QueryEnv &queryEnv, vespalib::Stash &stash) const override {
- return blueprint->createExecutor(queryEnv, stash);
+ void prepare_shared_state(const QueryEnv & env, fef::IObjectStore & store) const override {
+ blueprint->prepareSharedState(env, store);
+ }
+ FeatureExecutor &create_executor(const QueryEnv &env, vespalib::Stash &stash) const override {
+ return blueprint->createExecutor(env, stash);
}
};
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
index 34c4f34b03f..79cb3f9035b 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpression/intrinsic_expression.h
@@ -11,6 +11,7 @@ namespace search::fef {
class FeatureType;
class FeatureExecutor;
class IQueryEnvironment;
+class IObjectStore;
}
namespace search::features::rankingexpression {
@@ -26,8 +27,8 @@ struct IntrinsicExpression {
using UP = std::unique_ptr<IntrinsicExpression>;
virtual vespalib::string describe_self() const = 0;
virtual const FeatureType &result_type() const = 0;
- virtual FeatureExecutor &create_executor(const QueryEnv &queryEnv,
- vespalib::Stash &stash) const = 0;
+ virtual void prepare_shared_state(const QueryEnv & env, fef::IObjectStore & store) const = 0;
+ virtual FeatureExecutor &create_executor(const QueryEnv &queryEnv, vespalib::Stash &stash) const = 0;
virtual ~IntrinsicExpression();
};
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
index ec71ab528a7..2733ec62105 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp
@@ -282,6 +282,14 @@ RankingExpressionBlueprint::createInstance() const
return std::make_unique<RankingExpressionBlueprint>(_expression_replacer);
}
+void
+RankingExpressionBlueprint::prepareSharedState(const fef::IQueryEnvironment & env, fef::IObjectStore & store) const
+{
+ if (_intrinsic_expression) {
+ return _intrinsic_expression->prepare_shared_state(env, store);
+ }
+}
+
fef::FeatureExecutor &
RankingExpressionBlueprint::createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const
{
diff --git a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
index 8d5144206ea..104e8d63a70 100644
--- a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
+++ b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.h
@@ -26,7 +26,7 @@ private:
public:
RankingExpressionBlueprint();
RankingExpressionBlueprint(rankingexpression::ExpressionReplacer::SP replacer);
- ~RankingExpressionBlueprint();
+ ~RankingExpressionBlueprint() override;
void visitDumpFeatures(const fef::IIndexEnvironment &env, fef::IDumpFeatureVisitor &visitor) const override;
fef::Blueprint::UP createInstance() const override;
@@ -37,6 +37,7 @@ public:
}
bool setup(const fef::IIndexEnvironment & env, const fef::ParameterList & params) override;
+ void prepareSharedState(const fef::IQueryEnvironment & queryEnv, fef::IObjectStore & objectStore) const override;
fef::FeatureExecutor &createExecutor(const fef::IQueryEnvironment &env, vespalib::Stash &stash) const override;
};