rutb327 commented on code in PR #2305:
URL: https://github.com/apache/iceberg-python/pull/2305#discussion_r2289003854


##########
pyiceberg/partitioning.py:
##########
@@ -249,6 +249,31 @@ def partition_to_path(self, data: Record, schema: Schema) 
-> str:
 UNPARTITIONED_PARTITION_SPEC = PartitionSpec(spec_id=0)
 
 
+def validate_partition_name(
+    field_name: str,
+    partition_transform: Transform[Any, Any],
+    source_id: int,
+    schema: Schema,
+    partition_names: Set[str],
+) -> None:
+    """Validate that a partition field name doesn't conflict with schema field 
names."""
+    try:
+        schema_field = schema.find_field(field_name)
+    except ValueError:
+        return  # No conflict if field doesn't exist in schema
+
+    if isinstance(partition_transform, (IdentityTransform, VoidTransform)):
+        # For identity and void transforms, allow conflict only if sourced 
from the same schema field
+        if schema_field.field_id != source_id:
+            raise ValueError(f"Cannot create identity partition sourced from 
different field in schema: {field_name}")
+    else:
+        raise ValueError(f"Cannot create partition from name that exists in 
schema: {field_name}")
+    if not field_name:
+        raise ValueError("Undefined name")

Review Comment:
   There needs to be a check for empty strings right?



-- 
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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to