[ https://issues.apache.org/jira/browse/IGNITE-15253?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrey Mashenkov updated IGNITE-15253: -------------------------------------- Labels: iep-54 ignite-3 ux (was: iep-54 ignite-3) > Tuple API improvement. > ---------------------- > > Key: IGNITE-15253 > URL: https://issues.apache.org/jira/browse/IGNITE-15253 > Project: Ignite > Issue Type: Improvement > Reporter: Andrey Mashenkov > Priority: Critical > Labels: iep-54, ignite-3, ux > Fix For: 3.0.0-alpha3 > > > h3. Motinvation. > For now, Tuple is an interface and the standard way for creation is to use > TupleBuilder that can be got using Table API. > 1. As we thought, normally, Tuple is decoupled from any Ignite internals. > Our implementation, which is returned from Ignite (e.g. Table API methods), > may rely on the internals in some cases, e.g. we need a way to wrap table Row > into Tuple for performance sake. > This is questionable, let's discuss if Tuple should/can be a public class or > be mutable or left as is, and then fix it. > 2. TupleBuilder factory methods in TableView interfaces causes a question: > Is the builder binded to a particular Table/View? or not? > As it is possible for a user to pass an arbitrary implementation of Tuple > (unless Tuple is not a final class or has public constructor), hence we must > move data validation from Builder to the Table. > This causes a question: Do we need separate interface Builder or > MutableTuple? > h3. Description. > Let'd discuss questions above and fix it. > * move Tuple validation from TupleBuilder to Table API. > * make Tuple.columnIndex() return a primitive (-1 instead of 'null') > * decouple Tuple from Table API and provide convenient way for Tuple creation. -- This message was sent by Atlassian Jira (v8.3.4#803005)