Search in sources :

Example 1 with TableView

use of org.apache.ignite.configuration.schemas.table.TableView in project ignite-3 by apache.

the class TableValidatorImpl method validate.

/**
 * {@inheritDoc}
 */
@Override
public void validate(TableValidator annotation, ValidationContext<NamedListView<TableView>> ctx) {
    NamedListView<TableView> oldTables = ctx.getOldValue();
    NamedListView<TableView> newTables = ctx.getNewValue();
    for (String tableName : newTables.namedListKeys()) {
        TableView newTable = newTables.get(tableName);
        try {
            TableDefinitionImpl tbl = SchemaConfigurationConverter.convert(newTable);
            assert !tbl.keyColumns().isEmpty();
            assert !tbl.colocationColumns().isEmpty();
            TableDefinitionBuilderImpl.validateIndices(tbl.indices(), tbl.columns(), tbl.colocationColumns());
        } catch (IllegalArgumentException e) {
            ctx.addIssue(new ValidationIssue("Validator works success by key " + ctx.currentKey() + ". Found " + newTable.columns().size() + " columns"));
        }
        validateDataRegion(oldTables == null ? null : oldTables.get(tableName), newTable, ctx);
        validateNamedListKeys(newTable, ctx);
    }
}
Also used : TableDefinitionImpl(org.apache.ignite.internal.schema.definition.TableDefinitionImpl) ValidationIssue(org.apache.ignite.configuration.validation.ValidationIssue) TableView(org.apache.ignite.configuration.schemas.table.TableView)

Example 2 with TableView

use of org.apache.ignite.configuration.schemas.table.TableView in project ignite-3 by apache.

the class SchemaUtils method columnMapper.

/**
 * Prepares column mapper.
 *
 * @param oldDesc Old schema descriptor.
 * @param oldTbl  Old table configuration.
 * @param newDesc New schema descriptor.
 * @param newTbl  New table configuration.
 * @return Column mapper.
 */
public static ColumnMapper columnMapper(SchemaDescriptor oldDesc, TableView oldTbl, SchemaDescriptor newDesc, TableChange newTbl) {
    ColumnMapper mapper = null;
    NamedListView<? extends ColumnView> newTblColumns = newTbl.columns();
    NamedListView<? extends ColumnView> oldTblColumns = oldTbl.columns();
    // because removed keys are simply replaced with nulls
    assert newTblColumns.size() >= oldTblColumns.size();
    for (int i = 0; i < newTblColumns.size(); ++i) {
        ColumnView newColView = newTblColumns.get(i);
        // new value can be null if a column has been deleted
        if (newColView == null) {
            continue;
        }
        if (i < oldTblColumns.size()) {
            ColumnView oldColView = oldTblColumns.get(i);
            Column newCol = newDesc.column(newColView.name());
            Column oldCol = oldDesc.column(oldColView.name());
            if (newCol.schemaIndex() == oldCol.schemaIndex()) {
                continue;
            }
            if (mapper == null) {
                mapper = ColumnMapping.createMapper(newDesc);
            }
            mapper.add(newCol.schemaIndex(), oldCol.schemaIndex());
        } else {
            // if the new Named List is larger than the old one, it can only mean that a new column has been added
            Column newCol = newDesc.column(newColView.name());
            assert !newDesc.isKeyColumn(newCol.schemaIndex());
            if (mapper == null) {
                mapper = ColumnMapping.createMapper(newDesc);
            }
            mapper.add(newCol);
        }
    }
    // since newTblColumns comes from a TableChange, it will contain nulls for removed columns
    Optional<Column> droppedKeyCol = newTblColumns.namedListKeys().stream().filter(k -> newTblColumns.get(k) == null).map(oldDesc::column).filter(c -> oldDesc.isKeyColumn(c.schemaIndex())).findAny();
    // TODO: configuration validators.
    assert droppedKeyCol.isEmpty() : IgniteStringFormatter.format("Dropping of key column is forbidden: [schemaVer={}, col={}]", newDesc.version(), droppedKeyCol.get());
    return mapper == null ? ColumnMapping.identityMapping() : mapper;
}
Also used : ColumnView(org.apache.ignite.configuration.schemas.table.ColumnView) SchemaDescriptorConverter(org.apache.ignite.internal.schema.configuration.SchemaDescriptorConverter) TableDefinition(org.apache.ignite.schema.definition.TableDefinition) SchemaConfigurationConverter(org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter) NamedListView(org.apache.ignite.configuration.NamedListView) Optional(java.util.Optional) ColumnMapper(org.apache.ignite.internal.schema.mapping.ColumnMapper) IgniteStringFormatter(org.apache.ignite.lang.IgniteStringFormatter) TableChange(org.apache.ignite.configuration.schemas.table.TableChange) ColumnMapping(org.apache.ignite.internal.schema.mapping.ColumnMapping) TableView(org.apache.ignite.configuration.schemas.table.TableView) ColumnView(org.apache.ignite.configuration.schemas.table.ColumnView) ColumnMapper(org.apache.ignite.internal.schema.mapping.ColumnMapper)

Example 3 with TableView

use of org.apache.ignite.configuration.schemas.table.TableView in project ignite-3 by apache.

the class TableManager method directTableIds.

/**
 * Collects a list of direct table ids.
 *
 * @return A list of direct table ids.
 * @see DirectConfigurationProperty
 */
private List<UUID> directTableIds() {
    NamedListView<TableView> views = directProxy(tablesCfg.tables()).value();
    List<UUID> tableUuids = new ArrayList<>();
    for (int i = 0; i < views.size(); i++) {
        ExtendedTableView extView = (ExtendedTableView) views.get(i);
        tableUuids.add(extView.id());
    }
    return tableUuids;
}
Also used : ExtendedTableView(org.apache.ignite.internal.configuration.schema.ExtendedTableView) ArrayList(java.util.ArrayList) UUID(java.util.UUID) ExtendedTableView(org.apache.ignite.internal.configuration.schema.ExtendedTableView) TableView(org.apache.ignite.configuration.schemas.table.TableView)

Example 4 with TableView

use of org.apache.ignite.configuration.schemas.table.TableView in project ignite-3 by apache.

the class TableManager method start.

/**
 * {@inheritDoc}
 */
@Override
public void start() {
    tablesCfg.tables().listenElements(new ConfigurationNamedListListener<>() {

        @Override
        public CompletableFuture<?> onCreate(ConfigurationNotificationEvent<TableView> ctx) {
            if (!busyLock.enterBusy()) {
                String tblName = ctx.newValue().name();
                UUID tblId = ((ExtendedTableView) ctx.newValue()).id();
                fireEvent(TableEvent.CREATE, new TableEventParameters(ctx.storageRevision(), tblId, tblName), new NodeStoppingException());
                return CompletableFuture.failedFuture(new NodeStoppingException());
            }
            try {
                onTableCreateInternal(ctx);
            } finally {
                busyLock.leaveBusy();
            }
            return CompletableFuture.completedFuture(null);
        }

        /**
         * Method for handle a table configuration event.
         *
         * @param ctx Configuration event.
         */
        private void onTableCreateInternal(ConfigurationNotificationEvent<TableView> ctx) {
            String tblName = ctx.newValue().name();
            UUID tblId = ((ExtendedTableView) ctx.newValue()).id();
            // configuration, which is not supported now.
            assert ((ExtendedTableView) ctx.newValue()).assignments() != null : IgniteStringFormatter.format("Table [id={}, name={}] has empty assignments.", tblId, tblName);
            // TODO: IGNITE-16369 Listener with any placeholder should be used instead.
            ((ExtendedTableConfiguration) tablesCfg.tables().get(tblName)).schemas().listenElements(new ConfigurationNamedListListener<>() {

                @Override
                public CompletableFuture<?> onCreate(ConfigurationNotificationEvent<SchemaView> schemasCtx) {
                    long causalityToken = schemasCtx.storageRevision();
                    if (!busyLock.enterBusy()) {
                        fireEvent(TableEvent.ALTER, new TableEventParameters(causalityToken, tblId, tblName), new NodeStoppingException());
                        return CompletableFuture.failedFuture(new NodeStoppingException());
                    }
                    try {
                        // FIXME: https://issues.apache.org/jira/browse/IGNITE-16369
                        if (ctx.storageRevision() != schemasCtx.storageRevision()) {
                            return tablesByIdVv.get(causalityToken).thenAccept(tablesById -> {
                                TableImpl table = tablesById.get(tblId);
                                ((SchemaRegistryImpl) table.schemaView()).onSchemaRegistered(SchemaSerializerImpl.INSTANCE.deserialize((schemasCtx.newValue().schema())));
                                fireEvent(TableEvent.ALTER, new TableEventParameters(causalityToken, table), null);
                            });
                        }
                        return CompletableFuture.completedFuture(null);
                    } catch (Exception e) {
                        fireEvent(TableEvent.ALTER, new TableEventParameters(causalityToken, tblId, tblName), e);
                        return CompletableFuture.failedFuture(e);
                    } finally {
                        busyLock.leaveBusy();
                    }
                }
            });
            ((ExtendedTableConfiguration) tablesCfg.tables().get(tblName)).assignments().listen(assignmentsCtx -> {
                if (!busyLock.enterBusy()) {
                    return CompletableFuture.failedFuture(new NodeStoppingException());
                }
                try {
                    // FIXME: https://issues.apache.org/jira/browse/IGNITE-16369
                    if (ctx.storageRevision() == assignmentsCtx.storageRevision()) {
                        return CompletableFuture.completedFuture(null);
                    } else {
                        return updateAssignmentInternal(assignmentsCtx.storageRevision(), tblId, assignmentsCtx);
                    }
                } finally {
                    busyLock.leaveBusy();
                }
            });
            createTableLocally(ctx.storageRevision(), tblName, tblId, (List<List<ClusterNode>>) ByteUtils.fromBytes(((ExtendedTableView) ctx.newValue()).assignments()), SchemaSerializerImpl.INSTANCE.deserialize(((ExtendedTableView) ctx.newValue()).schemas().get(String.valueOf(INITIAL_SCHEMA_VERSION)).schema()));
        }

        private CompletableFuture<?> updateAssignmentInternal(long causalityToken, UUID tblId, ConfigurationNotificationEvent<byte[]> assignmentsCtx) {
            List<List<ClusterNode>> oldAssignments = (List<List<ClusterNode>>) ByteUtils.fromBytes(assignmentsCtx.oldValue());
            List<List<ClusterNode>> newAssignments = (List<List<ClusterNode>>) ByteUtils.fromBytes(assignmentsCtx.newValue());
            CompletableFuture<?>[] futures = new CompletableFuture<?>[oldAssignments.size()];
            // TODO: be exact same amount of partitions and replicas for both old and new assignments
            for (int i = 0; i < oldAssignments.size(); i++) {
                int partId = i;
                List<ClusterNode> oldPartitionAssignment = oldAssignments.get(partId);
                List<ClusterNode> newPartitionAssignment = newAssignments.get(partId);
                var toAdd = new HashSet<>(newPartitionAssignment);
                toAdd.removeAll(oldPartitionAssignment);
                // Create new raft nodes according to new assignments.
                futures[i] = tablesByIdVv.get(causalityToken).thenCompose(tablesById -> {
                    InternalTable internalTable = tablesById.get(tblId).internalTable();
                    try {
                        return raftMgr.updateRaftGroup(raftGroupName(tblId, partId), newPartitionAssignment, toAdd, () -> new PartitionListener(tblId, new VersionedRowStore(internalTable.storage().getOrCreatePartition(partId), txManager))).thenAccept(updatedRaftGroupService -> ((InternalTableImpl) internalTable).updateInternalTableRaftGroupService(partId, updatedRaftGroupService)).exceptionally(th -> {
                            LOG.error("Failed to update raft groups one the node", th);
                            return null;
                        });
                    } catch (NodeStoppingException e) {
                        throw new AssertionError("Loza was stopped before Table manager", e);
                    }
                });
            }
            return CompletableFuture.allOf(futures);
        }

        @Override
        public CompletableFuture<?> onRename(String oldName, String newName, ConfigurationNotificationEvent<TableView> ctx) {
            return CompletableFuture.completedFuture(null);
        }

        @Override
        public CompletableFuture<?> onDelete(ConfigurationNotificationEvent<TableView> ctx) {
            if (!busyLock.enterBusy()) {
                String tblName = ctx.oldValue().name();
                UUID tblId = ((ExtendedTableView) ctx.oldValue()).id();
                fireEvent(TableEvent.DROP, new TableEventParameters(ctx.storageRevision(), tblId, tblName), new NodeStoppingException());
                return CompletableFuture.failedFuture(new NodeStoppingException());
            }
            try {
                dropTableLocally(ctx.storageRevision(), ctx.oldValue().name(), ((ExtendedTableView) ctx.oldValue()).id(), (List<List<ClusterNode>>) ByteUtils.fromBytes(((ExtendedTableView) ctx.oldValue()).assignments()));
            } finally {
                busyLock.leaveBusy();
            }
            return CompletableFuture.completedFuture(null);
        }
    });
    engine.start();
    DataRegion defaultDataRegion = engine.createDataRegion(dataStorageCfg.defaultRegion());
    dataRegions.put(DEFAULT_DATA_REGION_NAME, defaultDataRegion);
    defaultDataRegion.start();
}
Also used : IgniteTablesInternal(org.apache.ignite.internal.table.IgniteTablesInternal) ExtendedTableConfiguration(org.apache.ignite.internal.configuration.schema.ExtendedTableConfiguration) TableAlreadyExistsException(org.apache.ignite.lang.TableAlreadyExistsException) ConfigurationUtil.directProxy(org.apache.ignite.internal.configuration.util.ConfigurationUtil.directProxy) ConfigurationUtil.getByInternalId(org.apache.ignite.internal.configuration.util.ConfigurationUtil.getByInternalId) ExtendedTableChange(org.apache.ignite.internal.configuration.schema.ExtendedTableChange) IgniteLogger(org.apache.ignite.lang.IgniteLogger) RaftGroupService(org.apache.ignite.raft.client.service.RaftGroupService) Map(java.util.Map) DataRegion(org.apache.ignite.internal.storage.engine.DataRegion) TableNotFoundException(org.apache.ignite.lang.TableNotFoundException) Path(java.nio.file.Path) SchemaUtils(org.apache.ignite.internal.schema.SchemaUtils) ExtendedTableView(org.apache.ignite.internal.configuration.schema.ExtendedTableView) IgniteComponent(org.apache.ignite.internal.manager.IgniteComponent) SchemaConfiguration(org.apache.ignite.internal.configuration.schema.SchemaConfiguration) Int2ObjectOpenHashMap(it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap) InternalTableImpl(org.apache.ignite.internal.table.distributed.storage.InternalTableImpl) DataStorageConfiguration(org.apache.ignite.configuration.schemas.store.DataStorageConfiguration) TablesConfiguration(org.apache.ignite.configuration.schemas.table.TablesConfiguration) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) DEFAULT_DATA_REGION_NAME(org.apache.ignite.configuration.schemas.store.DataStorageConfigurationSchema.DEFAULT_DATA_REGION_NAME) CompletionException(java.util.concurrent.CompletionException) Producer(org.apache.ignite.internal.manager.Producer) StorageEngine(org.apache.ignite.internal.storage.engine.StorageEngine) UUID(java.util.UUID) ConfigurationChangeException(org.apache.ignite.configuration.ConfigurationChangeException) Collectors(java.util.stream.Collectors) TxManager(org.apache.ignite.internal.tx.TxManager) TableView(org.apache.ignite.configuration.schemas.table.TableView) ClusterNode(org.apache.ignite.network.ClusterNode) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) IgniteInternalException(org.apache.ignite.lang.IgniteInternalException) IgniteStringFormatter(org.apache.ignite.lang.IgniteStringFormatter) NotNull(org.jetbrains.annotations.NotNull) InternalTable(org.apache.ignite.internal.table.InternalTable) IgniteException(org.apache.ignite.lang.IgniteException) Loza(org.apache.ignite.internal.raft.Loza) SchemaRegistryImpl(org.apache.ignite.internal.schema.registry.SchemaRegistryImpl) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) TableConfiguration(org.apache.ignite.configuration.schemas.table.TableConfiguration) ByteUtils(org.apache.ignite.internal.util.ByteUtils) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) SchemaSerializerImpl(org.apache.ignite.internal.schema.marshaller.schema.SchemaSerializerImpl) Function(java.util.function.Function) Supplier(java.util.function.Supplier) SchemaView(org.apache.ignite.internal.configuration.schema.SchemaView) VersionedRowStore(org.apache.ignite.internal.table.distributed.storage.VersionedRowStore) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) TableImpl(org.apache.ignite.internal.table.TableImpl) IgniteSpinBusyLock(org.apache.ignite.internal.util.IgniteSpinBusyLock) IgniteTables(org.apache.ignite.table.manager.IgniteTables) NoSuchElementException(java.util.NoSuchElementException) VersionedValue(org.apache.ignite.internal.causality.VersionedValue) TopologyService(org.apache.ignite.network.TopologyService) SchemaDescriptor(org.apache.ignite.internal.schema.SchemaDescriptor) TableEventParameters(org.apache.ignite.internal.table.event.TableEventParameters) Files(java.nio.file.Files) NamedListView(org.apache.ignite.configuration.NamedListView) NodeStoppingException(org.apache.ignite.lang.NodeStoppingException) IgniteObjectName(org.apache.ignite.internal.util.IgniteObjectName) IOException(java.io.IOException) Ignite(org.apache.ignite.Ignite) BaselineManager(org.apache.ignite.internal.baseline.BaselineManager) TableStorage(org.apache.ignite.internal.storage.engine.TableStorage) ConfigurationNamedListListener(org.apache.ignite.configuration.notifications.ConfigurationNamedListListener) NetworkAddress(org.apache.ignite.network.NetworkAddress) Consumer(java.util.function.Consumer) ConfigurationNotificationEvent(org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent) TableEvent(org.apache.ignite.internal.table.event.TableEvent) AffinityUtils(org.apache.ignite.internal.affinity.AffinityUtils) EventListener(org.apache.ignite.internal.manager.EventListener) PartitionListener(org.apache.ignite.internal.table.distributed.raft.PartitionListener) Table(org.apache.ignite.table.Table) ConfigurationValidationException(org.apache.ignite.configuration.validation.ConfigurationValidationException) RocksDbStorageEngine(org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine) TableChange(org.apache.ignite.configuration.schemas.table.TableChange) NodeStoppingException(org.apache.ignite.lang.NodeStoppingException) InternalTableImpl(org.apache.ignite.internal.table.distributed.storage.InternalTableImpl) TableImpl(org.apache.ignite.internal.table.TableImpl) ExtendedTableConfiguration(org.apache.ignite.internal.configuration.schema.ExtendedTableConfiguration) CompletableFuture(java.util.concurrent.CompletableFuture) ConfigurationNamedListListener(org.apache.ignite.configuration.notifications.ConfigurationNamedListListener) ConfigurationNotificationEvent(org.apache.ignite.configuration.notifications.ConfigurationNotificationEvent) List(java.util.List) ArrayList(java.util.ArrayList) UUID(java.util.UUID) ExtendedTableView(org.apache.ignite.internal.configuration.schema.ExtendedTableView) TableView(org.apache.ignite.configuration.schemas.table.TableView) ClusterNode(org.apache.ignite.network.ClusterNode) VersionedRowStore(org.apache.ignite.internal.table.distributed.storage.VersionedRowStore) ExtendedTableView(org.apache.ignite.internal.configuration.schema.ExtendedTableView) SchemaRegistryImpl(org.apache.ignite.internal.schema.registry.SchemaRegistryImpl) InternalTable(org.apache.ignite.internal.table.InternalTable) TableAlreadyExistsException(org.apache.ignite.lang.TableAlreadyExistsException) TableNotFoundException(org.apache.ignite.lang.TableNotFoundException) CompletionException(java.util.concurrent.CompletionException) ConfigurationChangeException(org.apache.ignite.configuration.ConfigurationChangeException) IgniteInternalException(org.apache.ignite.lang.IgniteInternalException) IgniteException(org.apache.ignite.lang.IgniteException) NoSuchElementException(java.util.NoSuchElementException) NodeStoppingException(org.apache.ignite.lang.NodeStoppingException) IOException(java.io.IOException) ConfigurationValidationException(org.apache.ignite.configuration.validation.ConfigurationValidationException) TableEventParameters(org.apache.ignite.internal.table.event.TableEventParameters) PartitionListener(org.apache.ignite.internal.table.distributed.raft.PartitionListener) InternalTableImpl(org.apache.ignite.internal.table.distributed.storage.InternalTableImpl) DataRegion(org.apache.ignite.internal.storage.engine.DataRegion)

Example 5 with TableView

use of org.apache.ignite.configuration.schemas.table.TableView in project ignite-3 by apache.

the class TableValidatorImplTest method testMisalignedColumnNamedListKeys.

/**
 * Tests that column names and column keys inside a Named List must be equal.
 */
@Test
void testMisalignedColumnNamedListKeys(@InjectConfiguration(polymorphicExtensions = RocksDbDataRegionConfigurationSchema.class) DataStorageConfiguration dbCfg) {
    NamedListView<TableView> oldValue = tablesCfg.tables().value();
    TableConfiguration tableCfg = tablesCfg.tables().get("table");
    CompletableFuture<Void> tableChangeFuture = tableCfg.columns().change(columnsChange -> columnsChange.create("ololo", columnChange -> columnChange.changeName("not ololo").changeType(columnTypeChange -> columnTypeChange.changeType("STRING")).changeNullable(true)));
    assertThat(tableChangeFuture, willBe(nullValue(Void.class)));
    ValidationContext<NamedListView<TableView>> ctx = mockContext(oldValue, dbCfg.value());
    ArgumentCaptor<ValidationIssue> issuesCaptor = validate(ctx);
    assertThat(issuesCaptor.getAllValues(), hasSize(1));
    assertThat(issuesCaptor.getValue().message(), is(equalTo("Column name \"not ololo\" does not match its Named List key: \"ololo\"")));
}
Also used : HashIndexConfigurationSchema(org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema) PageMemoryDataRegionConfigurationSchema(org.apache.ignite.configuration.schemas.store.PageMemoryDataRegionConfigurationSchema) TableConfiguration(org.apache.ignite.configuration.schemas.table.TableConfiguration) CompletableFuture(java.util.concurrent.CompletableFuture) PartialIndexConfigurationSchema(org.apache.ignite.configuration.schemas.table.PartialIndexConfigurationSchema) SortedIndexConfigurationSchema(org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema) InjectConfiguration(org.apache.ignite.internal.configuration.testframework.InjectConfiguration) ArgumentCaptor(org.mockito.ArgumentCaptor) UnsafeMemoryAllocatorConfigurationSchema(org.apache.ignite.configuration.schemas.store.UnsafeMemoryAllocatorConfigurationSchema) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) ConfigurationExtension(org.apache.ignite.internal.configuration.testframework.ConfigurationExtension) Matchers.nullValue(org.hamcrest.Matchers.nullValue) Matchers.hasSize(org.hamcrest.Matchers.hasSize) RocksDbDataRegionConfigurationSchema(org.apache.ignite.configuration.schemas.store.RocksDbDataRegionConfigurationSchema) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) DataStorageView(org.apache.ignite.configuration.schemas.store.DataStorageView) Matchers.empty(org.hamcrest.Matchers.empty) ValidationContext(org.apache.ignite.configuration.validation.ValidationContext) NamedListView(org.apache.ignite.configuration.NamedListView) DataStorageConfiguration(org.apache.ignite.configuration.schemas.store.DataStorageConfiguration) TablesConfiguration(org.apache.ignite.configuration.schemas.table.TablesConfiguration) CompletableFutureMatcher.willBe(org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willBe) Mockito.doNothing(org.mockito.Mockito.doNothing) Mockito.when(org.mockito.Mockito.when) TableView(org.apache.ignite.configuration.schemas.table.TableView) TimeUnit(java.util.concurrent.TimeUnit) Test(org.junit.jupiter.api.Test) Nullable(org.jetbrains.annotations.Nullable) ValidationIssue(org.apache.ignite.configuration.validation.ValidationIssue) Matchers.equalTo(org.hamcrest.Matchers.equalTo) HashIndexChange(org.apache.ignite.configuration.schemas.table.HashIndexChange) Matchers.is(org.hamcrest.Matchers.is) Mockito.mock(org.mockito.Mockito.mock) NamedListView(org.apache.ignite.configuration.NamedListView) ValidationIssue(org.apache.ignite.configuration.validation.ValidationIssue) TableConfiguration(org.apache.ignite.configuration.schemas.table.TableConfiguration) TableView(org.apache.ignite.configuration.schemas.table.TableView) Test(org.junit.jupiter.api.Test)

Aggregations

TableView (org.apache.ignite.configuration.schemas.table.TableView)6 NamedListView (org.apache.ignite.configuration.NamedListView)4 CompletableFuture (java.util.concurrent.CompletableFuture)3 DataStorageConfiguration (org.apache.ignite.configuration.schemas.store.DataStorageConfiguration)3 TableConfiguration (org.apache.ignite.configuration.schemas.table.TableConfiguration)3 TablesConfiguration (org.apache.ignite.configuration.schemas.table.TablesConfiguration)3 ValidationIssue (org.apache.ignite.configuration.validation.ValidationIssue)3 Nullable (org.jetbrains.annotations.Nullable)3 ArrayList (java.util.ArrayList)2 TimeUnit (java.util.concurrent.TimeUnit)2 DataStorageView (org.apache.ignite.configuration.schemas.store.DataStorageView)2 PageMemoryDataRegionConfigurationSchema (org.apache.ignite.configuration.schemas.store.PageMemoryDataRegionConfigurationSchema)2 RocksDbDataRegionConfigurationSchema (org.apache.ignite.configuration.schemas.store.RocksDbDataRegionConfigurationSchema)2 UnsafeMemoryAllocatorConfigurationSchema (org.apache.ignite.configuration.schemas.store.UnsafeMemoryAllocatorConfigurationSchema)2 HashIndexChange (org.apache.ignite.configuration.schemas.table.HashIndexChange)2 HashIndexConfigurationSchema (org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema)2 PartialIndexConfigurationSchema (org.apache.ignite.configuration.schemas.table.PartialIndexConfigurationSchema)2 SortedIndexConfigurationSchema (org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema)2 ValidationContext (org.apache.ignite.configuration.validation.ValidationContext)2 ConfigurationExtension (org.apache.ignite.internal.configuration.testframework.ConfigurationExtension)2