mayankshriv opened a new pull request, #18552: URL: https://github.com/apache/pinot/pull/18552
## Summary - **Reject enabling/disabling upsert on existing tables** — previously only logged at INFO level, allowing silent breakage (queries returning duplicates when upsert removed, undefined behavior when added) - **Reject `deleteRecordColumn` changes** — was documented in javadoc as checked but the code was never implemented; changing it mid-flight causes deletes to silently use the wrong column - **Reject `consistencyMode` changes** — changing mid-flight causes query isolation / segment visibility state machine corruption All checks follow the existing pattern: rejected by default, bypassable with `force=true` on the update API. > **Note:** This is a behavioral change. Users who previously toggled upsert on/off or changed these fields without `force=true` will now get a `TableConfigBackwardIncompatibleException`. The `force=true` escape hatch is available for operators who understand the risks. ## Tests added - Rejects adding upsert to a non-upsert table and removing upsert from an upsert table - Rejects changing, adding, or removing deleteRecordColumn - Rejects changing consistencyMode (e.g. NONE → SYNC) - Verifies identical upsert config produces no violations - Verifies non-upsert tables produce no violations ## Test plan - [x] All new backward-compat tests pass (`TableConfigUtilsTest#testValidateBackwardCompatibility*`) - [x] Existing `testValidateBackwardCompatibilityAllowsPartialUpsertStrategyChanges` still passes - [x] Spotless, checkstyle, license checks pass clean 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- 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]
