[Bug] Fix doris pipeline shared scan and top n opt (#19599)
This commit is contained in:
@ -98,7 +98,8 @@ Status BlockReader::_init_collect_iter(const ReaderParams& read_params) {
|
||||
// check if rowsets are noneoverlapping
|
||||
_is_rowsets_overlapping = _rowsets_overlapping(read_params.rs_readers);
|
||||
_vcollect_iter.init(this, _is_rowsets_overlapping, read_params.read_orderby_key,
|
||||
read_params.read_orderby_key_reverse);
|
||||
read_params.read_orderby_key_reverse,
|
||||
read_params.rs_readers_segment_offsets);
|
||||
|
||||
_reader_context.push_down_agg_type_opt = read_params.push_down_agg_type_opt;
|
||||
std::vector<RowsetReaderSharedPtr> valid_rs_readers;
|
||||
@ -108,12 +109,14 @@ Status BlockReader::_init_collect_iter(const ReaderParams& read_params) {
|
||||
bool is_empty = read_params.rs_readers_segment_offsets.empty();
|
||||
for (int i = 0; i < read_params.rs_readers.size(); ++i) {
|
||||
auto& rs_reader = read_params.rs_readers[i];
|
||||
|
||||
// _vcollect_iter.topn_next() will init rs_reader by itself
|
||||
if (!_vcollect_iter.use_topn_next()) {
|
||||
RETURN_IF_ERROR(rs_reader->init(
|
||||
&_reader_context,
|
||||
is_empty ? std::pair {0, 0} : read_params.rs_readers_segment_offsets[i]));
|
||||
}
|
||||
|
||||
Status res = _vcollect_iter.add_child(rs_reader);
|
||||
if (!res.ok() && !res.is<END_OF_FILE>()) {
|
||||
LOG(WARNING) << "failed to add child to iterator, err=" << res;
|
||||
|
||||
Reference in New Issue
Block a user