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

   ### What problem does this PR solve?
   
   Issue Number: close #xxx
   
   Related PR: #xxx
   
   Problem Summary:
   
   for agg_keys tables, Nereids may incorrectly set PREAGGREGATION: ON  for a 
normal scan in a join when the other join branch contains an aggregate subquery.
   
   example sql
   ```
   select cw.term_id, cw.class_id, cw.original_num, cw.abs_week
   from repro_preagg_join cw
   join (
       select term_id, class_id, max(abs_week) as abs_week
       from repro_preagg_join
       where class_id in (10192497, 10192366)
       group by term_id, class_id
   ) mw on cw.class_id = mw.class_id
       and cw.abs_week = mw.abs_week;
   ```
   root cause:
   
   1. If repro_preagg_join is an AGGREGATE KEY table and the same key exists in 
multiple rowsets, the left scan cw should merge rows before returning data. 
However, before this fix, the plan could mark the left scan as:  
"PREAGGREGATION: ON
   "
   2. This makes be read the underlying rows directly without merging, so 
duplicated physical rows from multiple rowsets can be returned and then joined, 
producing duplicated query results.
   3. The right aggregate subquery itself is not duplicated. The wrong result 
is caused by the left sibling scan being incorrectly affected by the aggregate 
context from the right branch.
   
   
   
   ### 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]

Reply via email to