mattfaltyn opened a new issue, #3680:
URL: https://github.com/apache/iceberg-python/issues/3680

   ### Apache Iceberg version
   
   0.11.0 (latest release)
   
   ### Please describe the bug 🐞
   
   ### Description
   
   Calling `TruncateTransform.satisfies_order_of` with two valid truncate 
transforms that have different widths raises an `AttributeError` instead of 
returning a boolean.
   
   Same-width comparisons work because the method returns early when the 
transforms are equal.
   
   ### Reproduction
   
   ```python
   from pyiceberg.transforms import TruncateTransform
   
   TruncateTransform(5).satisfies_order_of(TruncateTransform(3))
   ```
   
   On `main` at commit `48e710d20ceeeaa637d5aeae7746b787410859f8`, this raises:
   
   ```text
   AttributeError: 'TruncateTransform' object has no attribute '_source_type'
   ```
   
   The failure reproduces consistently. The same code is also present in the 
0.11.1 release.
   
   ### Expected behavior
   
   The method should compare the truncate widths and return a boolean:
   
   ```python
   assert TruncateTransform(5).satisfies_order_of(TruncateTransform(3))
   assert not TruncateTransform(3).satisfies_order_of(TruncateTransform(5))
   ```
   
   This matches the current Apache Iceberg Java implementation:
   
   
https://github.com/apache/iceberg/blob/25654ab4b29c8b5b5c20fc427da01cb70d94ed14/api/src/main/java/org/apache/iceberg/transforms/Truncate.java#L130-L141
   
   ### Cause
   
   `TruncateTransform.__init__` initializes `_width` but not `_source_type`. 
However, `satisfies_order_of` still accesses the `source_type` property backed 
by `_source_type`:
   
   
https://github.com/apache/iceberg-python/blob/48e710d20ceeeaa637d5aeae7746b787410859f8/pyiceberg/transforms.py#L783-L905
   
   The existing unit test only compares a transform with itself, so it returns 
before reaching the failing branch:
   
   
https://github.com/apache/iceberg-python/blob/48e710d20ceeeaa637d5aeae7746b787410859f8/tests/test_transforms.py#L501-L512
   
   A focused fix could compare `TruncateTransform` widths directly, consistent 
with the Java implementation, and add regression cases for different widths.
   
   I would be happy to contribute the fix and regression tests.
   
   ### Willingness to contribute
   
   - [x] I can contribute a fix for this bug independently
   - [ ] I would be willing to contribute a fix for this bug with guidance from 
the Iceberg community
   - [ ] I cannot contribute a fix for this bug at this time


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