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]