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