This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-18426
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit ec24ca80894f8d52b068638eaedacbad5f073058
Author: amashenkov <[email protected]>
AuthorDate: Thu Jan 26 13:41:07 2023 +0300

    Add zoneId to the table.
---
 .../org/apache/ignite/client/fakes/FakeInternalTable.java   |  6 ++++++
 .../org/apache/ignite/internal/sql/engine/ItSetOpTest.java  |  1 -
 .../internal/sql/engine/schema/SqlSchemaManagerImpl.java    |  3 +--
 .../sql/engine/exec/rel/TableScanNodeExecutionTest.java     |  1 +
 .../apache/ignite/distributed/ItTablePersistenceTest.java   |  3 +++
 .../ignite/distributed/ItTxDistributedTestSingleNode.java   |  2 ++
 .../org/apache/ignite/internal/table/ItColocationTest.java  |  1 +
 .../org/apache/ignite/internal/table/InternalTable.java     |  7 +++++++
 .../ignite/internal/table/distributed/TableManager.java     |  4 +++-
 .../table/distributed/storage/InternalTableImpl.java        | 13 +++++++++++++
 .../ignite/internal/table/impl/DummyInternalTableImpl.java  |  9 ++++++++-
 11 files changed, 45 insertions(+), 5 deletions(-)

diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeInternalTable.java
 
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeInternalTable.java
index 24551df462..78a99200e9 100644
--- 
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeInternalTable.java
+++ 
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeInternalTable.java
@@ -94,6 +94,12 @@ public class FakeInternalTable implements InternalTable {
         return tableName;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    public int zoneId() {
+        return 0;
+    }
+
     /** {@inheritDoc} */
     @Override
     public CompletableFuture<BinaryRow> get(BinaryRowEx keyRow, @Nullable 
InternalTransaction tx) {
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
index f7f4b94168..03e542682a 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
@@ -186,7 +186,6 @@ public class ItSetOpTest extends 
AbstractBasicIntegrationTest {
         assertEquals(2, countIf(rows, r -> r.get(0).equals("Igor1")));
     }
 
-    @Disabled("https://issues.apache.org/jira/browse/IGNITE-18426";)
     @Test
     public void testSetOpColocated() {
         sql("CREATE TABLE emp(empid INTEGER, deptid INTEGER, name VARCHAR, 
PRIMARY KEY(empid, deptid)) COLOCATE BY (deptid)");
diff --git 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
index b62f10b456..567a7d726b 100644
--- 
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
+++ 
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/schema/SqlSchemaManagerImpl.java
@@ -366,8 +366,7 @@ public class SqlSchemaManagerImpl implements 
SqlSchemaManager {
             colocationColumns.add(column.columnOrder());
         }
 
-        // TODO Use the actual zone ID after implementing 
https://issues.apache.org/jira/browse/IGNITE-18426.
-        IgniteDistribution distribution = 
IgniteDistributions.affinity(colocationColumns, table.tableId(), 
table.tableId());
+        IgniteDistribution distribution = 
IgniteDistributions.affinity(colocationColumns, table.tableId(), 
table.internalTable().zoneId());
 
         return new IgniteTableImpl(
                 new TableDescriptorImpl(colDescriptors, distribution),
diff --git 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
index d927e2e61a..4c0eefc2bc 100644
--- 
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
+++ 
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
@@ -147,6 +147,7 @@ public class TableScanNodeExecutionTest extends 
AbstractExecutionTest {
             super(
                     "test",
                     UUID.randomUUID(),
+                    0,
                     Int2ObjectMaps.singleton(0, mock(RaftGroupService.class)),
                     PART_CNT,
                     addr -> mock(ClusterNode.class),
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTablePersistenceTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTablePersistenceTest.java
index d1f6067e07..ffe3e5e837 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTablePersistenceTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTablePersistenceTest.java
@@ -133,6 +133,7 @@ public class ItTablePersistenceTest extends 
ItAbstractListenerSnapshotTest<Parti
         var table = new InternalTableImpl(
                 "table",
                 UUID.randomUUID(),
+                0,
                 Int2ObjectMaps.singleton(0, service),
                 1,
                 consistentIdToNode,
@@ -159,6 +160,7 @@ public class ItTablePersistenceTest extends 
ItAbstractListenerSnapshotTest<Parti
         var table = new InternalTableImpl(
                 "table",
                 UUID.randomUUID(),
+                0,
                 Int2ObjectMaps.singleton(0, service),
                 1,
                 consistentIdToNode,
@@ -191,6 +193,7 @@ public class ItTablePersistenceTest extends 
ItAbstractListenerSnapshotTest<Parti
         var table = new InternalTableImpl(
                 "table",
                 UUID.randomUUID(),
+                0,
                 Int2ObjectMaps.singleton(0, service),
                 1,
                 consistentIdToNode,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
index 10d188c446..1c1b4a71ed 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNode.java
@@ -329,6 +329,7 @@ public class ItTxDistributedTestSingleNode extends 
TxAbstractTest {
         this.accounts = new TableImpl(new InternalTableImpl(
                 accountsName,
                 accTblId,
+                0,
                 accRaftClients,
                 1,
                 consistentIdToNode,
@@ -342,6 +343,7 @@ public class ItTxDistributedTestSingleNode extends 
TxAbstractTest {
         this.customers = new TableImpl(new InternalTableImpl(
                 customersName,
                 custTblId,
+                0,
                 custRaftClients,
                 1,
                 consistentIdToNode,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
index ec3ac28631..c16359896d 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
@@ -223,6 +223,7 @@ public class ItColocationTest {
         INT_TABLE = new InternalTableImpl(
                 "PUBLIC.TEST",
                 tblId,
+                0,
                 partRafts,
                 PARTS,
                 name -> clusterNode,
diff --git 
a/modules/table/src/main/java/org/apache/ignite/internal/table/InternalTable.java
 
b/modules/table/src/main/java/org/apache/ignite/internal/table/InternalTable.java
index cb248a0cf7..eedb13f82f 100644
--- 
a/modules/table/src/main/java/org/apache/ignite/internal/table/InternalTable.java
+++ 
b/modules/table/src/main/java/org/apache/ignite/internal/table/InternalTable.java
@@ -65,6 +65,13 @@ public interface InternalTable extends ManuallyCloseable {
      */
     String name();
 
+    /**
+     * Gets distribution zone id for the table.
+     *
+     * @return Distribution zone id as UUID.
+     */
+    int zoneId();
+
     /**
      * Asynchronously gets a row with same key columns values as given one 
from the table.
      *
diff --git 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index bb02f0016a..f288dbea10 100644
--- 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++ 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -1071,7 +1071,9 @@ public class TableManager extends Producer<TableEvent, 
TableEventParameters> imp
         MvTableStorage tableStorage = createTableStorage(tableCfg, tablesCfg);
         TxStateTableStorage txStateStorage = 
createTxStateTableStorage(tableCfg);
 
-        InternalTableImpl internalTable = new InternalTableImpl(name, tblId, 
new Int2ObjectOpenHashMap<>(partitions),
+        int zoneId = tableCfg.zoneId().value();
+
+        InternalTableImpl internalTable = new InternalTableImpl(name, tblId, 
zoneId, new Int2ObjectOpenHashMap<>(partitions),
                 partitions, clusterNodeResolver, txManager, tableStorage, 
txStateStorage, replicaSvc, clock);
 
         // TODO: IGNITE-16288 directIndexIds should use async configuration API
diff --git 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
index b0d1108257..03099f8160 100644
--- 
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
+++ 
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
@@ -103,6 +103,9 @@ public class InternalTableImpl implements InternalTable {
     /** Table identifier. */
     private final UUID tableId;
 
+    /** Distribution zone identifier. */
+    private final int zoneId;
+
     /** Resolver that resolves a node consistent ID to cluster node. */
     private final Function<String, ClusterNode> clusterNodeResolver;
 
@@ -132,8 +135,10 @@ public class InternalTableImpl implements InternalTable {
      *
      * @param tableName Table name.
      * @param tableId Table id.
+     * @param zoneId Distribution zone id.
      * @param partMap Map partition id to raft group.
      * @param partitions Partitions.
+     * @param clusterNodeResolver Node resolver.
      * @param txManager Transaction manager.
      * @param tableStorage Table storage.
      * @param txStateStorage Transaction state storage.
@@ -143,6 +148,7 @@ public class InternalTableImpl implements InternalTable {
     public InternalTableImpl(
             String tableName,
             UUID tableId,
+            int zoneId,
             Int2ObjectMap<RaftGroupService> partMap,
             int partitions,
             Function<String, ClusterNode> clusterNodeResolver,
@@ -154,6 +160,7 @@ public class InternalTableImpl implements InternalTable {
     ) {
         this.tableName = tableName;
         this.tableId = tableId;
+        this.zoneId = zoneId;
         this.partitionMap = partMap;
         this.partitions = partitions;
         this.clusterNodeResolver = clusterNodeResolver;
@@ -183,6 +190,12 @@ public class InternalTableImpl implements InternalTable {
         return tableId;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    public int zoneId() {
+        return zoneId;
+    }
+
     /** {@inheritDoc} */
     @Override
     public String name() {
diff --git 
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
 
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
index 6e82ef55e6..eb27b6f6a7 100644
--- 
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
+++ 
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
@@ -164,6 +164,7 @@ public class DummyInternalTableImpl extends 
InternalTableImpl {
         super(
                 "test",
                 UUID.randomUUID(),
+                0,
                 Int2ObjectMaps.singleton(0, mock(RaftGroupService.class)),
                 1,
                 name -> mock(ClusterNode.class),
@@ -312,10 +313,16 @@ public class DummyInternalTableImpl extends 
InternalTableImpl {
 
     /** {@inheritDoc} */
     @Override
-    public @NotNull String name() {
+    public String name() {
         return null;
     }
 
+    /** {@inheritDoc} */
+    @Override
+    public int zoneId() {
+        return 0;
+    }
+
     /** {@inheritDoc} */
     @Override
     public CompletableFuture<BinaryRow> get(BinaryRowEx keyRow, 
InternalTransaction tx) {

Reply via email to