You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2023/07/27 16:50:30 UTC
[ignite-3] 14/19: Split catalogVersion into schemaVersion and catalogVersion
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-19499
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 2a414351cbe9177249204ed1d3d86503ca83cf65
Author: amashenkov <an...@gmail.com>
AuthorDate: Fri Jul 21 15:48:51 2023 +0300
Split catalogVersion into schemaVersion and catalogVersion
---
.../apache/ignite/internal/catalog/commands/CatalogUtils.java | 1 +
.../internal/catalog/descriptors/CatalogTableDescriptor.java | 8 ++++++++
.../ignite/internal/catalog/storage/AlterColumnEntry.java | 1 +
.../ignite/internal/catalog/storage/DropColumnsEntry.java | 1 +
.../ignite/internal/catalog/storage/NewColumnsEntry.java | 1 +
.../apache/ignite/internal/schema/CatalogDescriptorUtils.java | 5 +++--
.../java/org/apache/ignite/internal/schema/SchemaManager.java | 7 ++-----
.../java/org/apache/ignite/internal/schema/SchemaUtils.java | 11 -----------
.../internal/sql/engine/exec/ExecutableTableRegistryImpl.java | 5 ++++-
.../ignite/internal/sql/engine/exec/MockedStructuresTest.java | 5 -----
.../sql/engine/schema/CatalogSqlSchemaManagerTest.java | 2 +-
.../ignite/internal/table/distributed/TableManager.java | 2 +-
.../ignite/internal/table/distributed/TableManagerTest.java | 5 -----
13 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
index 4243a54b3d..fa918d9e83 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
@@ -87,6 +87,7 @@ public class CatalogUtils {
return new CatalogTableDescriptor(
id,
params.tableName(),
+ 1,
zoneId,
params.columns().stream().map(CatalogUtils::fromParams).collect(toList()),
params.primaryKeyColumns(),
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 58a744d74c..e438721f18 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
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.Nullable;
public class CatalogTableDescriptor extends CatalogObjectDescriptor {
private static final long serialVersionUID = -2021394971104316570L;
+ private final int version;
private final int zoneId;
private final List<CatalogTableColumnDescriptor> columns;
@@ -49,6 +50,7 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
*
* @param id Table id.
* @param name Table name.
+ * @param version Table descriptor version.
* @param zoneId Distribution zone ID.
* @param columns Table column descriptors.
* @param pkCols Primary key column names.
@@ -57,6 +59,7 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
public CatalogTableDescriptor(
int id,
String name,
+ int version,
int zoneId,
List<CatalogTableColumnDescriptor> columns,
List<String> pkCols,
@@ -64,6 +67,7 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
) {
super(id, Type.TABLE, name);
+ this.version = version;
this.zoneId = zoneId;
this.columns = Objects.requireNonNull(columns, "No columns defined.");
primaryKeyColumns = Objects.requireNonNull(pkCols, "No primary key columns.");
@@ -85,6 +89,10 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
return columnsMap.get(columnName);
}
+ public int version() {
+ return version;
+ }
+
public int zoneId() {
return zoneId;
}
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 910a363d81..b2e7a11ada 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
@@ -91,6 +91,7 @@ public class AlterColumnEntry implements UpdateEntry, Fireable {
: new CatalogTableDescriptor(
table.id(),
table.name(),
+ table.version() + 1,
table.zoneId(),
table.columns().stream()
.map(source -> source.name().equals(column.name()) ? column : source)
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 e29c250283..562db4122a 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
@@ -88,6 +88,7 @@ public class DropColumnsEntry implements UpdateEntry, Fireable {
.map(table -> table.id() == tableId ? new CatalogTableDescriptor(
table.id(),
table.name(),
+ table.version() + 1,
table.zoneId(),
table.columns().stream()
.filter(col -> !columns.contains(col.name()))
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 1e1aff017e..ca93e4a358 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
@@ -88,6 +88,7 @@ public class NewColumnsEntry implements UpdateEntry, Fireable {
.map(table -> table.id() == tableId ? new CatalogTableDescriptor(
table.id(),
table.name(),
+ table.version() + 1,
table.zoneId(),
CollectionUtils.concat(table.columns(), descriptors),
table.primaryKeyColumns(),
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/CatalogDescriptorUtils.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/CatalogDescriptorUtils.java
index e400dd1d11..5959b0ddf6 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/CatalogDescriptorUtils.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/CatalogDescriptorUtils.java
@@ -74,6 +74,7 @@ public class CatalogDescriptorUtils {
return new CatalogTableDescriptor(
config.id(),
config.name(),
+ 1,
config.zoneId(),
config.columns().stream().map(CatalogDescriptorUtils::toTableColumnDescriptor).collect(toList()),
List.of(primaryKeyConfig.columns()),
@@ -314,7 +315,7 @@ public class CatalogDescriptorUtils {
/**
* Converts table descriptor to table schema descriptor.
*/
- public static SchemaDescriptor convert(int schemaVer, CatalogTableDescriptor tableDescriptor) {
+ public static SchemaDescriptor convert(CatalogTableDescriptor tableDescriptor) {
List<Column> keyCols = new ArrayList<>(tableDescriptor.primaryKeyColumns().size());
List<Column> valCols = new ArrayList<>(tableDescriptor.columns().size() - tableDescriptor.primaryKeyColumns().size());
@@ -331,7 +332,7 @@ public class CatalogDescriptorUtils {
}
return new SchemaDescriptor(
- schemaVer,
+ tableDescriptor.version(),
keyCols.toArray(Column[]::new),
tableDescriptor.colocationColumns().toArray(String[]::new),
valCols.toArray(Column[]::new)
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
index d1a2ff5415..af0451b259 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaManager.java
@@ -122,10 +122,9 @@ public class SchemaManager extends Producer<SchemaEvent, SchemaEventParameters>
private CompletableFuture<?> onTableCreated(CreateTableEventParameters evt) {
CatalogTableDescriptor tableDescriptor = evt.tableDescriptor();
- int newSchemaVersion = INITIAL_SCHEMA_VERSION; // evt.catalogVersion();
int tblId = tableDescriptor.id();
- SchemaDescriptor newSchema = CatalogDescriptorUtils.convert(newSchemaVersion, tableDescriptor);
+ SchemaDescriptor newSchema = CatalogDescriptorUtils.convert(tableDescriptor);
return onSchemaChange(tblId, newSchema, evt.causalityToken());
}
@@ -160,9 +159,7 @@ public class SchemaManager extends Producer<SchemaEvent, SchemaEventParameters>
return completedFuture(new UnsupportedOperationException("Unexpected event."));
}
- int newSchemaVersion = registriesVv.latest().get(tableDescriptor.id()).lastSchemaVersion() + 1;
-
- SchemaDescriptor newSchema = CatalogDescriptorUtils.convert(newSchemaVersion, tableDescriptor);
+ SchemaDescriptor newSchema = CatalogDescriptorUtils.convert(tableDescriptor);
return onSchemaChange(tableDescriptor.id(), newSchema, evt.causalityToken());
} catch (Throwable th) {
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
index aa0bbc51b3..ac4cef9e78 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/SchemaUtils.java
@@ -28,17 +28,6 @@ import org.apache.ignite.internal.schema.mapping.ColumnMapping;
* Stateless schema utils that produces helper methods for schema preparation.
*/
public class SchemaUtils {
- /**
- * Creates schema descriptor for the table with specified configuration.
- *
- * @param schemaVer Schema version.
- * @param tableView Table configuration.
- * @return Schema descriptor.
- */
- public static SchemaDescriptor prepareSchemaDescriptor(int schemaVer, TableView tableView) {
- return ConfigurationToSchemaDescriptorConverter.convert(schemaVer, tableView);
- }
-
/**
* Prepares column mapper.
*
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
index 67c9b5c4fd..b84644d8ad 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ExecutableTableRegistryImpl.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.sql.engine.exec;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentMap;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
import org.apache.ignite.internal.hlc.HybridClock;
import org.apache.ignite.internal.replicator.ReplicaService;
import org.apache.ignite.internal.schema.SchemaDescriptor;
@@ -76,10 +77,12 @@ public class ExecutableTableRegistryImpl implements ExecutableTableRegistry, Sch
private CompletableFuture<ExecutableTable> loadTable(int schemaVersion, int tableId, TableDescriptor tableDescriptor) {
return tableManager.tableAsync(tableId)
.thenApply(table -> {
+ CatalogTableDescriptor descriptor = tableManager.catalogManager.table(tableId, schemaVersion);
+
InternalTable internalTable = table.internalTable();
SchemaRegistry schemaRegistry = schemaManager.schemaRegistry(tableId);
- SchemaDescriptor schemaDescriptor = schemaRegistry.schema(schemaVersion);
+ SchemaDescriptor schemaDescriptor = schemaRegistry.schema(descriptor.version());
TableRowConverter rowConverter = new TableRowConverterImpl(schemaRegistry, schemaDescriptor, tableDescriptor);
ScannableTable scannableTable = new ScannableTableImpl(internalTable, rowConverter, tableDescriptor);
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
index 26a355f767..6bce878f4f 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/MockedStructuresTest.java
@@ -557,11 +557,6 @@ public class MockedStructuresTest extends IgniteAbstractTest {
new NetworkAddress("localhost", 47500)
));
- try (MockedStatic<SchemaUtils> schemaServiceMock = mockStatic(SchemaUtils.class)) {
- schemaServiceMock.when(() -> SchemaUtils.prepareSchemaDescriptor(anyInt(), any()))
- .thenReturn(mock(SchemaDescriptor.class));
- }
-
when(cs.messagingService()).thenAnswer(invocation -> {
MessagingService ret = mock(MessagingService.class);
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManagerTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManagerTest.java
index 894a6a60ba..382adc6162 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManagerTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/schema/CatalogSqlSchemaManagerTest.java
@@ -573,7 +573,7 @@ public class CatalogSqlSchemaManagerTest {
columnDescriptors.add(newCol);
}
- return new CatalogTableDescriptor(id, name, zoneId, columnDescriptors, primaryKey, colocationKey);
+ return new CatalogTableDescriptor(id, name, 1, zoneId, columnDescriptors, primaryKey, colocationKey);
}
}
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 a6dd0dd47e..4d9a5cf7e9 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
@@ -328,7 +328,7 @@ public class TableManager extends Producer<TableEvent, TableEventParameters> imp
private final SchemaManager schemaManager;
/** Catalog manager. */
- private final CatalogManager catalogManager;
+ public final CatalogManager catalogManager;
private final LogStorageFactoryCreator volatileLogStorageFactoryCreator;
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
index 7fc676d9b3..a223eddbf1 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/TableManagerTest.java
@@ -775,11 +775,6 @@ public class TableManagerTest extends IgniteAbstractTest {
new NetworkAddress("localhost", 47500)
));
- try (MockedStatic<SchemaUtils> schemaServiceMock = mockStatic(SchemaUtils.class)) {
- schemaServiceMock.when(() -> SchemaUtils.prepareSchemaDescriptor(anyInt(), any()))
- .thenReturn(mock(SchemaDescriptor.class));
- }
-
try (MockedStatic<AffinityUtils> affinityServiceMock = mockStatic(AffinityUtils.class)) {
ArrayList<List<ClusterNode>> assignment = new ArrayList<>(PARTITIONS);