You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by tk...@apache.org on 2023/10/17 06:20:14 UTC
[ignite-3] branch main updated: IGNITE-20636 Add to the MakeIndexAvailableCommand the ability to use only the indexId (#2691)
This is an automated email from the ASF dual-hosted git repository.
tkalkirill 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 05c2c0fc85 IGNITE-20636 Add to the MakeIndexAvailableCommand the ability to use only the indexId (#2691)
05c2c0fc85 is described below
commit 05c2c0fc8573b3bce8893588b573db6a3844663d
Author: Kirill Tkalenko <tk...@yandex.ru>
AuthorDate: Tue Oct 17 09:20:08 2023 +0300
IGNITE-20636 Add to the MakeIndexAvailableCommand the ability to use only the indexId (#2691)
---
.../apache/ignite/internal/catalog/Catalog.java | 13 +++-
.../IndexAlreadyAvailableValidationException.java | 3 +-
.../catalog/IndexNotFoundValidationException.java | 2 +
.../internal/catalog/commands/CatalogUtils.java | 22 +++++-
.../catalog/commands/CreateTableCommand.java | 1 +
.../commands/MakeIndexAvailableCommand.java | 86 +++++-----------------
.../commands/MakeIndexAvailableCommandBuilder.java | 8 +-
.../descriptors/CatalogHashIndexDescriptor.java | 9 ++-
.../descriptors/CatalogIndexDescriptor.java | 20 +++--
.../descriptors/CatalogSortedIndexDescriptor.java | 9 ++-
.../descriptors/CatalogTableDescriptor.java | 8 ++
.../internal/catalog/events/CatalogEvent.java | 2 +-
.../internal/catalog/storage/AlterColumnEntry.java | 1 +
.../internal/catalog/storage/DropColumnsEntry.java | 1 +
.../catalog/storage/MakeIndexAvailableEntry.java | 79 +++++++++++++++-----
.../internal/catalog/storage/NewColumnsEntry.java | 1 +
.../internal/catalog/CatalogManagerSelfTest.java | 22 ++++--
.../MakeIndexAvailableCommandValidationTest.java | 80 ++++++++++----------
.../RebalanceUtilUpdateAssignmentsTest.java | 1 +
.../index/IndexAvailabilityController.java | 17 ++---
.../index/IndexAvailabilityControllerTest.java | 4 +-
.../internal/schema/CatalogSchemaManagerTest.java | 8 +-
.../CatalogToSchemaDescriptorConverterTest.java | 1 +
.../engine/schema/CatalogSqlSchemaManagerTest.java | 5 +-
.../storage/AbstractMvTableStorageTest.java | 6 +-
.../index/AbstractHashIndexStorageTest.java | 2 +-
.../storage/index/AbstractIndexStorageTest.java | 2 +
.../index/AbstractSortedIndexStorageTest.java | 2 +-
.../replication/PartitionReplicaListenerTest.java | 2 +-
.../distributed/schema/FullTableSchemaTest.java | 2 +-
30 files changed, 236 insertions(+), 183 deletions(-)
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/Catalog.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/Catalog.java
index c52416f0f9..f214260376 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/Catalog.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/Catalog.java
@@ -57,6 +57,8 @@ public class Catalog {
private final Map<String, CatalogSchemaDescriptor> schemasByName;
private final Map<String, CatalogZoneDescriptor> zonesByName;
+ @IgniteToStringExclude
+ private final Int2ObjectMap<CatalogSchemaDescriptor> schemasById;
@IgniteToStringExclude
private final Int2ObjectMap<CatalogTableDescriptor> tablesById;
@IgniteToStringExclude
@@ -88,9 +90,10 @@ public class Catalog {
Objects.requireNonNull(schemas, "schemas");
Objects.requireNonNull(zones, "zones");
- this.schemasByName = schemas.stream().collect(toMapByName());
- this.zonesByName = zones.stream().collect(toMapByName());
+ schemasByName = schemas.stream().collect(toMapByName());
+ zonesByName = zones.stream().collect(toMapByName());
+ schemasById = schemas.stream().collect(toMapById());
tablesById = schemas.stream().flatMap(s -> Arrays.stream(s.tables())).collect(toMapById());
indexesById = schemas.stream().flatMap(s -> Arrays.stream(s.indexes())).collect(toMapById());
zonesById = zones.stream().collect(toMapById());
@@ -108,10 +111,14 @@ public class Catalog {
return objectIdGen;
}
- public CatalogSchemaDescriptor schema(String name) {
+ public @Nullable CatalogSchemaDescriptor schema(String name) {
return schemasByName.get(name);
}
+ public @Nullable CatalogSchemaDescriptor schema(int schemaId) {
+ return schemasById.get(schemaId);
+ }
+
public Collection<CatalogSchemaDescriptor> schemas() {
return schemasByName.values();
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexAlreadyAvailableValidationException.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexAlreadyAvailableValidationException.java
index 7d1f28ff3c..7c5302cbcc 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexAlreadyAvailableValidationException.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexAlreadyAvailableValidationException.java
@@ -20,8 +20,7 @@ package org.apache.ignite.internal.catalog;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
/**
- * This exception is thrown when an attempt is made to make an index available a second time
- * ({@link CatalogIndexDescriptor#writeOnly() read-write} state).
+ * This exception is thrown when an attempt is made to make an index {@link CatalogIndexDescriptor#available() available} a second time.
*/
public class IndexAlreadyAvailableValidationException extends CatalogValidationException {
private static final long serialVersionUID = 5482919822886169473L;
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexNotFoundValidationException.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexNotFoundValidationException.java
index 00ad321e8d..e3878ead25 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexNotFoundValidationException.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/IndexNotFoundValidationException.java
@@ -23,6 +23,8 @@ package org.apache.ignite.internal.catalog;
* <p>Example: This exception is used to properly handle IF EXISTS flag in ddl command handler.</p>
*/
public class IndexNotFoundValidationException extends CatalogValidationException {
+ private static final long serialVersionUID = -9202116446922771598L;
+
public IndexNotFoundValidationException(String message) {
super(message);
}
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 c65beaa16c..ff9828f5b0 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
@@ -367,12 +367,11 @@ public class CatalogUtils {
}
/**
- * Returns index with given name.
+ * Returns index descriptor.
*
* @param schema Schema to look up index in.
* @param name Name of the index of interest.
- * @return Table with given name.
- * @throws IndexNotFoundValidationException If index with given name is not exists.
+ * @throws IndexNotFoundValidationException If index does not exist.
*/
static CatalogIndexDescriptor indexOrThrow(CatalogSchemaDescriptor schema, String name) throws IndexNotFoundValidationException {
CatalogIndexDescriptor index = schema.index(name);
@@ -383,4 +382,21 @@ public class CatalogUtils {
return index;
}
+
+ /**
+ * Returns index descriptor.
+ *
+ * @param catalog Catalog to look up index in.
+ * @param indexId ID of the index of interest.
+ * @throws IndexNotFoundValidationException If index does not exist.
+ */
+ static CatalogIndexDescriptor indexOrThrow(Catalog catalog, int indexId) throws IndexNotFoundValidationException {
+ CatalogIndexDescriptor index = catalog.index(indexId);
+
+ if (index == null) {
+ throw new IndexNotFoundValidationException(format("Index with ID '{}' not found", indexId));
+ }
+
+ return index;
+ }
}
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 8edac3cd81..a4cd3123af 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
@@ -106,6 +106,7 @@ public class CreateTableCommand extends AbstractTableCommand {
CatalogTableDescriptor table = new CatalogTableDescriptor(
tableId,
+ schema.id(),
pkIndexId,
tableName,
zone.id(),
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommand.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommand.java
index ea3481ed07..5180d009c8 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommand.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommand.java
@@ -18,113 +18,61 @@
package org.apache.ignite.internal.catalog.commands;
import static org.apache.ignite.internal.catalog.commands.CatalogUtils.indexOrThrow;
-import static org.apache.ignite.internal.catalog.commands.CatalogUtils.schemaOrThrow;
import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import java.util.List;
import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogCommand;
-import org.apache.ignite.internal.catalog.CatalogValidationException;
import org.apache.ignite.internal.catalog.IndexAlreadyAvailableValidationException;
import org.apache.ignite.internal.catalog.IndexNotFoundValidationException;
-import org.apache.ignite.internal.catalog.descriptors.CatalogHashIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
-import org.apache.ignite.internal.catalog.descriptors.CatalogSchemaDescriptor;
-import org.apache.ignite.internal.catalog.descriptors.CatalogSortedIndexDescriptor;
import org.apache.ignite.internal.catalog.storage.MakeIndexAvailableEntry;
import org.apache.ignite.internal.catalog.storage.UpdateEntry;
/**
- * Makes the index available for read-write, switches from the write-only to the read-write state in the catalog.
+ * Makes the index available, switches from the registered to the available state in the catalog.
*
- * @see CatalogIndexDescriptor#writeOnly()
+ * @see CatalogIndexDescriptor#available()
* @see IndexNotFoundValidationException
* @see IndexAlreadyAvailableValidationException
*/
-public class MakeIndexAvailableCommand extends AbstractIndexCommand {
- /** Returns builder to make an index available for read-write. */
+public class MakeIndexAvailableCommand implements CatalogCommand {
+ /** Returns builder to make an index available. */
public static MakeIndexAvailableCommandBuilder builder() {
return new Builder();
}
- /**
- * Constructor.
- *
- * @param schemaName Schema name.
- * @param indexName Index name.
- * @throws CatalogValidationException If any of the parameters fails validation.
- */
- private MakeIndexAvailableCommand(String schemaName, String indexName) throws CatalogValidationException {
- super(schemaName, indexName);
+ private final int indexId;
+
+ /** Constructor. */
+ private MakeIndexAvailableCommand(int indexId) {
+ this.indexId = indexId;
}
@Override
public List<UpdateEntry> get(Catalog catalog) {
- CatalogSchemaDescriptor schema = schemaOrThrow(catalog, schemaName);
-
- CatalogIndexDescriptor index = indexOrThrow(schema, indexName);
-
- if (!index.writeOnly()) {
- throw new IndexAlreadyAvailableValidationException(format("Index is already available '{}.{}'", schemaName, indexName));
- }
+ CatalogIndexDescriptor index = indexOrThrow(catalog, indexId);
- CatalogIndexDescriptor updatedIndex;
-
- if (index instanceof CatalogHashIndexDescriptor) {
- updatedIndex = createReadWriteIndex((CatalogHashIndexDescriptor) index);
- } else if (index instanceof CatalogSortedIndexDescriptor) {
- updatedIndex = createReadWriteIndex((CatalogSortedIndexDescriptor) index);
- } else {
- throw new CatalogValidationException(format("Unsupported index type '{}.{}' {}", schemaName, indexName, index));
+ if (index.available()) {
+ throw new IndexAlreadyAvailableValidationException(format("Index is already available '{}'", indexId));
}
- return List.of(new MakeIndexAvailableEntry(schemaName, updatedIndex));
- }
-
- private static CatalogIndexDescriptor createReadWriteIndex(CatalogHashIndexDescriptor index) {
- return new CatalogHashIndexDescriptor(
- index.id(),
- index.name(),
- index.tableId(),
- index.unique(),
- index.columns(),
- false
- );
- }
-
- private static CatalogIndexDescriptor createReadWriteIndex(CatalogSortedIndexDescriptor index) {
- return new CatalogSortedIndexDescriptor(
- index.id(),
- index.name(),
- index.tableId(),
- index.unique(),
- index.columns(),
- false
- );
+ return List.of(new MakeIndexAvailableEntry(indexId));
}
private static class Builder implements MakeIndexAvailableCommandBuilder {
- private String schemaName;
-
- private String indexName;
-
- @Override
- public Builder schemaName(String schemaName) {
- this.schemaName = schemaName;
-
- return this;
- }
+ private int indexId;
@Override
- public Builder indexName(String indexName) {
- this.indexName = indexName;
+ public Builder indexId(int indexId) {
+ this.indexId = indexId;
return this;
}
@Override
public CatalogCommand build() {
- return new MakeIndexAvailableCommand(schemaName, indexName);
+ return new MakeIndexAvailableCommand(indexId);
}
}
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandBuilder.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandBuilder.java
index 7fadf5a931..aafb705b5d 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandBuilder.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/MakeIndexAvailableCommandBuilder.java
@@ -17,6 +17,12 @@
package org.apache.ignite.internal.catalog.commands;
+import org.apache.ignite.internal.catalog.CatalogCommand;
+
/** Builder for {@link MakeIndexAvailableCommand}. */
-public interface MakeIndexAvailableCommandBuilder extends AbstractIndexCommandBuilder<MakeIndexAvailableCommandBuilder> {
+public interface MakeIndexAvailableCommandBuilder {
+ /** Index ID. */
+ MakeIndexAvailableCommandBuilder indexId(int indexId);
+
+ CatalogCommand build();
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogHashIndexDescriptor.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogHashIndexDescriptor.java
index e5e61749af..2f92890e5e 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogHashIndexDescriptor.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogHashIndexDescriptor.java
@@ -38,7 +38,7 @@ public class CatalogHashIndexDescriptor extends CatalogIndexDescriptor {
* @throws IllegalArgumentException If columns list contains duplicates.
*/
public CatalogHashIndexDescriptor(int id, String name, int tableId, boolean unique, List<String> columns) {
- this(id, name, tableId, unique, columns, true);
+ this(id, name, tableId, unique, columns, false);
}
/**
@@ -49,11 +49,12 @@ public class CatalogHashIndexDescriptor extends CatalogIndexDescriptor {
* @param tableId Id of the table index belongs to.
* @param unique Unique flag.
* @param columns A list of indexed columns. Must not contains duplicates.
- * @param writeOnly State of the index, {@code true} when index is building, {@code false} when the index is built.
+ * @param available Availability flag, {@code true} means it is available (the index has been built), otherwise it is registered
+ * (the index has not yet been built).
* @throws IllegalArgumentException If columns list contains duplicates.
*/
- public CatalogHashIndexDescriptor(int id, String name, int tableId, boolean unique, List<String> columns, boolean writeOnly) {
- super(id, name, tableId, unique, writeOnly);
+ public CatalogHashIndexDescriptor(int id, String name, int tableId, boolean unique, List<String> columns, boolean available) {
+ super(id, name, tableId, unique, available);
this.columns = List.copyOf(Objects.requireNonNull(columns, "columns"));
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogIndexDescriptor.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogIndexDescriptor.java
index be6d6d5fb9..3a6720efe4 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogIndexDescriptor.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogIndexDescriptor.java
@@ -31,14 +31,17 @@ public abstract class CatalogIndexDescriptor extends CatalogObjectDescriptor {
/** Unique constraint flag. */
private final boolean unique;
- /** Write only flag. {@code True} when the index is being built, {@code false} when it is built. */
- private final boolean writeOnly;
+ /**
+ * Index availability flag, {@code true} means it is available (the index has been built), otherwise it is registered
+ * (the index has not yet been built).
+ */
+ private final boolean available;
- CatalogIndexDescriptor(int id, String name, int tableId, boolean unique, boolean writeOnly) {
+ CatalogIndexDescriptor(int id, String name, int tableId, boolean unique, boolean available) {
super(id, Type.INDEX, name, INITIAL_CAUSALITY_TOKEN);
this.tableId = tableId;
this.unique = unique;
- this.writeOnly = writeOnly;
+ this.available = available;
}
/** Gets table id. */
@@ -51,9 +54,12 @@ public abstract class CatalogIndexDescriptor extends CatalogObjectDescriptor {
return unique;
}
- /** Returns the state of the index, {@code true} when the index is being built, {@code false} when it is built. */
- public boolean writeOnly() {
- return writeOnly;
+ /**
+ * Returns index availability flag, {@code true} means it is available (the index has been built), otherwise it is
+ * registered (the index has not yet been built).
+ */
+ public boolean available() {
+ return available;
}
@Override
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogSortedIndexDescriptor.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogSortedIndexDescriptor.java
index 1adce3a338..e73302e8a5 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogSortedIndexDescriptor.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/descriptors/CatalogSortedIndexDescriptor.java
@@ -45,7 +45,7 @@ public class CatalogSortedIndexDescriptor extends CatalogIndexDescriptor {
boolean unique,
List<CatalogIndexColumnDescriptor> columns
) {
- this(id, name, tableId, unique, columns, true);
+ this(id, name, tableId, unique, columns, false);
}
/**
@@ -56,7 +56,8 @@ public class CatalogSortedIndexDescriptor extends CatalogIndexDescriptor {
* @param tableId Id of the table index belongs to.
* @param unique Unique flag.
* @param columns A list of columns descriptors.
- * @param writeOnly State of the index, {@code true} when index is building, {@code false} when the index is built.
+ * @param available Availability flag, {@code true} means it is available (the index has been built), otherwise it is registered
+ * (the index has not yet been built).
* @throws IllegalArgumentException If columns list contains duplicates or columns size doesn't match the collations size.
*/
public CatalogSortedIndexDescriptor(
@@ -65,9 +66,9 @@ public class CatalogSortedIndexDescriptor extends CatalogIndexDescriptor {
int tableId,
boolean unique,
List<CatalogIndexColumnDescriptor> columns,
- boolean writeOnly
+ boolean available
) {
- super(id, name, tableId, unique, writeOnly);
+ super(id, name, tableId, unique, available);
this.columns = Objects.requireNonNull(columns, "columns");
}
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 65134ae8db..9949dc2bf8 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
@@ -39,6 +39,8 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
private final int zoneId;
+ private final int schemaId;
+
private final int pkIndexId;
private final int tableVersion;
@@ -64,6 +66,7 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
*/
public CatalogTableDescriptor(
int id,
+ int schemaId,
int pkIndexId,
String name,
int zoneId,
@@ -75,6 +78,7 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
) {
super(id, Type.TABLE, name, causalityToken);
+ this.schemaId = schemaId;
this.pkIndexId = pkIndexId;
this.zoneId = zoneId;
this.tableVersion = tableVersion;
@@ -98,6 +102,10 @@ public class CatalogTableDescriptor extends CatalogObjectDescriptor {
return columnsMap.get(columnName);
}
+ public int schemaId() {
+ return schemaId;
+ }
+
public int zoneId() {
return zoneId;
}
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/events/CatalogEvent.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/events/CatalogEvent.java
index 23842bb38a..444aa30ffd 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/events/CatalogEvent.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/events/CatalogEvent.java
@@ -38,7 +38,7 @@ public enum CatalogEvent implements Event {
/** This event is fired, when an index was dropped in Catalog. */
INDEX_DROP,
- /** This event is fired when the index becomes available for read-write, i.e. the index has been built. */
+ /** This event is fired when the index becomes available, i.e. the index has been built. */
INDEX_AVAILABLE,
/** This event is fired, when a distribution zone was created in Catalog. */
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 553c0e4bdf..bd0d04b818 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
@@ -93,6 +93,7 @@ public class AlterColumnEntry implements UpdateEntry, Fireable {
? table
: new CatalogTableDescriptor(
table.id(),
+ table.schemaId(),
table.primaryKeyIndexId(),
table.name(),
table.zoneId(),
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 0d193453f9..6dae7b0075 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
@@ -89,6 +89,7 @@ public class DropColumnsEntry implements UpdateEntry, Fireable {
Arrays.stream(schema.tables())
.map(table -> table.id() == tableId ? new CatalogTableDescriptor(
table.id(),
+ table.schemaId(),
table.primaryKeyIndexId(),
table.name(),
table.zoneId(),
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/MakeIndexAvailableEntry.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/MakeIndexAvailableEntry.java
index 49a38fd4f5..1e1c18efa5 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/MakeIndexAvailableEntry.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/storage/MakeIndexAvailableEntry.java
@@ -17,12 +17,18 @@
package org.apache.ignite.internal.catalog.storage;
+import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
+
import java.util.Arrays;
import org.apache.ignite.internal.catalog.Catalog;
+import org.apache.ignite.internal.catalog.CatalogValidationException;
import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.internal.catalog.commands.MakeIndexAvailableCommand;
+import org.apache.ignite.internal.catalog.descriptors.CatalogHashIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogSchemaDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogSortedIndexDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
import org.apache.ignite.internal.catalog.events.CatalogEvent;
import org.apache.ignite.internal.catalog.events.CatalogEventParameters;
import org.apache.ignite.internal.catalog.events.MakeIndexAvailableEventParameters;
@@ -31,21 +37,16 @@ import org.apache.ignite.internal.catalog.events.MakeIndexAvailableEventParamete
public class MakeIndexAvailableEntry implements UpdateEntry, Fireable {
private static final long serialVersionUID = -5686678143537999594L;
- private final String schemaName;
-
- private final CatalogIndexDescriptor descriptor;
+ private final int indexId;
/** Constructor. */
- public MakeIndexAvailableEntry(String schemaName, CatalogIndexDescriptor descriptor) {
- this.schemaName = schemaName;
- this.descriptor = descriptor;
+ public MakeIndexAvailableEntry(int indexId) {
+ this.indexId = indexId;
}
@Override
public Catalog applyUpdate(Catalog catalog, long causalityToken) {
- descriptor.updateToken(causalityToken);
-
- CatalogSchemaDescriptor schema = catalog.schema(schemaName);
+ CatalogSchemaDescriptor schema = schemaByIndexId(catalog, indexId);
return new Catalog(
catalog.version(),
@@ -57,7 +58,7 @@ public class MakeIndexAvailableEntry implements UpdateEntry, Fireable {
schema.name(),
schema.tables(),
Arrays.stream(schema.indexes())
- .map(source -> source.id() == descriptor.id() ? descriptor : source)
+ .map(source -> source.id() == indexId ? createAvailableIndex(source, causalityToken) : source)
.toArray(CatalogIndexDescriptor[]::new),
schema.systemViews(),
causalityToken
@@ -72,16 +73,60 @@ public class MakeIndexAvailableEntry implements UpdateEntry, Fireable {
@Override
public CatalogEventParameters createEventParameters(long causalityToken, int catalogVersion) {
- return new MakeIndexAvailableEventParameters(causalityToken, catalogVersion, descriptor.id());
+ return new MakeIndexAvailableEventParameters(causalityToken, catalogVersion, indexId);
+ }
+
+ private static CatalogSchemaDescriptor schemaByIndexId(Catalog catalog, int indexId) {
+ CatalogIndexDescriptor index = catalog.index(indexId);
+
+ assert index != null : indexId;
+
+ CatalogTableDescriptor table = catalog.table(index.tableId());
+
+ assert table != null : index.tableId();
+
+ CatalogSchemaDescriptor schema = catalog.schema(table.schemaId());
+
+ assert schema != null : table.schemaId();
+
+ return schema;
}
- /** Returns schema name. */
- public String schemaName() {
- return schemaName;
+ private static CatalogIndexDescriptor createAvailableIndex(CatalogIndexDescriptor source, long causalityToken) {
+ CatalogIndexDescriptor updateIndexDescriptor;
+
+ if (source instanceof CatalogHashIndexDescriptor) {
+ updateIndexDescriptor = createAvailableIndex((CatalogHashIndexDescriptor) source);
+ } else if (source instanceof CatalogSortedIndexDescriptor) {
+ updateIndexDescriptor = createAvailableIndex((CatalogSortedIndexDescriptor) source);
+ } else {
+ throw new CatalogValidationException(format("Unsupported index type '{}' {}", source.id(), source));
+ }
+
+ updateIndexDescriptor.updateToken(causalityToken);
+
+ return updateIndexDescriptor;
}
- /** Returns descriptor of the available to read-write index. */
- public CatalogIndexDescriptor descriptor() {
- return descriptor;
+ private static CatalogIndexDescriptor createAvailableIndex(CatalogHashIndexDescriptor index) {
+ return new CatalogHashIndexDescriptor(
+ index.id(),
+ index.name(),
+ index.tableId(),
+ index.unique(),
+ index.columns(),
+ true
+ );
+ }
+
+ private static CatalogIndexDescriptor createAvailableIndex(CatalogSortedIndexDescriptor index) {
+ return new CatalogSortedIndexDescriptor(
+ index.id(),
+ index.name(),
+ index.tableId(),
+ index.unique(),
+ index.columns(),
+ true
+ );
}
}
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 84acafa38b..5581fc1458 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 {
Arrays.stream(schema.tables())
.map(table -> table.id() == tableId ? new CatalogTableDescriptor(
table.id(),
+ table.schemaId(),
table.primaryKeyIndexId(),
table.name(),
table.zoneId(),
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 e38cbad407..01f78d5125 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
@@ -962,7 +962,7 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
assertEquals(schema.table(TABLE_NAME).id(), index.tableId());
assertEquals(List.of("VAL", "ID"), index.columns());
assertFalse(index.unique());
- assertTrue(index.writeOnly());
+ assertFalse(index.available());
}
@Test
@@ -1003,7 +1003,7 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
assertEquals(DESC_NULLS_FIRST, index.columns().get(0).collation());
assertEquals(ASC_NULLS_LAST, index.columns().get(1).collation());
assertTrue(index.unique());
- assertTrue(index.writeOnly());
+ assertFalse(index.available());
}
@Test
@@ -1868,13 +1868,13 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
);
assertThat(
- manager.execute(MakeIndexAvailableCommand.builder().schemaName(DEFAULT_SCHEMA_NAME).indexName(INDEX_NAME).build()),
+ manager.execute(MakeIndexAvailableCommand.builder().indexId(indexId(INDEX_NAME)).build()),
willBe(nullValue())
);
CatalogHashIndexDescriptor index = (CatalogHashIndexDescriptor) index(manager.latestCatalogVersion(), INDEX_NAME);
- assertFalse(index.writeOnly());
+ assertTrue(index.available());
}
@Test
@@ -1887,13 +1887,13 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
);
assertThat(
- manager.execute(MakeIndexAvailableCommand.builder().schemaName(DEFAULT_SCHEMA_NAME).indexName(INDEX_NAME).build()),
+ manager.execute(MakeIndexAvailableCommand.builder().indexId(indexId(INDEX_NAME)).build()),
willBe(nullValue())
);
CatalogSortedIndexDescriptor index = (CatalogSortedIndexDescriptor) index(manager.latestCatalogVersion(), INDEX_NAME);
- assertFalse(index.writeOnly());
+ assertTrue(index.available());
}
@Test
@@ -1926,7 +1926,7 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
});
assertThat(
- manager.execute(MakeIndexAvailableCommand.builder().schemaName(DEFAULT_SCHEMA_NAME).indexName(INDEX_NAME).build()),
+ manager.execute(MakeIndexAvailableCommand.builder().indexId(indexId(INDEX_NAME)).build()),
willBe(nullValue())
);
@@ -2001,4 +2001,12 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
private @Nullable CatalogIndexDescriptor index(int catalogVersion, String indexName) {
return manager.schema(catalogVersion).index(indexName);
}
+
+ private int indexId(String indexName) {
+ CatalogIndexDescriptor index = manager.index(indexName, clock.nowLong());
+
+ assertNotNull(index, indexName);
+
+ return index.id();
+ }
}
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 1b321f583d..9fd0569074 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
@@ -17,90 +17,90 @@
package org.apache.ignite.internal.catalog.commands;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_LENGTH;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_PRECISION;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_SCALE;
+import static org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor.INITIAL_TABLE_VERSION;
+import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrowsWithCause;
+import static org.apache.ignite.sql.ColumnType.INT32;
import java.util.List;
import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogCommand;
-import org.apache.ignite.internal.catalog.CatalogValidationException;
import org.apache.ignite.internal.catalog.IndexAlreadyAvailableValidationException;
import org.apache.ignite.internal.catalog.IndexNotFoundValidationException;
import org.apache.ignite.internal.catalog.descriptors.CatalogHashIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogSystemViewDescriptor;
+import org.apache.ignite.internal.catalog.descriptors.CatalogTableColumnDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
/** Tests to verify validation of {@link MakeIndexAvailableCommand}. */
@SuppressWarnings("ThrowableNotThrown")
public class MakeIndexAvailableCommandValidationTest extends AbstractCommandValidationTest {
- @ParameterizedTest(name = "[{index}] ''{argumentsWithNames}''")
- @MethodSource("nullAndBlankStrings")
- void schemaNameMustNotBeNullOrBlank(String name) {
- MakeIndexAvailableCommandBuilder builder = MakeIndexAvailableCommand.builder();
-
- builder.indexName("TEST").schemaName(name);
-
- assertThrowsWithCause(
- builder::build,
- CatalogValidationException.class,
- "Name of the schema can't be null or blank"
- );
- }
-
- @ParameterizedTest(name = "[{index}] ''{argumentsWithNames}''")
- @MethodSource("nullAndBlankStrings")
- void indexNameMustNotBeNullOrBlank(String name) {
- MakeIndexAvailableCommandBuilder builder = MakeIndexAvailableCommand.builder();
-
- builder.schemaName(SCHEMA_NAME).indexName(name);
-
- assertThrowsWithCause(
- builder::build,
- CatalogValidationException.class,
- "Name of the index can't be null or blank"
- );
- }
-
@Test
void exceptionIsThrownIfIndexWithGivenNameNotFound() {
Catalog catalog = emptyCatalog();
CatalogCommand command = MakeIndexAvailableCommand.builder()
- .schemaName(SCHEMA_NAME)
- .indexName("TEST")
+ .indexId(1)
.build();
assertThrowsWithCause(
() -> command.get(catalog),
IndexNotFoundValidationException.class,
- "Index with name 'PUBLIC.TEST' not found"
+ "Index with ID '1' not found"
);
}
@Test
void exceptionIsThrownIfIndexIsAlreadyAvailable() {
- String indexName = "TEST";
+ int id = 0;
+
+ int tableId = id++;
+ int indexId = id++;
+
+ String columnName = "c";
Catalog catalog = catalog(
- new CatalogTableDescriptor[]{},
+ new CatalogTableDescriptor[]{
+ table(tableId, id++, id++, id++, columnName)
+ },
new CatalogIndexDescriptor[]{
- new CatalogHashIndexDescriptor(10, indexName, 1, false, List.of("c"), false)
+ new CatalogHashIndexDescriptor(indexId, "TEST_INDEX", tableId, false, List.of(columnName), true)
},
new CatalogSystemViewDescriptor[]{}
);
CatalogCommand command = MakeIndexAvailableCommand.builder()
- .schemaName(SCHEMA_NAME)
- .indexName(indexName)
+ .indexId(indexId)
.build();
assertThrowsWithCause(
() -> command.get(catalog),
IndexAlreadyAvailableValidationException.class,
- "Index is already available 'PUBLIC.TEST'"
+ format("Index is already available '{}'", indexId)
);
}
+
+ private static CatalogTableDescriptor table(int tableId, int schemaId, int zoneId, int pkIndexId, String columnName) {
+ return new CatalogTableDescriptor(
+ tableId,
+ schemaId,
+ pkIndexId,
+ "TEST_TABLE",
+ zoneId,
+ INITIAL_TABLE_VERSION,
+ List.of(tableColumn(columnName)),
+ List.of(columnName),
+ null,
+ 1
+ );
+ }
+
+ private static CatalogTableColumnDescriptor tableColumn(String columnName) {
+ return new CatalogTableColumnDescriptor(columnName, INT32, false, DEFAULT_PRECISION, DEFAULT_SCALE, DEFAULT_LENGTH, null);
+ }
}
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 5dea3ed336..daf0d4d36b 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
@@ -87,6 +87,7 @@ public class RebalanceUtilUpdateAssignmentsTest extends IgniteAbstractTest {
private final CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
1,
-1,
+ -1,
"table1",
0,
1,
diff --git a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexAvailabilityController.java b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexAvailabilityController.java
index 633d0cf133..8f135af85a 100644
--- a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexAvailabilityController.java
+++ b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexAvailabilityController.java
@@ -22,7 +22,6 @@ import static java.util.concurrent.CompletableFuture.completedFuture;
import static java.util.concurrent.CompletableFuture.failedFuture;
import static java.util.function.Predicate.not;
import static java.util.stream.Collectors.toList;
-import static org.apache.ignite.internal.catalog.CatalogService.DEFAULT_SCHEMA_NAME;
import static org.apache.ignite.internal.metastorage.dsl.Conditions.exists;
import static org.apache.ignite.internal.metastorage.dsl.Conditions.notExists;
import static org.apache.ignite.internal.metastorage.dsl.Operations.noop;
@@ -70,9 +69,9 @@ import org.apache.ignite.internal.util.IgniteSpinBusyLock;
/**
* This component is responsible for ensuring that an index, upon completion of a distributed index building for all partitions, becomes
- * available for read-write.
+ * available.
*
- * <p>An approximate algorithm for making an index available for read-write:</p>
+ * <p>An approximate algorithm for making an index available:</p>
* <ul>
* <li>On {@link CatalogEvent#INDEX_CREATE}, keys are created in the metastore: {@code indexBuild.inProgress.<indexId>} and
* {@code indexBuild.partition.<indexId>.<partitionId_0>}...{@code indexBuild.partition.<indexId>.<partitionId_N>}.</li>
@@ -94,7 +93,7 @@ import org.apache.ignite.internal.util.IgniteSpinBusyLock;
* {@link IndexBuildCompletionListener#onBuildCompletion} (form {@link IndexBuilder#listen}) event.</li>
* </ul>
*
- * @see CatalogIndexDescriptor#writeOnly()
+ * @see CatalogIndexDescriptor#available()
*/
// TODO: IGNITE-20637 Recovery needs to be implemented
// TODO: IGNITE-20637 Need integration with the IgniteImpl
@@ -243,13 +242,10 @@ public class IndexAvailabilityController implements ManuallyCloseable {
return completedFuture(null);
}
- // We can use the latest version of the catalog since we are on the metastore thread.
- CatalogIndexDescriptor indexDescriptor = getIndexDescriptorStrict(indexId, catalogManager.latestCatalogVersion());
-
// We will not wait for the command to be executed, since we will then find ourselves in a dead lock since we will not be able
// to free the metastore thread.
catalogManager
- .execute(buildMakeIndexAvailableCommand(indexDescriptor))
+ .execute(buildMakeIndexAvailableCommand(indexId))
.whenComplete((unused, throwable) -> {
if (throwable != null) {
Throwable unwrapCause = unwrapCause(throwable);
@@ -354,8 +350,7 @@ public class IndexAvailabilityController implements ManuallyCloseable {
return Integer.parseInt(key.substring(indexIdFromIndex, indexIdToIndex));
}
- private static CatalogCommand buildMakeIndexAvailableCommand(CatalogIndexDescriptor indexDescriptor) {
- // TODO: IGNITE-20636 Use only indexId
- return MakeIndexAvailableCommand.builder().schemaName(DEFAULT_SCHEMA_NAME).indexName(indexDescriptor.name()).build();
+ private static CatalogCommand buildMakeIndexAvailableCommand(int indexId) {
+ return MakeIndexAvailableCommand.builder().indexId(indexId).build();
}
}
diff --git a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
index 805692aa7e..12a40a5463 100644
--- a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
+++ b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexAvailabilityControllerTest.java
@@ -172,7 +172,7 @@ public class IndexAvailabilityControllerTest extends BaseIgniteAbstractTest {
assertPartitionBuildIndexKeyExists(indexId, partitionId);
}
- assertTrue(indexDescriptor(INDEX_NAME).writeOnly());
+ assertFalse(indexDescriptor(INDEX_NAME).available());
}
@Test
@@ -196,7 +196,7 @@ public class IndexAvailabilityControllerTest extends BaseIgniteAbstractTest {
assertPartitionBuildIndexKeyAbsent(indexId, partitionId);
}
- assertFalse(indexDescriptor(INDEX_NAME).writeOnly());
+ assertTrue(indexDescriptor(INDEX_NAME).available());
}
@Test
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/CatalogSchemaManagerTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/CatalogSchemaManagerTest.java
index ff2ada58f1..f543fb2db1 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/CatalogSchemaManagerTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/CatalogSchemaManagerTest.java
@@ -174,7 +174,7 @@ class CatalogSchemaManagerTest extends BaseIgniteAbstractTest {
new CatalogTableColumnDescriptor("v1", ColumnType.INT32, false, 0, 0, 0, null)
);
CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
- TABLE_ID, -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
);
CompletableFuture<Boolean> future = tableCreatedListener()
@@ -244,7 +244,7 @@ class CatalogSchemaManagerTest extends BaseIgniteAbstractTest {
new CatalogTableColumnDescriptor("v2", ColumnType.STRING, false, 0, 0, 0, null)
);
- return new CatalogTableDescriptor(TABLE_ID, -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);
}
private void completeCausalityToken(long causalityToken) {
@@ -280,7 +280,7 @@ class CatalogSchemaManagerTest extends BaseIgniteAbstractTest {
new CatalogTableColumnDescriptor("k2", ColumnType.STRING, false, 0, 0, 0, null)
);
- return new CatalogTableDescriptor(TABLE_ID, -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);
}
@Test
@@ -318,7 +318,7 @@ class CatalogSchemaManagerTest extends BaseIgniteAbstractTest {
new CatalogTableColumnDescriptor("v1", ColumnType.INT64, false, 0, 0, 0, null)
);
- return new CatalogTableDescriptor(TABLE_ID, -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);
}
@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 e53253fd9f..5478e96eee 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
@@ -131,6 +131,7 @@ public class CatalogToSchemaDescriptorConverterTest extends AbstractSchemaConver
CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
1,
-1,
+ -1,
"test",
0,
1,
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 cf0b2198f1..c5582a2e69 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
@@ -695,6 +695,7 @@ public class CatalogSqlSchemaManagerTest extends BaseIgniteAbstractTest {
return new CatalogTableDescriptor(
id,
-1,
+ -1,
name,
zoneId,
CatalogTableDescriptor.INITIAL_TABLE_VERSION,
@@ -726,13 +727,13 @@ public class CatalogSqlSchemaManagerTest extends BaseIgniteAbstractTest {
CatalogIndexDescriptor newDescriptor(int tableId) {
if (hashColumns != null) {
- return new CatalogHashIndexDescriptor(id, name, tableId, false, hashColumns, false);
+ return new CatalogHashIndexDescriptor(id, name, tableId, false, hashColumns, true);
} else if (sortedColumns != null) {
List<CatalogIndexColumnDescriptor> indexColumns = sortedColumns.stream()
.map((e) -> new CatalogIndexColumnDescriptor(e.getKey(), e.getValue()))
.collect(Collectors.toList());
- return new CatalogSortedIndexDescriptor(id, name, tableId, false, indexColumns, false);
+ return new CatalogSortedIndexDescriptor(id, name, tableId, false, indexColumns, true);
} else {
throw new IllegalStateException("Unable to create index");
}
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 ee88f8613e..3d0a054112 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
@@ -763,6 +763,7 @@ public abstract class AbstractMvTableStorageTest extends BaseMvStoragesTest {
private static void createTestTableAndIndexes(CatalogService catalogService) {
int id = 0;
+ int schemaId = id++;
int tableId = id++;
int zoneId = id++;
int sortedIndexId = id++;
@@ -770,6 +771,7 @@ public abstract class AbstractMvTableStorageTest extends BaseMvStoragesTest {
CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
tableId,
+ schemaId,
hashIndexId,
TABLE_NAME,
zoneId,
@@ -791,7 +793,7 @@ public abstract class AbstractMvTableStorageTest extends BaseMvStoragesTest {
tableId,
false,
List.of(new CatalogIndexColumnDescriptor("STRKEY", ASC_NULLS_LAST)),
- false
+ true
);
CatalogHashIndexDescriptor hashIndex = new CatalogHashIndexDescriptor(
@@ -800,7 +802,7 @@ public abstract class AbstractMvTableStorageTest extends BaseMvStoragesTest {
tableId,
true,
List.of("STRKEY"),
- false
+ true
);
when(catalogService.table(eq(TABLE_NAME), anyLong())).thenReturn(tableDescriptor);
diff --git a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
index 70ffd65e05..d33a33e753 100644
--- a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
+++ b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
@@ -50,7 +50,7 @@ public abstract class AbstractHashIndexStorageTest extends AbstractIndexStorageT
catalogTableDescriptor.id(),
false,
Stream.of(columnTypes).map(AbstractIndexStorageTest::columnName).collect(toList()),
- false
+ true
);
when(catalogService.index(eq(name), anyLong())).thenReturn(catalogHashIndexDescriptor);
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 042b110214..e0f97a2b7b 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
@@ -148,11 +148,13 @@ public abstract class AbstractIndexStorageTest<S extends IndexStorage, D extends
private static void createTestTable(CatalogService catalogService, AtomicInteger catalogId) {
ColumnParams pkColumn = ColumnParams.builder().name("pk").type(ColumnType.INT32).nullable(false).build();
+ int schemaId = catalogId.getAndIncrement();
int tableId = catalogId.getAndIncrement();
int zoneId = catalogId.getAndIncrement();
CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
tableId,
+ schemaId,
1,
TABLE_NAME,
zoneId,
diff --git a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
index c33bf5602d..d419a22d2c 100644
--- a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
+++ b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
@@ -120,7 +120,7 @@ public abstract class AbstractSortedIndexStorageTest extends AbstractIndexStorag
catalogTableDescriptor.id(),
false,
List.of(columns),
- false
+ true
);
when(catalogService.index(eq(catalogSortedIndexDescriptor.name()), anyLong())).thenReturn(catalogSortedIndexDescriptor);
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 0a2f5f321f..6bc1de3b8e 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
@@ -311,7 +311,7 @@ public class PartitionReplicaListenerTest extends IgniteAbstractTest {
private KvMarshaller<TestKey, TestValue> kvMarshallerVersion2;
private final CatalogTableDescriptor tableDescriptor = new CatalogTableDescriptor(
- TABLE_ID, 1, "table", 1, CURRENT_SCHEMA_VERSION,
+ TABLE_ID, 1, 2, "table", 1, CURRENT_SCHEMA_VERSION,
List.of(
new CatalogTableColumnDescriptor("intKey", ColumnType.INT32, false, 0, 0, 0, null),
new CatalogTableColumnDescriptor("strKey", ColumnType.STRING, false, 0, 0, 0, null),
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/FullTableSchemaTest.java b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/FullTableSchemaTest.java
index 8a0fdf642b..6347435d75 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/FullTableSchemaTest.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/schema/FullTableSchemaTest.java
@@ -45,7 +45,7 @@ class FullTableSchemaTest {
}
private static CatalogHashIndexDescriptor someIndex(int id, String name) {
- return new CatalogHashIndexDescriptor(id, name, 1, true, List.of("a"), false);
+ return new CatalogHashIndexDescriptor(id, name, 1, true, List.of("a"), true);
}
private static CatalogTableColumnDescriptor someColumn(String columnName) {