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]