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]

Reply via email to