diff --git a/be/src/olap/generic_iterators.cpp b/be/src/olap/generic_iterators.cpp index 8fd8e685fd..09b5f31233 100644 --- a/be/src/olap/generic_iterators.cpp +++ b/be/src/olap/generic_iterators.cpp @@ -143,8 +143,6 @@ public: // will return a valid row bool valid() const { return _valid; } - int is_partial_delete() const { return _block.delete_state() == DEL_PARTIAL_SATISFIED; } - uint64_t data_id() const { return _iter->data_id(); } private: @@ -276,10 +274,6 @@ Status MergeIterator::next_batch(RowBlockV2* block) { // copy current row to block copy_row(&dst_row, ctx->current_row(), block->pool()); - // TODO(hkp): refactor conditions and filter rows here with delete conditions - if (ctx->is_partial_delete()) { - block->set_delete_state(DEL_PARTIAL_SATISFIED); - } RETURN_IF_ERROR(ctx->advance()); if (ctx->valid()) { _merge_heap->push(ctx); diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index bbfba19172..4c26e88a28 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -155,13 +155,11 @@ Status ColumnReader::read_page(const ColumnIteratorOptions& iter_opts, const Pag } Status ColumnReader::get_row_ranges_by_zone_map( - CondColumn* cond_column, CondColumn* delete_condition, - std::unordered_set* delete_partial_filtered_pages, RowRanges* row_ranges) { + CondColumn* cond_column, CondColumn* delete_condition, RowRanges* row_ranges) { RETURN_IF_ERROR(_ensure_index_loaded()); std::vector page_indexes; - RETURN_IF_ERROR(_get_filtered_pages(cond_column, delete_condition, - delete_partial_filtered_pages, &page_indexes)); + RETURN_IF_ERROR(_get_filtered_pages(cond_column, delete_condition, &page_indexes)); RETURN_IF_ERROR(_calculate_row_ranges(page_indexes, row_ranges)); return Status::OK(); } @@ -215,7 +213,6 @@ bool ColumnReader::_zone_map_match_condition(const ZoneMapPB& zone_map, Status ColumnReader::_get_filtered_pages( CondColumn* cond_column, CondColumn* delete_condition, - std::unordered_set* delete_partial_filtered_pages, std::vector* page_indexes) { FieldType type = _type_info->type(); const std::vector& zone_maps = _zone_map_index->page_zone_maps(); @@ -234,8 +231,6 @@ Status ColumnReader::_get_filtered_pages( int state = delete_condition->del_eval({min_value.get(), max_value.get()}); if (state == DEL_SATISFIED) { should_read = false; - } else if (state == DEL_PARTIAL_SATISFIED) { - delete_partial_filtered_pages->insert(i); } } if (should_read) { @@ -530,13 +525,6 @@ Status FileColumnIterator::next_batch(size_t* n, ColumnBlockView* dst, bool* has } } - auto iter = _delete_partial_satisfied_pages.find(_page->page_index); - bool is_partial = iter != _delete_partial_satisfied_pages.end(); - if (is_partial) { - dst->column_block()->set_delete_state(DEL_PARTIAL_SATISFIED); - } else { - dst->column_block()->set_delete_state(DEL_NOT_SATISFIED); - } // number of rows to be read from this page size_t nrows_in_page = std::min(remaining, _page->remaining()); size_t nrows_to_read = nrows_in_page; @@ -643,7 +631,7 @@ Status FileColumnIterator::get_row_ranges_by_zone_map(CondColumn* cond_column, RowRanges* row_ranges) { if (_reader->has_zone_map()) { RETURN_IF_ERROR(_reader->get_row_ranges_by_zone_map( - cond_column, delete_condition, &_delete_partial_satisfied_pages, row_ranges)); + cond_column, delete_condition, row_ranges)); } return Status::OK(); } diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index 6fa1958d2a..0e546f54bd 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -123,9 +123,7 @@ public: // get row ranges with zone map // - cond_column is user's query predicate // - delete_condition is a delete predicate of one version - Status get_row_ranges_by_zone_map(CondColumn* cond_column, CondColumn* delete_condition, - std::unordered_set* delete_partial_filtered_pages, - RowRanges* row_ranges); + Status get_row_ranges_by_zone_map(CondColumn* cond_column, CondColumn* delete_condition, RowRanges* row_ranges); // get row ranges with bloom filter index Status get_row_ranges_by_bloom_filter(CondColumn* cond_column, RowRanges* row_ranges); @@ -161,9 +159,7 @@ private: void _parse_zone_map(const ZoneMapPB& zone_map, WrapperField* min_value_container, WrapperField* max_value_container) const; - Status _get_filtered_pages(CondColumn* cond_column, CondColumn* delete_conditions, - std::unordered_set* delete_partial_filtered_pages, - std::vector* page_indexes); + Status _get_filtered_pages(CondColumn* cond_column, CondColumn* delete_conditions, std::vector* page_indexes); Status _calculate_row_ranges(const std::vector& page_indexes, RowRanges* row_ranges); @@ -312,9 +308,6 @@ private: // current value ordinal ordinal_t _current_ordinal = 0; - - // page indexes those are DEL_PARTIAL_SATISFIED - std::unordered_set _delete_partial_satisfied_pages; }; class ArrayFileColumnIterator final : public ColumnIterator { diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index 5e80270648..9d33ec3d25 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -476,7 +476,6 @@ Status SegmentIterator::_read_columns(const std::vector& column_ids, R ColumnBlockView dst(&column_block, row_offset); size_t rows_read = nrows; RETURN_IF_ERROR(_column_iterators[cid]->next_batch(&rows_read, &dst)); - block->set_delete_state(column_block.delete_state()); DCHECK_EQ(nrows, rows_read); } return Status::OK();