Igniters,

Tuple in Ignite 3.x is a replacement for BinaryObject in Ignite 2.x.
Let's discuss equality and sorting.

- We have multiple Tuple implementations, and our API allows custom,
user-defined Tuples as well (which can be useful for performance when
bridging Ignite with another system or importing the data from somewhere).
- We don't have equals()/hashCode() overrides, so it is not possible to
compare tuples or put them into a Map.

Proposal:
- Add public TupleComparator implements Comparator<Tuple>, based on the
tuple contents (column names and values)
- Implement common TupleComparator#hashCode(Tuple t) method that combines
hash codes of column names and values
- Implement equals(), hashCode(), and Comparable on all built-in tuples,
delegate the logic to TupleComparator
- Make Tuple extend Compable

This way we cover all sorting/comparing/mapping scenarios for built-in
tuples and provide reusable code for third-party implementations.

Thoughts?

Reply via email to