You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by "gortiz (via GitHub)" <gi...@apache.org> on 2026/07/21 14:40:38 UTC
[PR] [MSE] Remove the experimental enriched join feature [pinot]
gortiz opened a new pull request, #19033:
URL: https://github.com/apache/pinot/pull/19033
## Summary
Enriched joins were an experimental feature (introduced in #16123 by @songwdfu — thanks for the original contribution) that fused project/filter/sort into the hash join operator to try to improve performance. In practice they did not deliver the expected gains, so this PR removes the feature.
The removal is deliberately **backward compatible**: the query option becomes a no-op rather than an error, and the wire/plan-node/visitor surface is kept and `@Deprecated` rather than deleted, so a plan serialized by an older-version broker still deserializes during a rolling upgrade.
## What was removed
- `PinotEnrichedJoinRule`, `PinotLogicalEnrichedJoin` (Calcite rel), and `EnrichedHashJoinOperator`, plus their tests and the `EnrichedJoin.json` resource.
- The rule wiring in `QueryEnvironment`: the `JoinToEnrichedJoin` rule is no longer registered, so a query requesting it via `usePlannerRules` is **silently ignored** instead of failing.
- The always-null enriched `filterProjectRexNodes` field/constructor on the v2 `PhysicalJoin`.
## What was retained (`@Deprecated`, for backward compatibility)
- `EnrichedJoinNode` plan node, `PlanNodeVisitor#visitEnrichedJoin` and all its overrides, the serde path, `plan.proto` field 17 (retained, **not reused**), and the `CommonConstants.JOIN_TO_ENRICHED_JOIN` constant.
- `DefaultJoinOperatorFactory#createEnrichedJoinOperator` now throws `UnsupportedOperationException`, so if an older broker's plan carrying an `EnrichedJoinNode` reaches an upgraded server it **fails loudly** rather than silently executing a degraded join.
- A sunset note in the `EnrichedJoinNode` javadoc documents when the skeleton can be fully deleted (once no supported broker version still emits proto field 17).
## Compatibility notes
- **SPI**: `pinot-spi` `CommonConstants.JOIN_TO_ENRICHED_JOIN` is only annotated `@Deprecated`; its string value is unchanged, so existing `usePlannerRules` / `DEFAULT_DISABLED_RULES` references keep working.
- **Rolling upgrade**: since enriched joins were experimental and disabled by default, the fail-loud behavior on the server for a mixed-version plan is intentional.
## Testing
- New `PlanNodeSerDeTest#testEnrichedJoinNodeSerDe` — direct serde round-trip guarding the retained wire format (asserts the enriched-specific fields explicitly, since `JoinNode#equals` ignores them).
- New `QueryCompilationTest#testEnrichedJoinRuleIsNoOp` — verifies `usePlannerRules='JoinToEnrichedJoin'` plans successfully as an ordinary join with no enriched node.
- New `DefaultJoinOperatorFactoryTest` — verifies the runtime rejects an enriched join.
- Existing `ResourceBasedQueryPlansTest`, `RelToPlanNodeConverterTest`, `PlanNodeSerDeTest`, `QueryCompilationTest`, `HashJoinOperatorTest` pass. Checkstyle, spotless, and license checks pass.
--
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: commits-unsubscribe@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] [MSE] Remove the experimental enriched join feature [pinot]
Posted by "gortiz (via GitHub)" <gi...@apache.org>.
gortiz merged PR #19033:
URL: https://github.com/apache/pinot/pull/19033
--
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: commits-unsubscribe@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] [MSE] Remove the experimental enriched join feature [pinot]
Posted by "xiangfu0 (via GitHub)" <gi...@apache.org>.
xiangfu0 commented on PR #19033:
URL: https://github.com/apache/pinot/pull/19033#issuecomment-5047426206
Opened follow-up docs PR: https://github.com/pinot-contrib/pinot-docs/pull/934
--
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: commits-unsubscribe@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] [MSE] Remove the experimental enriched join feature [pinot]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #19033:
URL: https://github.com/apache/pinot/pull/19033#issuecomment-5035975994
## [Codecov](https://app.codecov.io/gh/apache/pinot/pull/19033?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 65.31%. Comparing base ([`a6d16ef`](https://app.codecov.io/gh/apache/pinot/commit/a6d16ef377265b060635407e71e872fe3376aef6?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`19a8a71`](https://app.codecov.io/gh/apache/pinot/commit/19a8a71b69a7270943ce542cadbba03df9e86c34?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## master #19033 +/- ##
============================================
- Coverage 65.37% 65.31% -0.06%
+ Complexity 1405 1399 -6
============================================
Files 3423 3420 -3
Lines 215978 215466 -512
Branches 34188 34098 -90
============================================
- Hits 141202 140740 -462
+ Misses 63409 63395 -14
+ Partials 11367 11331 -36
```
| [Flag](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [custom-integration1](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration1](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration2](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [java-25](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `65.31% <100.00%> (-0.06%)` | :arrow_down: |
| [temurin](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `65.31% <100.00%> (-0.06%)` | :arrow_down: |
| [unittests](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `65.31% <100.00%> (-0.06%)` | :arrow_down: |
| [unittests1](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `57.00% <100.00%> (-0.11%)` | :arrow_down: |
| [unittests2](https://app.codecov.io/gh/apache/pinot/pull/19033/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `37.64% <0.00%> (+0.07%)` | :arrow_up: |
Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more.
</details>
[:umbrella: View full report in Codecov by Harness](https://app.codecov.io/gh/apache/pinot/pull/19033?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
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: commits-unsubscribe@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org