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

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


The following commit(s) were added to refs/heads/main by this push:
     new 8ea605f0b6 IGNITE-21014 Add table creation revision for table 
descriptor (#2980)
8ea605f0b6 is described below

commit 8ea605f0b6ce51838fc3a8bf3aae9081835bf102
Author: Mirza Aliev <alievmi...@gmail.com>
AuthorDate: Wed Dec 20 16:06:42 2023 +0400

    IGNITE-21014 Add table creation revision for table descriptor (#2980)
---
 .../catalog/commands/CreateTableCommand.java       |  1 +
 .../descriptors/CatalogTableDescriptor.java        | 23 ++++++++++-
 .../internal/catalog/storage/AlterColumnEntry.java |  4 +-
 .../internal/catalog/storage/DropColumnsEntry.java |  3 +-
 .../internal/catalog/storage/NewColumnsEntry.java  |  3 +-
 .../internal/catalog/CatalogManagerSelfTest.java   | 31 +++++++++++++++
 .../MakeIndexAvailableCommandValidationTest.java   |  1 +
 .../ignite/client/handler/FakeCatalogService.java  |  2 +-
 .../RebalanceUtilUpdateAssignmentsTest.java        |  1 +
 .../ignite/internal/schema/SchemaManagerTest.java  | 44 ++++++++++++++++++++--
 .../CatalogToSchemaDescriptorConverterTest.java    |  1 +
 .../storage/AbstractMvTableStorageTest.java        |  1 +
 .../storage/index/AbstractIndexStorageTest.java    |  1 +
 .../replication/PartitionReplicaListenerTest.java  |  1 +
 .../schema/CatalogValidationSchemasSourceTest.java |  2 +-
 15 files changed, 108 insertions(+), 11 deletions(-)

diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CreateTableCommand.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CreateTableCommand.java
index 4593514dce..f423f11578 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CreateTableCommand.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CreateTableCommand.java
@@ -115,6 +115,7 @@ public class CreateTableCommand extends 
AbstractTableCommand {
                 
columns.stream().map(CatalogUtils::fromParams).collect(toList()),
                 primaryKeyColumns,
                 colocationColumns,
+                INITIAL_CAUSALITY_TOKEN,
                 INITIAL_CAUSALITY_TOKEN
         );
 
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogTableDescriptor.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogTableDescriptor.java
index 9949dc2bf8..89edf8bb98 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogTableDescriptor.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogTableDescriptor.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.catalog.descriptors;
 
+import static 
org.apache.ignite.internal.catalog.CatalogManagerImpl.INITIAL_CAUSALITY_TOKEN;
+
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.util.List;
@@ -52,6 +54,8 @@ public class CatalogTableDescriptor extends 
CatalogObjectDescriptor {
     @IgniteToStringExclude
     private transient Map<String, CatalogTableColumnDescriptor> columnsMap;
 
+    private long creationToken;
+
     /**
      * Constructor.
      *
@@ -62,7 +66,8 @@ public class CatalogTableDescriptor extends 
CatalogObjectDescriptor {
      * @param tableVersion Version of the table.
      * @param columns Table column descriptors.
      * @param pkCols Primary key column names.
-     * @param colocationCols Colocation column names.
+     * @param causalityToken Token of the update of the descriptor.
+     * @param creationToken Token of the creation of the table descriptor.
      */
     public CatalogTableDescriptor(
             int id,
@@ -74,7 +79,8 @@ public class CatalogTableDescriptor extends 
CatalogObjectDescriptor {
             List<CatalogTableColumnDescriptor> columns,
             List<String> pkCols,
             @Nullable List<String> colocationCols,
-            long causalityToken
+            long causalityToken,
+            long creationToken
     ) {
         super(id, Type.TABLE, name, causalityToken);
 
@@ -88,6 +94,8 @@ public class CatalogTableDescriptor extends 
CatalogObjectDescriptor {
 
         this.columnsMap = 
columns.stream().collect(Collectors.toMap(CatalogTableColumnDescriptor::name, 
Function.identity()));
 
+        this.creationToken = creationToken;
+
         // TODO: IGNITE-19082 Throw proper exceptions.
         assert !columnsMap.isEmpty() : "No columns.";
 
@@ -151,4 +159,15 @@ public class CatalogTableDescriptor extends 
CatalogObjectDescriptor {
     public String toString() {
         return S.toString(this);
     }
+
+    public long creationToken() {
+        return creationToken;
+    }
+
+    @Override
+    public void updateToken(long updateToken) {
+        super.updateToken(updateToken);
+
+        this.creationToken = this.creationToken == INITIAL_CAUSALITY_TOKEN ? 
updateToken : this.creationToken;
+    }
 }
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/AlterColumnEntry.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/AlterColumnEntry.java
index bd0d04b818..615387953b 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/AlterColumnEntry.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/AlterColumnEntry.java
@@ -103,7 +103,9 @@ public class AlterColumnEntry implements UpdateEntry, 
Fireable {
                                                         .collect(toList()),
                                                 table.primaryKeyColumns(),
                                                 table.colocationColumns(),
-                                                causalityToken)
+                                                causalityToken,
+                                                table.creationToken()
+                                        )
                                 )
                                 .toArray(CatalogTableDescriptor[]::new),
                         schema.indexes(),
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/DropColumnsEntry.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/DropColumnsEntry.java
index 6dae7b0075..2a481153d1 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/DropColumnsEntry.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/DropColumnsEntry.java
@@ -99,7 +99,8 @@ public class DropColumnsEntry implements UpdateEntry, 
Fireable {
                                                 .collect(toList()),
                                         table.primaryKeyColumns(),
                                         table.colocationColumns(),
-                                        causalityToken) : table
+                                        causalityToken,
+                                        table.creationToken()) : table
                                 )
                                 .toArray(CatalogTableDescriptor[]::new),
                         schema.indexes(),
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/NewColumnsEntry.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/NewColumnsEntry.java
index 5581fc1458..0230374f8f 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/NewColumnsEntry.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/NewColumnsEntry.java
@@ -96,7 +96,8 @@ public class NewColumnsEntry implements UpdateEntry, Fireable 
{
                                         
CollectionUtils.concat(table.columns(), descriptors),
                                         table.primaryKeyColumns(),
                                         table.colocationColumns(),
-                                        causalityToken) : table
+                                        causalityToken,
+                                        table.creationToken()) : table
                                 )
                                 .toArray(CatalogTableDescriptor[]::new),
                         schema.indexes(),
diff --git 
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
 
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
index 4221c076d3..22243a116c 100644
--- 
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
+++ 
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
@@ -1635,6 +1635,37 @@ public class CatalogManagerSelfTest extends 
BaseCatalogManagerTest {
         assertThat(table.tableVersion(), is(2));
     }
 
+    @Test
+    public void testTableCreationToken() {
+        createSomeTable(TABLE_NAME);
+
+        CatalogTableDescriptor table = manager.table(TABLE_NAME, 
Long.MAX_VALUE);
+
+        long expectedCreationToken = table.updateToken();
+
+        assertEquals(expectedCreationToken, table.creationToken());
+
+        CompletableFuture<Void> future = manager.execute(
+                AlterTableAlterColumnCommand.builder()
+                        .schemaName(SCHEMA_NAME)
+                        .tableName(TABLE_NAME)
+                        .columnName("val1")
+                        .type(INT64)
+                        .build()
+        );
+        assertThat(future, willCompleteSuccessfully());
+
+        table = manager.table(TABLE_NAME, Long.MAX_VALUE);
+
+        assertThat(table.tableVersion(), is(2));
+
+        assertEquals(expectedCreationToken, table.creationToken());
+
+        table = manager.table(tableId(TABLE_NAME), 1);
+
+        assertEquals(expectedCreationToken, table.creationToken());
+    }
+
     @Test
     void testCreateZoneWithDefaults() {
         
assertThat(manager.execute(CreateZoneCommand.builder().zoneName(ZONE_NAME + 
1).build()), willBe(nullValue()));
diff --git 
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandValidationTest.java
 
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandValidationTest.java
index 9fd0569074..0914fdec66 100644
--- 
a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandValidationTest.java
+++ 
b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandValidationTest.java
@@ -96,6 +96,7 @@ public class MakeIndexAvailableCommandValidationTest extends 
AbstractCommandVali
                 List.of(tableColumn(columnName)),
                 List.of(columnName),
                 null,
+                1,
                 1
         );
     }
diff --git 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
index a563b5f08c..93da89abba 100644
--- 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
+++ 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
@@ -56,7 +56,7 @@ public class FakeCatalogService implements CatalogService {
     @Override
     public CatalogTableDescriptor table(int tableId, long timestamp) {
         return new CatalogTableDescriptor(
-                tableId, 0, 0, "table", 0, 0, 
List.of(mock(CatalogTableColumnDescriptor.class)), List.of(), null, 0);
+                tableId, 0, 0, "table", 0, 0, 
List.of(mock(CatalogTableColumnDescriptor.class)), List.of(), null, 0, 0);
     }
 
     @Override
diff --git 
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
 
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
index 11c5d6c864..2b920568b1 100644
--- 
a/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
+++ 
b/modules/distribution-zones/src/test/java/org/apache/ignite/internal/distributionzones/rebalance/RebalanceUtilUpdateAssignmentsTest.java
@@ -95,6 +95,7 @@ public class RebalanceUtilUpdateAssignmentsTest extends 
IgniteAbstractTest {
             List.of(new CatalogTableColumnDescriptor("k1", ColumnType.INT32, 
false, 0, 0, 0, null)),
             List.of("k1"),
             null,
+            INITIAL_CAUSALITY_TOKEN,
             INITIAL_CAUSALITY_TOKEN
     );
 
diff --git 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaManagerTest.java
 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaManagerTest.java
index 81ceddab4b..cddac3f6a1 100644
--- 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaManagerTest.java
+++ 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaManagerTest.java
@@ -174,7 +174,7 @@ class SchemaManagerTest extends BaseIgniteAbstractTest {
                 new CatalogTableColumnDescriptor("v1", ColumnType.INT32, 
false, 0, 0, 0, null)
         );
         CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
-                TABLE_ID, -1, -1, TABLE_NAME, 0, 1, columns, List.of("k1", 
"k2"), null, INITIAL_CAUSALITY_TOKEN
+                TABLE_ID, -1, -1, TABLE_NAME, 0, 1, columns, List.of("k1", 
"k2"), null, INITIAL_CAUSALITY_TOKEN, INITIAL_CAUSALITY_TOKEN
         );
 
         CompletableFuture<Boolean> future = tableCreatedListener()
@@ -244,7 +244,19 @@ class SchemaManagerTest extends BaseIgniteAbstractTest {
                 new CatalogTableColumnDescriptor("v2", ColumnType.STRING, 
false, 0, 0, 0, null)
         );
 
-        return new CatalogTableDescriptor(TABLE_ID, -1, -1, TABLE_NAME, 0, 2, 
columns, List.of("k1", "k2"), null, INITIAL_CAUSALITY_TOKEN);
+        return new CatalogTableDescriptor(
+                TABLE_ID,
+                -1,
+                -1,
+                TABLE_NAME,
+                0,
+                2,
+                columns,
+                List.of("k1", "k2"),
+                null,
+                INITIAL_CAUSALITY_TOKEN,
+                INITIAL_CAUSALITY_TOKEN
+        );
     }
 
     private void completeCausalityToken(long causalityToken) {
@@ -280,7 +292,19 @@ class SchemaManagerTest extends BaseIgniteAbstractTest {
                 new CatalogTableColumnDescriptor("k2", ColumnType.STRING, 
false, 0, 0, 0, null)
         );
 
-        return new CatalogTableDescriptor(TABLE_ID, -1, -1, TABLE_NAME, 0, 2, 
columns, List.of("k1", "k2"), null, INITIAL_CAUSALITY_TOKEN);
+        return new CatalogTableDescriptor(
+                TABLE_ID,
+                -1,
+                -1,
+                TABLE_NAME,
+                0,
+                2,
+                columns,
+                List.of("k1", "k2"),
+                null,
+                INITIAL_CAUSALITY_TOKEN,
+                INITIAL_CAUSALITY_TOKEN
+        );
     }
 
     @Test
@@ -318,7 +342,19 @@ class SchemaManagerTest extends BaseIgniteAbstractTest {
                 new CatalogTableColumnDescriptor("v1", ColumnType.INT64, 
false, 0, 0, 0, null)
         );
 
-        return new CatalogTableDescriptor(TABLE_ID, -1, -1, TABLE_NAME, 0, 2, 
columns, List.of("k1", "k2"), null, INITIAL_CAUSALITY_TOKEN);
+        return new CatalogTableDescriptor(
+                TABLE_ID,
+                -1,
+                -1,
+                TABLE_NAME,
+                0,
+                2,
+                columns,
+                List.of("k1", "k2"),
+                null,
+                INITIAL_CAUSALITY_TOKEN,
+                INITIAL_CAUSALITY_TOKEN
+        );
     }
 
     @Test
diff --git 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/catalog/CatalogToSchemaDescriptorConverterTest.java
 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/catalog/CatalogToSchemaDescriptorConverterTest.java
index 5478e96eee..5f7a2499f0 100644
--- 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/catalog/CatalogToSchemaDescriptorConverterTest.java
+++ 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/catalog/CatalogToSchemaDescriptorConverterTest.java
@@ -143,6 +143,7 @@ public class CatalogToSchemaDescriptorConverterTest extends 
AbstractSchemaConver
                 ),
                 List.of("K1", "K2"),
                 List.of("K2"),
+                INITIAL_CAUSALITY_TOKEN,
                 INITIAL_CAUSALITY_TOKEN
         );
 
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index 3d0a054112..1ea34a901a 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -784,6 +784,7 @@ public abstract class AbstractMvTableStorageTest extends 
BaseMvStoragesTest {
                 ),
                 List.of("INTKEY"),
                 null,
+                INITIAL_CAUSALITY_TOKEN,
                 INITIAL_CAUSALITY_TOKEN
         );
 
diff --git 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractIndexStorageTest.java
 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractIndexStorageTest.java
index e0f97a2b7b..23a95a62d9 100644
--- 
a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractIndexStorageTest.java
+++ 
b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractIndexStorageTest.java
@@ -162,6 +162,7 @@ public abstract class AbstractIndexStorageTest<S extends 
IndexStorage, D extends
                 Stream.concat(Stream.of(pkColumn), 
ALL_TYPES_COLUMN_PARAMS.stream()).map(CatalogUtils::fromParams).collect(toList()),
                 List.of("pk"),
                 null,
+                INITIAL_CAUSALITY_TOKEN,
                 INITIAL_CAUSALITY_TOKEN
         );
 
diff --git 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
index 5b104e26c5..5824cadacb 100644
--- 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
+++ 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
@@ -341,6 +341,7 @@ public class PartitionReplicaListenerTest extends 
IgniteAbstractTest {
             ),
             List.of("intKey", "strKey"),
             null,
+            INITIAL_CAUSALITY_TOKEN,
             INITIAL_CAUSALITY_TOKEN
     );
 
diff --git 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/CatalogValidationSchemasSourceTest.java
 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/CatalogValidationSchemasSourceTest.java
index e00425deb4..48847f641f 100644
--- 
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/CatalogValidationSchemasSourceTest.java
+++ 
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/CatalogValidationSchemasSourceTest.java
@@ -114,7 +114,7 @@ class CatalogValidationSchemasSourceTest extends 
BaseIgniteAbstractTest {
         );
 
         return new CatalogTableDescriptor(
-                tableId, -1, -1, "test", 0, tableVersion, columns, 
List.of("k1"), null, INITIAL_CAUSALITY_TOKEN
+                tableId, -1, -1, "test", 0, tableVersion, columns, 
List.of("k1"), null, INITIAL_CAUSALITY_TOKEN, INITIAL_CAUSALITY_TOKEN
         );
     }
 

Reply via email to