AMashenkov commented on a change in pull request #245:
URL: https://github.com/apache/ignite-3/pull/245#discussion_r677254531



##########
File path: 
modules/table/src/main/java/org/apache/ignite/internal/table/TupleBuilderImpl.java
##########
@@ -89,72 +91,164 @@ public TupleBuilder set(Column col, Object value) {
     }
 
     /** {@inheritDoc} */
-    @Override public <T> T valueOrDefault(String colName, T def) {
-        return (T)map.getOrDefault(colName, def);
+    @Override public String columnName(int columnIndex) {
+        return schemaDesc.column(columnIndex).name();
     }
 
     /** {@inheritDoc} */
-    @Override public <T> T value(String colName) {
-        return (T)map.get(colName);
+    @Override public Integer columnIndex(String columnName) {
+        var col = schemaDesc.column(columnName);
+
+        return col == null ? null : col.schemaIndex();

Review comment:
       'Null here breaks the contract.
   Assume, user pass a value for a column that do not exists in the schema yet,
   then it is impossible to get an index for this column.
   
   Tuple interface says 'null' index will be returned if column doesn't exists 
in the Tuple,
   but it is not true, obviously.
   
   I think schema columns order and columns ID is an internal part, thus
   either access methods by id shouldn't be exposed to user (to public API),
   or column index should be a synthetic.
   
   In general, Tuple may miss values for some columns (similar to Ignite 2).
   What does column index means in that case?




-- 
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]


Reply via email to