Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
zzzxl1993 committed Aug 7, 2024
1 parent db84863 commit 6785a42
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 20 deletions.
3 changes: 1 addition & 2 deletions be/src/olap/rowset/segment_v2/segment_iterator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3065,9 +3065,8 @@ Status SegmentIterator::execute_func_expr(const vectorized::VExprSPtr& expr,
params._unique_id = _schema->unique_id(slot_expr->column_id());
params._column_name = _opts.tablet_schema->column(params._column_id).name();
params._segment_iterator = this;
params.result = result;

return expr->eval_inverted_index(expr_ctx.get(), params);
return expr->eval_inverted_index(expr_ctx.get(), params, result);
}

} // namespace segment_v2
Expand Down
5 changes: 3 additions & 2 deletions be/src/vec/exprs/vectorized_fn_call.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -263,8 +263,9 @@ bool VectorizedFnCall::can_fast_execute() const {
}

Status VectorizedFnCall::eval_inverted_index(VExprContext* context,
segment_v2::FuncExprParams& params) {
return _function->eval_inverted_index(context->fn_context(_fn_context_index), params);
segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) {
return _function->eval_inverted_index(context->fn_context(_fn_context_index), params, result);
}

bool VectorizedFnCall::equals(const VExpr& other) {
Expand Down
3 changes: 2 additions & 1 deletion be/src/vec/exprs/vectorized_fn_call.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ class VectorizedFnCall : public VExpr {

bool can_push_down_to_index() const override;
bool can_fast_execute() const override;
Status eval_inverted_index(VExprContext* context, segment_v2::FuncExprParams& params) override;
Status eval_inverted_index(VExprContext* context, segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) override;
bool equals(const VExpr& other) override;

protected:
Expand Down
3 changes: 2 additions & 1 deletion be/src/vec/exprs/vexpr.h
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,8 @@ class VExpr {

virtual bool can_push_down_to_index() const { return false; }
virtual bool can_fast_execute() const { return false; }
virtual Status eval_inverted_index(VExprContext* context, segment_v2::FuncExprParams& params) {
virtual Status eval_inverted_index(VExprContext* context, segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) {
return Status::NotSupported("Not supported execute_with_inverted_index");
}
virtual bool equals(const VExpr& other);
Expand Down
10 changes: 5 additions & 5 deletions be/src/vec/functions/function.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,8 @@ class IFunctionBase {
}

virtual bool can_push_down_to_index() const { return false; }
virtual Status eval_inverted_index(FunctionContext* context,
segment_v2::FuncExprParams& params) {
virtual Status eval_inverted_index(FunctionContext* context, segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) {
return Status::NotSupported("eval_inverted_index is not supported in function: ",
get_name());
}
Expand Down Expand Up @@ -543,9 +543,9 @@ class DefaultFunction final : public IFunctionBase {
}

bool can_push_down_to_index() const override { return function->can_push_down_to_index(); }
Status eval_inverted_index(FunctionContext* context,
segment_v2::FuncExprParams& params) override {
return function->eval_inverted_index(context, params);
Status eval_inverted_index(FunctionContext* context, segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) override {
return function->eval_inverted_index(context, params, result);
}

private:
Expand Down
15 changes: 8 additions & 7 deletions be/src/vec/functions/function_multi_match.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ Status FunctionMultiMatch::open(FunctionContext* context,
}

Status FunctionMultiMatch::eval_inverted_index(FunctionContext* context,
segment_v2::FuncExprParams& params) {
segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) {
auto* match_param = reinterpret_cast<MatchParam*>(
context->get_function_state(FunctionContext::FRAGMENT_LOCAL));
if (match_param == nullptr) {
Expand Down Expand Up @@ -151,7 +152,7 @@ Status FunctionMultiMatch::eval_inverted_index(FunctionContext* context,
auto* cache = InvertedIndexQueryCache::instance();
InvertedIndexQueryCacheHandle cache_handler;
if (cache->lookup(cache_key, &cache_handler)) {
params.result = cache_handler.get_bitmap();
result = cache_handler.get_bitmap();
return Status::OK();
}

Expand All @@ -166,16 +167,16 @@ Status FunctionMultiMatch::eval_inverted_index(FunctionContext* context,
}
const auto& index_reader = index_iterator->reader();

auto result = std::make_shared<roaring::Roaring>();
auto single_result = std::make_shared<roaring::Roaring>();
StringRef query_value(match_param->query.data());
RETURN_IF_ERROR(index_reader->query(opts.stats, opts.runtime_state,
std::to_string(column.unique_id()), &query_value,
query_type, result));
(*params.result) |= (*result);
query_type, single_result));
(*result) |= (*single_result);
}

params.result->runOptimize();
cache->insert(cache_key, params.result, &cache_handler);
result->runOptimize();
cache->insert(cache_key, result, &cache_handler);

return Status::OK();
}
Expand Down
4 changes: 2 additions & 2 deletions be/src/vec/functions/function_multi_match.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ class FunctionMultiMatch : public IFunction {

bool can_push_down_to_index() const override { return true; }

Status eval_inverted_index(FunctionContext* context,
segment_v2::FuncExprParams& params) override;
Status eval_inverted_index(FunctionContext* context, segment_v2::FuncExprParams& params,
std::shared_ptr<roaring::Roaring>& result) override;
};

} // namespace doris::vectorized

0 comments on commit 6785a42

Please sign in to comment.