AnishMahto opened a new pull request, #56160:
URL: https://github.com/apache/spark/pull/56160

   <!--
   Thanks for sending a pull request!  Here are some tips for you:
     1. If this is your first time, please read our contributor guidelines: 
https://spark.apache.org/contributing.html
     2. Ensure you have added or run the appropriate tests for your PR: 
https://spark.apache.org/developer-tools.html
     3. If the PR is unfinished, add '[WIP]' in your PR title, e.g., 
'[WIP][SPARK-XXXX] Your PR title ...'.
     4. Be sure to keep the PR description updated to reflect all changes.
     5. Please write your PR title to summarize what this PR proposes.
     6. If possible, provide a concise example to reproduce the issue for a 
faster review.
     7. If you want to add a new configuration, please read the guideline first 
for naming configurations in
        
'core/src/main/scala/org/apache/spark/internal/config/ConfigEntry.scala'.
     8. If you want to add or modify an error type or message, please read the 
guideline first in
        'common/utils/src/main/resources/error/README.md'.
   -->
   
   ### What changes were proposed in this pull request?
   
   - **Problem.** An AutoCDC flow's key columns determine how rows are matched
     during the merge into the target. If a user changes the declared keys 
between
     pipeline runs without a full refresh, the merge silently mis-routes rows
     (updates become inserts and vice versa) and corrupts the target. We need to
     detect a key change between runs and fail fast.
   
   - **Mechanism.** Record the resolved key columns into a reserved property on
     the auxiliary table the first time it is created; on subsequent runs,
     validate the flow's declared keys against this recorded value and fail with
     `AUTOCDC_INVALID_STATE.KEY_SCHEMA_DRIFT` on mismatch.
   
   - **Implementation notes.** Aux-table creation switched from `CREATE TABLE`
     DDL to the programmatic V2 `TableCatalog.createTable` API, so the JSON
     property reaches storage as raw bytes (no SQL-literal escape layer). Three
     new structured sub-classes under `AUTOCDC_INVALID_STATE` cover
     corrupted-metadata cases caused by user tampering, all recommending
     full-refresh as remedy.
   
   ### Why are the changes needed?
   To prevent users from incorrectly changing AutoCDC keys across runs without 
a full refresh.
   
   
   ### Does this PR introduce _any_ user-facing change?
   No, unreleased change.
   
   ### How was this patch tested?
   Unit tests.
   
   
   ### Was this patch authored or co-authored using generative AI tooling?
   Claude Opus 4.7


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