xiangfu0 opened a new pull request, #19385:
URL: https://github.com/apache/pinot/pull/19385

   ## Summary
   
   - add a narrow `GroupKeyGeneratorProvider` extension point for single-stage 
group-by planning
   - expose immutable physical group-key metadata through 
`GroupKeyGeneratorContext`
   - preserve the existing generator-selection hot path when the default 
provider is used
   - make custom generator ownership explicit across execution, 
materialization, combine, and failure paths
   
   This is an extension seam only. The default provider is an identity 
sentinel, so existing queries keep the current built-in group-key generators 
and behavior.
   
   ## Extension example
   
   ```java
   class CustomPlanMaker extends InstancePlanMakerImplV2 {
     @Override
     protected GroupKeyGeneratorProvider getGroupKeyGeneratorProvider(
         SegmentContext segmentContext, QueryContext queryContext) {
       return context -> {
         if (context.getGroupKeys().size() != 1) {
           return Optional.empty();
         }
         return createSpecializedGenerator(context);
       };
     }
   }
   ```
   
   Providers return `Optional.empty()` for unsupported physical shapes. A 
returned generator is query-owned and participates in Pinot's 
close/ownership-transfer contract.
   
   ## Validation
   
   - 89 focused `pinot-core` group-by/provider/lifecycle tests
   - formatting, Checkstyle, and license checks for `pinot-core`
   - existing single-value inter-segment group-by suite included in the focused 
run
   
   ## Scope
   
   The provider is currently `LimitedPrivate("StarTree")` and `Unstable`. This 
PR does not add an off-heap implementation or a new query/config option; those 
live in the dependent StarTree change.
   


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