korlov42 commented on code in PR #1700:
URL: https://github.com/apache/ignite-3/pull/1700#discussion_r1117022995


##########
modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/IgniteTableImpl.java:
##########
@@ -52,81 +60,117 @@
 import org.apache.ignite.internal.schema.row.RowAssembler;
 import org.apache.ignite.internal.sql.engine.exec.ExecutionContext;
 import org.apache.ignite.internal.sql.engine.exec.RowHandler;
+import org.apache.ignite.internal.sql.engine.exec.TxAttributes;
+import org.apache.ignite.internal.sql.engine.exec.UpdateableTable;
 import org.apache.ignite.internal.sql.engine.exec.exp.RexImpTable;
 import org.apache.ignite.internal.sql.engine.metadata.ColocationGroup;
 import org.apache.ignite.internal.sql.engine.metadata.NodeWithTerm;
 import org.apache.ignite.internal.sql.engine.prepare.MappingQueryContext;
 import 
org.apache.ignite.internal.sql.engine.rel.logical.IgniteLogicalIndexScan;
 import 
org.apache.ignite.internal.sql.engine.rel.logical.IgniteLogicalTableScan;
 import org.apache.ignite.internal.sql.engine.schema.IgniteIndex.Type;
-import org.apache.ignite.internal.sql.engine.schema.ModifyRow.Operation;
 import org.apache.ignite.internal.sql.engine.trait.IgniteDistribution;
 import org.apache.ignite.internal.sql.engine.trait.TraitUtils;
 import org.apache.ignite.internal.sql.engine.type.IgniteTypeFactory;
 import org.apache.ignite.internal.sql.engine.util.Commons;
+import 
org.apache.ignite.internal.sql.engine.util.HashFunctionFactory.RowHashFunction;
 import org.apache.ignite.internal.sql.engine.util.TypeUtils;
 import org.apache.ignite.internal.storage.MvPartitionStorage;
 import org.apache.ignite.internal.table.InternalTable;
+import org.apache.ignite.internal.table.distributed.TableMessagesFactory;
+import 
org.apache.ignite.internal.table.distributed.replicator.TablePartitionId;
+import 
org.apache.ignite.internal.table.distributed.replicator.action.RequestType;
+import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.lang.ErrorGroups;
+import org.apache.ignite.sql.SqlException;
 import org.jetbrains.annotations.Nullable;
 
 /**
  * Ignite table implementation.
  */
-public class IgniteTableImpl extends AbstractTable implements 
InternalIgniteTable {
+public class IgniteTableImpl extends AbstractTable implements IgniteTable, 
UpdateableTable {
+    private static final IgniteLogger LOG = 
Loggers.forClass(IgniteTableImpl.class);
+
+    private static final TableMessagesFactory MESSAGES_FACTORY = new 
TableMessagesFactory();
+
     private final TableDescriptor desc;
 
     private final int ver;
 
     private final InternalTable table;
+    private final HybridClock clock;
+    private final ReplicaService replicaService;
 
     private final SchemaRegistry schemaRegistry;
 
     public final SchemaDescriptor schemaDescriptor;
 
     private final Statistic statistic;
 
-    private Map<String, IgniteIndex> indexes = new HashMap<>();
+    private final Map<String, IgniteIndex> indexes = new HashMap<>();
 
     private final List<ColumnDescriptor> columnsOrderedByPhysSchema;
 
+    private final int[] deleteRowHashFields;
+    private final int[] upsertRowHashFields;
+
     /**
      * Constructor.
      *
      * @param desc  Table descriptor.
      * @param table Physical table this schema object created for.
      */
-    public IgniteTableImpl(
+    IgniteTableImpl(
             TableDescriptor desc,
             InternalTable table,
+            ReplicaService replicaService,
+            HybridClock clock,
             SchemaRegistry schemaRegistry
     ) {
         this.ver = schemaRegistry.lastSchemaVersion();
         this.desc = desc;
         this.table = table;
+        this.replicaService = replicaService;
+        this.clock = clock;
         this.schemaRegistry = schemaRegistry;
         this.schemaDescriptor = schemaRegistry.schema();
 
         assert schemaDescriptor != null;
 
+        BitSet keyFields = new BitSet();
         List<ColumnDescriptor> tmp = new ArrayList<>(desc.columnsCount());
         for (int i = 0; i < desc.columnsCount(); i++) {
-            tmp.add(desc.columnDescriptor(i));
+            ColumnDescriptor descriptor = desc.columnDescriptor(i);
+
+            tmp.add(descriptor);
+
+            if (descriptor.key()) {
+                keyFields.set(descriptor.logicalIndex());
+            }
         }
 
         tmp.sort(Comparator.comparingInt(ColumnDescriptor::physicalIndex));
 
         columnsOrderedByPhysSchema = tmp;
+
+        upsertRowHashFields = desc.distribution().getKeys().toIntArray();
+        deleteRowHashFields = project(desc.columnsCount(), 
upsertRowHashFields, keyFields);

Review Comment:
   see comment 
[above](https://github.com/apache/ignite-3/pull/1700#discussion_r1117021557)



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