This is an automated email from the ASF dual-hosted git repository.

yiguolei 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 dec9cac54bd [fix](be) Enforce the sort cursor block invariant in 
release builds (#68495)
dec9cac54bd is described below

commit dec9cac54bd0d8c7774f9e600b13a2e344595349
Author: yiguolei <[email protected]>
AuthorDate: Sat Sep 26 16:50:27 2026 +0800

    [fix](be) Enforce the sort cursor block invariant in release builds (#68495)
    
    ### What problem does this PR solve?
    
    Issue Number: None
    
    Related PR: None
    
    Problem Summary: BlockSupplierSortCursorImpl requires every supplied
    block to contain rows unless EOF is set. The existing DCHECK disappears
    in release builds, allowing execution to continue if this contract is
    violated. Replace it with DORIS_CHECK so release builds throw through
    the existing exception handling instead of allowing an invalid cursor to
    reach the merge heap. The check runs per input block, not per row. This
    is an invariant enforcement change; the reported production crash has
    not been reproduced or attributed to an empty input block.
    
    ### Release note
    
    Sorted merge queries report an error in release builds if a block
    supplier returns an empty block without EOF. Debug builds retain fatal
    checking.
    
    ### Check List (For Author)
    
    - Test: Manual checks
    - Passed clang-format 16.0.5 via check-format.sh on an isolated copy of
    the changed file
        - Passed build-support/check-build-hygiene.sh and git diff --check
    - Attempted ./run-be-ut.sh --run --filter='SortMergerTest.*'; stopped
    during Java environment validation because no Java Runtime is available
    - BE build and clang-tidy not run; no compilation database is available
    - Behavior changed: Yes; enforce the existing input invariant in release
    builds
    - Does this need documentation: No
    
    ### What problem does this PR solve?
    
    Issue Number: close #xxx
    
    Related PR: #xxx
    
    Problem Summary:
    
    ### Release note
    
    None
    
    ### Check List (For Author)
    
    - Test <!-- At least one of them must be included. -->
        - [ ] Regression test
        - [ ] Unit Test
        - [ ] Manual test (add detailed scripts or steps below)
        - [ ] No need to test or manual test. Explain why:
    - [ ] This is a refactor/code format and no logic has been changed.
            - [ ] Previous test can cover this change.
            - [ ] No code files have been changed.
            - [ ] Other reason <!-- Add your reason?  -->
    
    - Behavior changed:
        - [ ] No.
        - [ ] Yes. <!-- Explain the behavior change -->
    
    - Does this need documentation?
        - [ ] No.
    - [ ] Yes. <!-- Add document PR link here. eg:
    https://github.com/apache/doris-website/pull/1214 -->
    
    ### Check List (For Reviewer who merge this PR)
    
    - [ ] Confirm the release note
    - [ ] Confirm test cases
    - [ ] Confirm document
    - [ ] Add branch pick label <!-- Add branch pick label that this PR
    should merge into -->
---
 be/src/exec/sort/sort_cursor.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/be/src/exec/sort/sort_cursor.h b/be/src/exec/sort/sort_cursor.h
index c0ae4a02edd..a8c721b792d 100644
--- a/be/src/exec/sort/sort_cursor.h
+++ b/be/src/exec/sort/sort_cursor.h
@@ -159,7 +159,7 @@ struct BlockSupplierSortCursorImpl : public 
MergeSortCursorImpl {
         }
         block->clear();
         THROW_IF_ERROR(_block_supplier(block.get(), &_is_eof));
-        DCHECK(!block->empty() or _is_eof);
+        DORIS_CHECK(!block->empty() || _is_eof);
         if (!block->empty()) {
             if (!_ordering_expr.empty()) {
                 DCHECK_EQ(_ordering_expr.size(), desc.size());


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

Reply via email to