Mryange opened a new pull request, #68210:
URL: https://github.com/apache/doris/pull/68210
Single-value aggregate state implementations were duplicated across
aggregate functions, and complex values were not handled consistently. In
particular, window functions such as `first_value`, `last_value`, `nth_value`,
`lead`, and `lag` retained a raw input column pointer and row offset. The input
column can be cleared while the window state is still alive, leaving the state
with an invalid reference.
Root cause: the shared state abstraction did not own complex values, so
aggregate functions either maintained separate implementations or referenced
input columns directly.
This change introduces reusable fixed-width, string, and owned-column
single-value states. The column-backed state materializes exactly one selected
row and is reused by complex `min`, `max`, `min_by`, `max_by`, and window value
functions. Unsupported complex comparison types use non-incremental window
evaluation. Existing fixed-width and string state serialization formats are
preserved.
Tests cover value ownership after source-column reclamation, comparison and
serialization, and verify that retained column allocation does not scale with
the number of source rows.
### 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 -->
--
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]