This is an automated email from the ASF dual-hosted git repository. singhpk234 pushed a commit to branch feature/serialize-bound-expression in repository https://gitbox.apache.org/repos/asf/iceberg.git
commit bb325ebd2bae510a264191e0b6968e8bb771111d Author: Prashant Singh <[email protected]> AuthorDate: Tue Oct 14 11:46:51 2025 -0700 Address review comment --- .../java/org/apache/iceberg/expressions/ResolvedReference.java | 9 +++++++-- .../java/org/apache/iceberg/expressions/ResolvedTransform.java | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/org/apache/iceberg/expressions/ResolvedReference.java b/api/src/main/java/org/apache/iceberg/expressions/ResolvedReference.java index ab272d352b..ba91163b85 100644 --- a/api/src/main/java/org/apache/iceberg/expressions/ResolvedReference.java +++ b/api/src/main/java/org/apache/iceberg/expressions/ResolvedReference.java @@ -44,10 +44,13 @@ public class ResolvedReference<T> implements UnboundTerm<T>, Reference<T> { public BoundTerm<T> bind(Types.StructType struct, boolean caseSensitive) { // assumption is that we always have the field id Schema schema = struct.asSchema(); - // we ignore case sensitivity here because field ids are unique + // Ignore caseSensitive because the field is referenced by id Types.NestedField field = schema.findField(fieldId); ValidationException.check( - field != null, "Cannot find field '%s' in struct: %s", name, schema.asStruct()); + field != null, + "Cannot find field with id '%s' in struct: %s, since we are resolving based on ID", + fieldId, + schema.asStruct()); return new BoundReference<>(field, schema.accessorForField(field.fieldId()), name); } @@ -62,9 +65,11 @@ public class ResolvedReference<T> implements UnboundTerm<T>, Reference<T> { if (this == o) { return true; } + if (o == null || getClass() != o.getClass()) { return false; } + ResolvedReference<?> that = (ResolvedReference<?>) o; return fieldId == that.fieldId && name.equals(that.name); } diff --git a/api/src/main/java/org/apache/iceberg/expressions/ResolvedTransform.java b/api/src/main/java/org/apache/iceberg/expressions/ResolvedTransform.java index 07065b2cd7..b24cd3ece3 100644 --- a/api/src/main/java/org/apache/iceberg/expressions/ResolvedTransform.java +++ b/api/src/main/java/org/apache/iceberg/expressions/ResolvedTransform.java @@ -22,7 +22,7 @@ import org.apache.iceberg.exceptions.ValidationException; import org.apache.iceberg.transforms.Transform; import org.apache.iceberg.types.Types; -public class ResolvedTransform<S, T> implements UnboundTerm<T>, Term { +public class ResolvedTransform<S, T> implements UnboundTerm<T> { private final ResolvedReference<S> ref; private final Transform<S, T> transform; @@ -74,9 +74,11 @@ public class ResolvedTransform<S, T> implements UnboundTerm<T>, Term { if (this == o) { return true; } + if (o == null || getClass() != o.getClass()) { return false; } + ResolvedTransform<?, ?> that = (ResolvedTransform<?, ?>) o; return ref.equals(that.ref) && transform.equals(that.transform); }
