xylaaaaa opened a new pull request, #65478:
URL: https://github.com/apache/doris/pull/65478

   ### What problem does this PR solve?
   
   Issue Number: None
   
   Related PR: None
   
   Problem Summary: ORC file scanner v2 used a thin ORC input stream that 
issued reads directly through the underlying file reader. It did not implement 
the v1 ORC stripe-level stream collection and small-range merge path, so remote 
object storage scans could regress to many small stream reads for wide ORC 
files, multi-stripe files, and lazy or predicate-driven scans. This change adds 
a v2-native ORC input stream that implements beforeReadStripe(), builds 
selected stream ranges, merges adjacent small streams with Doris PrefetchRange 
policy, and serves arbitrary repeated or backward stream reads from an 
immutable merged-range cache. Large streams and unmerged single streams 
continue to read directly. The reader is wired into ORC v2 without changing v1 
or falling back to v1.
   
   ### Release note
   
   Improve ORC file scanner v2 remote read performance by merging selected 
small stripe stream reads.
   
   ### Check List (For Author)
   
   - Test: Unit Test / Manual test / Static analysis
       - Unit Test: ./run-be-ut.sh --run 
--filter='OrcFileInputStreamTest.*:NewOrcReaderTest.StripePrefetchPublishesMergedReadProfile'
 -j 8 (passed)
       - Manual test: git diff --check (passed)
       - Manual test: build-support/check-format.sh (passed)
       - Manual test: ninja -C be/ut_build_ASAN 
src/format/CMakeFiles/Format.dir/__/format_v2/orc/orc_file_input_stream.cpp.o 
test/CMakeFiles/doris_be_test.dir/format_v2/orc/orc_file_input_stream_test.cpp.o
 (passed)
       - Static analysis: build-support/run-clang-tidy.sh --build-dir 
be/ut_build_ASAN --files ... (attempted; own signed/unsigned diagnostic fixed; 
remaining failures are pre-existing/toolchain diagnostics in 
be/src/core/types.h and be/src/io/fs/buffered_reader.h)
   - Behavior changed: Yes. ORC v2 now merges selected small stripe streams and 
reads each merged cluster through a cached span instead of issuing one remote 
read per small stream request.
   - Does this need documentation: No
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to