alpass163 opened a new pull request, #16760:
URL: https://github.com/apache/iotdb/pull/16760

   This PR implements the EXCEPT DISTINCT and EXCEPT ALL operators. This is 
achieved by introducing two new optimizer rules that translate the ExceptNode 
into a more fundamental execution plan:
   
   (1)ImplementExceptDistinctAsUnion (EXCEPT DISTINCT)
   
   This rule translates EXCEPT DISTINCT into a Union + Aggregation + Filter 
plan.
   
   It utilizes SetOperationNodeTranslator to append marker columns, then uses 
Aggregation (GROUP BY) to count the occurrences of each row in each 
sub-relation.
   
   Finally, a FilterNode selects rows that appear in the first relation (count1 
>= 1) but not in any of the subsequent relations (count2...n == 0).
   
   (2)ImplementExceptAllAsUnion (EXCEPT ALL)
   
   This rule translates EXCEPT ALL into a Union + Window + Filter plan.
   
   It uses a Window function to compute the exact occurrence count for each row 
from each sub-relation (count1, count2...) along with a ROW_NUMBER().
   
   A FilterNode then applies the expression row_number <= 
greatest(greatest(count1 - count2, 0) - count3...) to precisely implement the 
bag semantics subtraction required by EXCEPT ALL.
   
   The SetOperationNodeTranslator class contains the core, shared logic used by 
both translation rules.


-- 
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]

Reply via email to