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