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

   ### What problem does this PR solve?
   
   Related PR: https://github.com/apache/doris-thirdparty/pull/431 (merge the 
ORC dependency fix first)
   
   A condition-cache granule can start in a stripe's SARG-filtered suffix while 
containing a matching row in the next stripe. On an initialized stripe, ORC's 
`seekToRow()` uses the stripe-end sentinel as a row-group index. This can 
access past the index when the stripe ends on an index boundary, or prematurely 
return EOF when the last row group is partial.
   
   The same-stripe fast path originates in [Apache ORC 
ORC-1170](https://github.com/apache/orc/pull/1114); the same missing stripe-end 
handling remains in the current upstream C++ reader.
   
   Pin the ORC fix that initializes the next selected stripe before positioning 
its column readers. Preserve SARG pruning, lazy reads and split boundaries.
   
   Add a Doris reader regression and a 1.5 KB synthetic ORC fixture with its 
generator. The fixture has two 20,000-row stripes, a 10,000-row index stride, 
and one matching row at the start of each stripe. A cache hit seeks to row 
18,432 in the first stripe's filtered suffix. The SQL regression compares 
cache-disabled and cached results with lazy reads and min/max pruning enabled 
or disabled, and checks the profile for actual cache hits and skipped rows.
   
   ### Release note
   
   Fix potential crashes and missing rows when ORC condition-cache seeks reach 
a SARG-filtered stripe suffix.
   
   ### Check List (For Author)
   
   - Test:
     - [x] Unit Test: 247 ORC-related BE tests passed under AddressSanitizer, 
including the new Doris condition-cache case and 32 dependency boundary cases.
     - [x] Unit Test: 56 focused standalone ORC tests passed under 
AddressSanitizer. Reverting the fix makes all 16 initialized-stripe boundary 
cases fail.
     - [ ] Regression test: SQL suite added; Groovy compilation checked. The 
external SQL suite has not been executed locally.
     - [x] clang-format 16 and BE build-hygiene checks passed.
   - Behavior changed:
     - [x] Yes. Safely advance to the next matching stripe or EOF.
   - Does this need documentation?
     - [x] 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