This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch dev-1.0.1 in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
commit 6383b60b5a6d022bf4e453c0bfbf4e451a529c02 Author: HappenLee <[email protected]> AuthorDate: Tue Jun 14 15:35:31 2022 +0800 [Bug] Fix bug push value predicate of unique table when have sequence column (#10060) Co-authored-by: lihaopeng <[email protected]> --- be/src/olap/rowset/beta_rowset_reader.cpp | 14 ++++++++++---- be/src/olap/rowset/beta_rowset_reader.h | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp index 3148656dd6..89b150dca9 100644 --- a/be/src/olap/rowset/beta_rowset_reader.cpp +++ b/be/src/olap/rowset/beta_rowset_reader.cpp @@ -79,10 +79,8 @@ OLAPStatus BetaRowsetReader::init(RowsetReaderContext* read_context) { read_context->predicates->begin(), read_context->predicates->end()); } - // if unique table with rowset [0-x] or [0-1] [2-y] [...], - // value column predicates can be pushdown on rowset [0-x] or [2-y] - if (_rowset->keys_type() == UNIQUE_KEYS && - (_rowset->start_version() == 0 || _rowset->start_version() == 2)) { + + if (_should_push_down_value_predicates()) { if (read_context->value_predicates != nullptr) { read_options.column_predicates.insert(read_options.column_predicates.end(), read_context->value_predicates->begin(), @@ -240,4 +238,12 @@ OLAPStatus BetaRowsetReader::next_block(vectorized::Block* block) { return OLAP_SUCCESS; } +bool BetaRowsetReader::_should_push_down_value_predicates() const { + // if unique table with rowset [0-x] or [0-1] [2-y] [...], + // value column predicates can be pushdown on rowset [0-x] or [2-y], [2-y] must be compaction and not overlapping + return _rowset->keys_type() == UNIQUE_KEYS && + (_rowset->start_version() == 0 || _rowset->start_version() == 2) && + !_rowset->_rowset_meta->is_segments_overlapping(); +} + } // namespace doris diff --git a/be/src/olap/rowset/beta_rowset_reader.h b/be/src/olap/rowset/beta_rowset_reader.h index 55a8938dbf..919e13cb7a 100644 --- a/be/src/olap/rowset/beta_rowset_reader.h +++ b/be/src/olap/rowset/beta_rowset_reader.h @@ -56,6 +56,8 @@ public: RowsetTypePB type() const override { return RowsetTypePB::BETA_ROWSET; } private: + bool _should_push_down_value_predicates() const; + std::unique_ptr<Schema> _schema; RowsetReaderContext* _context; BetaRowsetSharedPtr _rowset; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
