diff --git a/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.cpp b/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.cpp index 15646679cf..91c153f143 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.cpp +++ b/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.cpp @@ -244,6 +244,17 @@ int64_t DorisCompoundReader::fileLength(const char* name) const { return e->length; } +bool DorisCompoundReader::openInput(const char* name, + std::unique_ptr& ret, + CLuceneError& error, int32_t bufferSize) { + lucene::store::IndexInput* tmp; + bool success = openInput(name, tmp, error, bufferSize); + if (success) { + ret.reset(tmp); + } + return success; +} + bool DorisCompoundReader::openInput(const char* name, lucene::store::IndexInput*& ret, CLuceneError& error, int32_t bufferSize) { if (stream == nullptr) { diff --git a/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.h b/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.h index 5c0d963247..75bf1ab633 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.h +++ b/be/src/olap/rowset/segment_v2/inverted_index_compound_reader.h @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -82,6 +83,8 @@ public: int64_t fileLength(const char* name) const override; bool openInput(const char* name, lucene::store::IndexInput*& ret, CLuceneError& err, int32_t bufferSize = -1) override; + bool openInput(const char* name, std::unique_ptr& ret, + CLuceneError& err, int32_t bufferSize = -1); void renameFile(const char* from, const char* to) override; void touchFile(const char* name) override; lucene::store::IndexOutput* createOutput(const char* name) override; diff --git a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp index 6e94640255..a3c49c08a5 100644 --- a/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp +++ b/be/src/olap/rowset/segment_v2/inverted_index_reader.cpp @@ -579,9 +579,9 @@ Status BkdIndexReader::get_bkd_reader(std::shared_ptr(); } CLuceneError err; - lucene::store::IndexInput* data_in; - lucene::store::IndexInput* meta_in; - lucene::store::IndexInput* index_in; + std::unique_ptr data_in; + std::unique_ptr meta_in; + std::unique_ptr index_in; if (!compoundReader->openInput( InvertedIndexDescriptor::get_temporary_bkd_index_data_file_name().c_str(), data_in, @@ -596,12 +596,12 @@ Status BkdIndexReader::get_bkd_reader(std::shared_ptr(); } - bkdReader = std::make_shared(data_in); - if (0 == bkdReader->read_meta(meta_in)) { + bkdReader = std::make_shared(data_in.release()); + if (0 == bkdReader->read_meta(meta_in.get())) { return Status::EndOfFile("bkd index file is empty"); } - bkdReader->read_index(index_in); + bkdReader->read_index(index_in.get()); _type_info = get_scalar_type_info((FieldType)bkdReader->type); if (_type_info == nullptr) {