This is an automated email from the ASF dual-hosted git repository. jianliangqi pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push: new 02f15a8ef0e [fix](inverted index) Fix Null Pointer Exception in function match(#45456)(#45774) 02f15a8ef0e is described below commit 02f15a8ef0ed51a1f6560c567fcdca4df8f97d3e Author: zzzxl <yangs...@selectdb.com> AuthorDate: Tue Dec 24 11:27:13 2024 +0800 [fix](inverted index) Fix Null Pointer Exception in function match(#45456)(#45774) pick: https://github.com/apache/doris/pull/45456 --- be/src/vec/functions/match.cpp | 3 ++ be/test/vec/function/function_match_test.cpp | 61 ++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/be/src/vec/functions/match.cpp b/be/src/vec/functions/match.cpp index 4866c444d7c..5874c5c5c57 100644 --- a/be/src/vec/functions/match.cpp +++ b/be/src/vec/functions/match.cpp @@ -171,6 +171,9 @@ void FunctionMatchBase::analyse_query_str_token(std::vector<std::string>* query_ const std::string& column_name) const { VLOG_DEBUG << "begin to run " << get_name() << ", parser_type: " << inverted_index_parser_type_to_string(inverted_index_ctx->parser_type); + if (inverted_index_ctx == nullptr) { + return; + } if (inverted_index_ctx->parser_type == InvertedIndexParserType::PARSER_NONE) { query_tokens->emplace_back(match_query_str); return; diff --git a/be/test/vec/function/function_match_test.cpp b/be/test/vec/function/function_match_test.cpp new file mode 100644 index 00000000000..a99650e66eb --- /dev/null +++ b/be/test/vec/function/function_match_test.cpp @@ -0,0 +1,61 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include <gtest/gtest.h> + +#include <memory> + +#include "function_test_util.h" +#include "olap/rowset/segment_v2/inverted_index_reader.h" +#include "vec/functions/match.h" + +namespace doris::vectorized { + +TEST(FunctionMatchTest, analyse_query_str) { + FunctionMatchPhrase func_match_phrase; + + { + auto inverted_index_ctx = nullptr; + std::vector<std::string> query_tokens; + func_match_phrase.analyse_query_str_token(&query_tokens, inverted_index_ctx, "a b c", + "name"); + ASSERT_EQ(query_tokens.size(), 0); + } + + { + auto inverted_index_ctx = std::make_unique<InvertedIndexCtx>(); + inverted_index_ctx->parser_type = InvertedIndexParserType::PARSER_NONE; + std::vector<std::string> query_tokens; + func_match_phrase.analyse_query_str_token(&query_tokens, inverted_index_ctx.get(), "a b c", + "name"); + ASSERT_EQ(query_tokens.size(), 1); + } + + { + auto inverted_index_ctx = std::make_unique<InvertedIndexCtx>(); + inverted_index_ctx->parser_type = InvertedIndexParserType::PARSER_ENGLISH; + auto analyzer = + doris::segment_v2::InvertedIndexReader::create_analyzer(inverted_index_ctx.get()); + inverted_index_ctx->analyzer = analyzer.get(); + std::vector<std::string> query_tokens; + func_match_phrase.analyse_query_str_token(&query_tokens, inverted_index_ctx.get(), "a b c", + "name"); + ASSERT_EQ(query_tokens.size(), 3); + } +} + +} // namespace doris::vectorized \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org