This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new ef003cde1aa [Fix](orc-reader) Fix merge range not sorted in new merge
io facility of orc-reader. (#51102)
ef003cde1aa is described below
commit ef003cde1aaae74e378a9f69d5f0709ff78931df
Author: Qi Chen <[email protected]>
AuthorDate: Sat May 24 14:31:08 2025 +0800
[Fix](orc-reader) Fix merge range not sorted in new merge io facility of
orc-reader. (#51102)
### What problem does this PR solve?
Related PR: #45966
Fix merge range not sorted in new merge io facility of orc-reader.
Because the ranges taken from std::unordered_map<orc::StreamId,
io::PrefetchRange>&ranges are not sorted, merging adjacent ranges will have a
very poor effect.
---
be/src/vec/exec/format/orc/vorc_reader.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp
b/be/src/vec/exec/format/orc/vorc_reader.cpp
index 6f0e28a231f..921d63da8ae 100644
--- a/be/src/vec/exec/format/orc/vorc_reader.cpp
+++ b/be/src/vec/exec/format/orc/vorc_reader.cpp
@@ -2793,6 +2793,8 @@ void
ORCFileInputStream::_build_small_ranges_input_stripe_streams(
all_ranges.reserve(ranges.size());
std::transform(ranges.begin(), ranges.end(),
std::back_inserter(all_ranges),
[](const auto& pair) { return pair.second; });
+ std::sort(all_ranges.begin(), all_ranges.end(),
+ [](const auto& a, const auto& b) { return a.start_offset <
b.start_offset; });
auto merged_ranges = io::PrefetchRange::merge_adjacent_seq_ranges(
all_ranges, _orc_max_merge_distance_bytes,
_orc_once_max_read_bytes);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]