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]

Reply via email to