Skip to content

Commit

Permalink
r
Browse files Browse the repository at this point in the history
  • Loading branch information
mymeiyi committed Sep 30, 2024
1 parent d596002 commit 628c507
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 5 deletions.
1 change: 1 addition & 0 deletions be/src/olap/rowset/rowset_reader_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ struct RowsetReaderContext {
// for unique key merge on write
bool enable_unique_key_merge_on_write = false;
const DeleteBitmap* delete_bitmap = nullptr;
bool query_mow_in_mor = false;
bool record_rowids = false;
bool is_vertical_compaction = false;
bool is_key_column_group = false;
Expand Down
10 changes: 7 additions & 3 deletions be/src/olap/tablet_reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,12 @@ Status TabletReader::_capture_rs_readers(const ReaderParams& read_params) {
}
if (_tablet_schema->keys_type() == UNIQUE_KEYS &&
_tablet->enable_unique_key_merge_on_write()) {
// unique keys with merge on write, no need to merge sort keys in rowset
need_ordered_result = false;
// need_ordered_result = true;
if (read_params.query_mow_in_mor) {
need_ordered_result = true;
} else {
// unique keys with merge on write, no need to merge sort keys in rowset
need_ordered_result = false;
}
}
if (_aggregation) {
// compute engine will aggregate rows with the same key,
Expand Down Expand Up @@ -253,6 +256,7 @@ Status TabletReader::_capture_rs_readers(const ReaderParams& read_params) {
_reader_context.is_unique = tablet()->keys_type() == UNIQUE_KEYS;
_reader_context.merged_rows = &_merged_rows;
_reader_context.delete_bitmap = read_params.delete_bitmap;
_reader_context.query_mow_in_mor = read_params.query_mow_in_mor;
_reader_context.enable_unique_key_merge_on_write = tablet()->enable_unique_key_merge_on_write();
_reader_context.record_rowids = read_params.record_rowids;
_reader_context.is_key_column_group = read_params.is_key_column_group;
Expand Down
1 change: 1 addition & 0 deletions be/src/olap/tablet_reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ class TabletReader {
std::vector<RowSetSplits> rs_splits;
// For unique key table with merge-on-write
DeleteBitmap* delete_bitmap = nullptr;
bool query_mow_in_mor = false;

// return_columns is init from query schema
std::vector<uint32_t> return_columns;
Expand Down
1 change: 1 addition & 0 deletions be/src/vec/exec/scan/new_olap_scanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ Status NewOlapScanner::_init_tablet_reader_params(
!(_state->skip_delete_bitmap() || _state->query_mow_in_mor())) {
_tablet_reader_params.delete_bitmap = &tablet->tablet_meta()->delete_bitmap();
}
_tablet_reader_params.query_mow_in_mor = _state->query_mow_in_mor();
/*LOG(INFO) << "sout: skip merge=" << _state->skip_storage_engine_merge()
<< ", query_id=" << print_id(_state->query_id())
<< ", tablet_id=" << tablet->tablet_id() << ", tablet=" << tablet;*/
Expand Down
7 changes: 5 additions & 2 deletions be/src/vec/olap/vcollect_iterator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,11 @@ void VCollectIterator::init(TabletReader* reader, bool ori_data_overlapping, boo
(_reader->_direct_mode || _reader->_tablet->keys_type() == KeysType::DUP_KEYS ||
(_reader->_tablet->keys_type() == KeysType::UNIQUE_KEYS &&
_reader->_tablet->enable_unique_key_merge_on_write()))) {
_merge = false;
_merge = true;
if (_reader->_reader_context.query_mow_in_mor) {
_merge = true;
} else {
_merge = false;
}
}

// When data is none overlapping, no need to build heap to traverse data
Expand Down

0 comments on commit 628c507

Please sign in to comment.