You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/06/14 09:05:48 UTC
[incubator-doris] 02/04: [Bug] Fix bug push value predicate of unique table when have sequence column (#10060)
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 <ha...@hotmail.com>
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 <li...@baidu.com>
---
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: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org