litiliu opened a new pull request, #3639:
URL: https://github.com/apache/fluss/pull/3639

   <!--
   Generated-by: OpenAI Codex (GPT-5) following [the 
guidelines](https://github.com/apache/fluss/blob/main/AGENTS.md)
   -->
   
   ### Purpose
   
   Linked issue: close #3638
   
   Iceberg lake tiering constructs partition keys from the current Iceberg 
partition spec, but fills them with partition and bucket values produced 
according to the Fluss table metadata. If an external client evolves the 
Iceberg partition spec, a newly created writer can silently attach incorrect 
partition metadata to data files.
   
   This change validates the current Iceberg partition spec before the tiering 
writer is created and fails fast when the source columns, field order, 
transforms, or transform parameters are incompatible with the Fluss table.
   
   ### Brief change log
   
   - Extract the Fluss-to-Iceberg partition-spec construction into a shared 
internal utility used by both automatic Iceberg table creation and writer 
validation.
   - Add a partition-spec validator that compares the expected and current 
Iceberg specs by field order, source field ID, and transform, including 
parameters such as bucket count.
   - Run the validation before creating the Iceberg task writer and throw a 
descriptive, non-retriable `InvalidTableException` on mismatch.
   - Add regression coverage for an externally evolved bucket transform and 
align the existing tiering test metadata with the tested table definitions.
   
   ### Tests
   
   - `mvn -pl fluss-lake/fluss-lake-iceberg verify`
     - 108 unit tests passed.
     - 28 integration tests passed.
   
   ### API and Format
   
   No public API or storage-format changes. The shared partition-spec utility 
is marked `@Internal`, and the existing Iceberg table mapping remains unchanged.
   
   ### Documentation
   
   No documentation changes. This is a correctness fix with no new user-facing 
configuration.
   
   ### Generative AI disclosure
   
   Yes. Generated with OpenAI Codex and reviewed by the human developer.
   


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

Reply via email to