rdblue commented on code in PR #4619:
URL: https://github.com/apache/iceberg/pull/4619#discussion_r857184689
##########
python/src/iceberg/expressions/base.py:
##########
@@ -147,3 +148,61 @@ def get(self, container: StructProtocol) -> Any:
Any: The value at position `self.position` in the container
"""
return container.get(self.position)
+
+
+class BoundReference:
+ """A reference bound to a field with an accessor for acquiring the field's
value
+
+ Args:
+ field (NestedField): A referenced field in an Iceberg schema
+ accessor (Accessor): An Accessor object to access the value at the
field's position
+ """
+
+ def __init__(self, field: NestedField, accessor: Accessor):
+ self._field = field
+ self._accessor = accessor
+
+ def __str__(self):
+ return f"ref(id={self.field_id})"
+
+ def __repr__(self):
+ return f"BoundReference(field={repr(self.field)},
accessor={repr(self.accessor)})"
+
+ @property
+ def field(self) -> NestedField:
+ """The referenced field"""
+ return self._field
+
+ @property
+ def field_id(self) -> int:
+ """The ID referenced field"""
+ return self._field.field_id
+
+ @property
+ def field_type(self) -> IcebergType:
+ """The type of the referenced field"""
+ return self._field.type
+
+ @property
+ def accessor(self) -> Accessor:
Review Comment:
I probably would. I think the relevant information is the value type that is
produced, not the field info.
--
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]