diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp index ace0f0a668..b8013bc3e4 100644 --- a/be/src/olap/rowset/beta_rowset_reader.cpp +++ b/be/src/olap/rowset/beta_rowset_reader.cpp @@ -38,7 +38,14 @@ OLAPStatus BetaRowsetReader::init(RowsetReaderContext* read_context) { // convert RowsetReaderContext to StorageReadOptions StorageReadOptions read_options; - read_options.stats = _context->stats; + if (_context->stats == nullptr) { + // schema change/compaction should use owned_stats + // When doing schema change/compaction, + // only statistics of this RowsetReader is necessary. + read_options.stats = &_owned_stats; + } else { + read_options.stats = _context->stats; + } read_options.conditions = read_context->conditions; if (read_context->lower_bound_keys != nullptr) { for (int i = 0; i < read_context->lower_bound_keys->size(); ++i) { diff --git a/be/src/olap/rowset/beta_rowset_reader.h b/be/src/olap/rowset/beta_rowset_reader.h index 44ea7d3ef4..c4e244e56d 100644 --- a/be/src/olap/rowset/beta_rowset_reader.h +++ b/be/src/olap/rowset/beta_rowset_reader.h @@ -53,6 +53,8 @@ private: BetaRowsetSharedPtr _rowset; RowsetReaderContext* _context; + OlapReaderStatistics _owned_stats; + std::unique_ptr _iterator; std::unique_ptr _input_block;