Search before asking
Paimon version
master @ 0e22fa8 / 2.0-SNAPSHOT
Compute Engine
Engine-agnostic (core)
Minimal reproduce step
MultisetType (paimon-api/src/main/java/org/apache/paimon/types/MultisetType.java) does not override equalsIgnoreFieldId(DataType) or isPrunedFrom(Object). It inherits the DataType base implementations, which just return equals(o) and therefore compare element field ids. Its sibling nested types ArrayType, MapType, RowType, and VectorType all override both methods to recurse into their element/key/value types.
What doesn't meet your expectations?
For MULTISET<ROW<...>>, equalsIgnoreFieldId and isPrunedFrom wrongly return false when only field ids differ. Because DataField.equalsIgnoreFieldId and RowType.equalsIgnoreFieldId recurse through the element type, this corrupts schema-evolution comparison and column pruning whenever a multiset of a nested type is involved.
Anything else?
Two MULTISET<ROW<f:INT>> values with different field ids compare unequal under equalsIgnoreFieldId, and a pruned MULTISET<ROW<f>> is not recognized as pruned from MULTISET<ROW<f,g>>.
Are you willing to submit a PR?
Search before asking
Paimon version
master @ 0e22fa8 / 2.0-SNAPSHOT
Compute Engine
Engine-agnostic (core)
Minimal reproduce step
MultisetType(paimon-api/src/main/java/org/apache/paimon/types/MultisetType.java) does not overrideequalsIgnoreFieldId(DataType)orisPrunedFrom(Object). It inherits theDataTypebase implementations, which justreturn equals(o)and therefore compare element field ids. Its sibling nested typesArrayType,MapType,RowType, andVectorTypeall override both methods to recurse into their element/key/value types.What doesn't meet your expectations?
For
MULTISET<ROW<...>>,equalsIgnoreFieldIdandisPrunedFromwrongly return false when only field ids differ. BecauseDataField.equalsIgnoreFieldIdandRowType.equalsIgnoreFieldIdrecurse through the element type, this corrupts schema-evolution comparison and column pruning whenever a multiset of a nested type is involved.Anything else?
Two
MULTISET<ROW<f:INT>>values with different field ids compare unequal underequalsIgnoreFieldId, and a prunedMULTISET<ROW<f>>is not recognized as pruned fromMULTISET<ROW<f,g>>.Are you willing to submit a PR?