This is an automated email from the ASF dual-hosted git repository.
amashenkov 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 55be29fd9b IGNITE-17580: Move SchemaBuilder API to test package (#1043)
55be29fd9b is described below
commit 55be29fd9b52e70bfaea6933ed70ffe1726d319a
Author: Andrew V. Mashenkov <[email protected]>
AuthorDate: Wed Aug 31 13:47:24 2022 +0300
IGNITE-17580: Move SchemaBuilder API to test package (#1043)
---
.../ignite/schema/definition/TableDefinition.java | 8 --
.../schema/modification/AlterColumnBuilder.java | 77 ---------------
.../modification/TableModificationBuilder.java | 83 ----------------
.../ignite/schema/modification/package-info.java | 22 -----
modules/cli/pom.xml | 7 ++
.../org/apache/ignite/cli/IntegrationTestBase.java | 4 +-
.../apache/ignite/internal/index/IndexManager.java | 2 +-
modules/runner/pom.xml | 7 ++
.../ignite/internal/ItNoSyncMetadataTest.java | 2 +-
.../storage/ItRebalanceDistributedTest.java | 2 +-
.../inmemory/ItRaftStorageVolatilityTest.java | 2 +-
.../runner/app/AbstractSchemaChangeTest.java | 2 +-
.../internal/runner/app/ItDataSchemaSyncTest.java | 2 +-
.../runner/app/ItDynamicTableCreationTest.java | 2 +-
.../app/ItIgniteInMemoryNodeRestartTest.java | 2 +-
.../runner/app/ItIgniteNodeRestartTest.java | 2 +-
.../internal/runner/app/ItNoThreadsLeftTest.java | 2 +-
.../runner/app/ItSchemaChangeKvViewTest.java | 2 +-
.../runner/app/ItSchemaChangeTableViewTest.java | 2 +-
.../runner/app/ItTableApiContractTest.java | 2 +-
.../internal/runner/app/ItTablesApiTest.java | 2 +-
.../runner/app/PlatformTestNodeRunner.java | 2 +-
.../app/client/ItAbstractThinClientTest.java | 2 +-
.../runner/app/jdbc/ItJdbcMetadataSelfTest.java | 2 +-
.../runner/app/jdbc/ItJdbcResultSetSelfTest.java | 2 +-
.../sql/engine/AbstractBasicIntegrationTest.java | 4 +-
.../internal/sql/engine/ItFunctionsTest.java | 2 +-
.../internal/sql/engine/ItIndexSpoolTest.java | 2 +-
.../ignite/internal/sql/engine/ItJoinTest.java | 2 +-
.../ignite/internal/sql/engine/ItMetadataTest.java | 2 +-
.../internal/sql/engine/ItMixedQueriesTest.java | 2 +-
.../internal/sql/engine/ItOrToUnionRuleTest.java | 2 +-
.../sql/engine/ItProjectScanMergeRuleTest.java | 2 +-
.../internal/sql/engine/ItSecondaryIndexTest.java | 2 +-
.../ignite/internal/sql/engine/ItSetOpTest.java | 2 +-
.../internal/sql/engine/ItSortAggregateTest.java | 2 +-
.../apache/ignite/internal/schema/SchemaUtils.java | 9 ++
.../schema/configuration/TableValidatorImpl.java | 4 +-
.../schema/definition/SchemaValidationUtils.java | 77 +++++++++++++++
.../schema/definition/TableDefinitionImpl.java | 21 +---
.../modification/AlterColumnBuilderImpl.java | 75 ---------------
.../modification/TableModificationBuilderImpl.java | 106 ---------------------
.../org/apache/ignite/schema/package-info.java | 22 -----
.../internal/schema/SchemaConfigurationTest.java | 51 +---------
.../builder/ColumnDefinitionBuilderTest.java | 4 +-
.../builder/HashIndexDefinitionBuilderTest.java | 4 +-
.../PrimaryKeyDefinitionDefinitionBuilderTest.java | 4 +-
.../builder/SortedIndexDefinitionBuilderTest.java | 4 +-
.../schema/builder/TableDefinitionBuilderTest.java | 4 +-
.../SchemaConfigurationConverterTest.java | 8 +-
.../SchemaDescriptorConverterTest.java | 6 +-
.../testutils}/builder/AbstractIndexBuilder.java | 3 +-
.../builder/ColumnDefinitionBuilder.java | 2 +-
.../builder/ColumnDefinitionBuilderImpl.java | 5 +-
.../builder/HashIndexDefinitionBuilder.java | 2 +-
.../builder/HashIndexDefinitionBuilderImpl.java | 5 +-
.../builder/PrimaryKeyDefinitionBuilder.java | 2 +-
.../builder/PrimaryKeyDefinitionBuilderImpl.java | 6 +-
.../schema/testutils/builder}/SchemaBuilders.java | 12 +--
.../testutils}/builder/SchemaObjectBuilder.java | 2 +-
.../builder/SortedIndexDefinitionBuilder.java | 2 +-
.../builder/SortedIndexDefinitionBuilderImpl.java | 16 ++--
.../testutils}/builder/TableDefinitionBuilder.java | 2 +-
.../builder/TableDefinitionBuilderImpl.java | 62 ++----------
.../sql/engine/exec/ddl/DdlCommandHandler.java | 49 +++++-----
.../storage/AbstractMvTableStorageTest.java | 2 +-
.../index/AbstractHashIndexStorageTest.java | 6 +-
.../index/AbstractSortedIndexStorageTest.java | 10 +-
.../table/distributed/TableManagerTest.java | 2 +-
69 files changed, 219 insertions(+), 638 deletions(-)
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
b/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
index f82bd45a0c..a9774c7d9e 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
+++
b/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
@@ -21,7 +21,6 @@ import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.apache.ignite.schema.definition.index.IndexDefinition;
-import org.apache.ignite.schema.modification.TableModificationBuilder;
/**
* Table schema configuration.
@@ -63,11 +62,4 @@ public interface TableDefinition extends SchemaObject {
* @return Collection of indexes.
*/
Collection<IndexDefinition> indices();
-
- /**
- * Converts table descriptor to table modification builder.
- *
- * @return Table modification builder.
- */
- TableModificationBuilder toBuilder();
}
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
b/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
deleted file mode 100644
index d2dbf8606a..0000000000
---
a/modules/api/src/main/java/org/apache/ignite/schema/modification/AlterColumnBuilder.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.schema.modification;
-
-import org.apache.ignite.schema.definition.ColumnType;
-
-/**
- * Alter column builder.
- *
- * <p>NOTE: Only safe actions that can be applied automatically on-fly are
allowed.
- */
-public interface AlterColumnBuilder {
- /**
- * Renames a column.
- *
- * @param newName New column name.
- * @return {@code this} for chaining.
- */
- AlterColumnBuilder withNewName(String newName);
-
- /**
- * Convert column to a new type.
- *
- * <p>Note: New type must be compatible with old.
- *
- * @param newType New column type.
- * @return {@code this} for chaining.
- */
- AlterColumnBuilder convertTo(ColumnType newType);
-
- /**
- * Sets new column default value.
- *
- * @param defaultValue Default value.
- * @return {@code this} for chaining.
- */
- AlterColumnBuilder withNewDefault(Object defaultValue);
-
- /**
- * Set nullability attribute.
- *
- * @return {@code this} for chaining.
- */
- AlterColumnBuilder asNullable();
-
- /**
- * Mark column as non-nullable.
- *
- * <p>Note: Replacement param is mandatory, all previously stored 'nulls'
will be treated as replacement value on read.
- *
- * @param replacement Non-null value, that 'null' will be converted to.
- * @return {@code this} for chaining.
- */
- AlterColumnBuilder asNonNullable(Object replacement);
-
- /**
- * Builds alter column descriptor and pass it to parent table modification
builder.
- *
- * @return Parent builder.
- */
- TableModificationBuilder done();
-}
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
b/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
deleted file mode 100644
index af4508544f..0000000000
---
a/modules/api/src/main/java/org/apache/ignite/schema/modification/TableModificationBuilder.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.schema.modification;
-
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.index.IndexDefinition;
-
-/**
- * Collect schema modification commands and pass them to manager to create a
schema upgrade script.
- */
-public interface TableModificationBuilder {
- /**
- * Adds new value column.
- *
- * @param column Column.
- * @return {@code this} for chaining.
- */
- TableModificationBuilder addColumn(ColumnDefinition column);
-
- /**
- * Adds new non-affinity key column.
- *
- * @param column Column.
- * @return {@code this} for chaining.
- */
- TableModificationBuilder addKeyColumn(ColumnDefinition column);
-
- /**
- * Creates alter column builder..
- *
- * @param columnName Column name.
- * @return Alter column builder.
- */
- AlterColumnBuilder alterColumn(String columnName);
-
- /**
- * Drops value column.
- *
- * <p>Note: Key column drop is not allowed.
- *
- * @param columnName Column.
- * @return {@code this} for chaining.
- */
- TableModificationBuilder dropColumn(String columnName);
-
- /**
- * Adds new table index.
- *
- * @param indexDefinition Table index.
- * @return {@code this} for chaining.
- */
- TableModificationBuilder addIndex(IndexDefinition indexDefinition);
-
- /**
- * Drops table index.
- *
- * <p>Note: PK can't be dropped.
- *
- * @param indexName Index name.
- * @return {@code this} for chaining.
- */
- TableModificationBuilder dropIndex(String indexName);
-
- /**
- * Apply changes.
- */
- void apply();
-}
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
b/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
deleted file mode 100644
index 1b154cad5e..0000000000
---
a/modules/api/src/main/java/org/apache/ignite/schema/modification/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Table schema manipulation API.
- */
-
-package org.apache.ignite.schema.modification;
diff --git a/modules/cli/pom.xml b/modules/cli/pom.xml
index c579e154ec..2c2df5213f 100644
--- a/modules/cli/pom.xml
+++ b/modules/cli/pom.xml
@@ -259,6 +259,13 @@
<scope>test</scope>
<type>test-jar</type>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-schema</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</profile>
</profiles>
diff --git
a/modules/cli/src/integrationTest/java/org/apache/ignite/cli/IntegrationTestBase.java
b/modules/cli/src/integrationTest/java/org/apache/ignite/cli/IntegrationTestBase.java
index 2c243b0635..894dd9536a 100644
---
a/modules/cli/src/integrationTest/java/org/apache/ignite/cli/IntegrationTestBase.java
+++
b/modules/cli/src/integrationTest/java/org/apache/ignite/cli/IntegrationTestBase.java
@@ -43,6 +43,8 @@ import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.internal.sql.engine.AsyncCursor;
import org.apache.ignite.internal.sql.engine.AsyncCursor.BatchedResult;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
@@ -50,10 +52,8 @@ import
org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteStringFormatter;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
diff --git
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
index 322ca04573..2da927850c 100644
---
a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
+++
b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.index;
import static java.util.concurrent.CompletableFuture.failedFuture;
-import static
org.apache.ignite.internal.schema.definition.TableDefinitionImpl.canonicalName;
+import static org.apache.ignite.internal.schema.SchemaUtils.canonicalName;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/modules/runner/pom.xml b/modules/runner/pom.xml
index ae0605d177..027b962f97 100644
--- a/modules/runner/pom.xml
+++ b/modules/runner/pom.xml
@@ -232,6 +232,13 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-schema</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path-assert</artifactId>
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
index 5322a18218..e6b7706ed1 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
@@ -19,10 +19,10 @@ package org.apache.ignite.internal;
import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WithSystemProperty;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItRebalanceDistributedTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItRebalanceDistributedTest.java
index e064f0207a..34e471909d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItRebalanceDistributedTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItRebalanceDistributedTest.java
@@ -64,6 +64,7 @@ import
org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
import org.apache.ignite.internal.raft.storage.impl.LocalLogStorageFactory;
import org.apache.ignite.internal.schema.SchemaManager;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModules;
import
org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryDataStorageModule;
@@ -90,7 +91,6 @@ import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.network.StaticNodeFinder;
import org.apache.ignite.raft.client.Peer;
import org.apache.ignite.raft.jraft.rpc.RpcRequests;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.utils.ClusterServiceTestUtils;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
index c5b6231b66..29972015c8 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
@@ -39,9 +39,9 @@ import
org.apache.ignite.configuration.schemas.table.EntryCountBudgetChange;
import org.apache.ignite.internal.AbstractClusterIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageChange;
import org.apache.ignite.internal.table.distributed.TableManager;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.Test;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
index f306baebf6..89de3cf4c0 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
@@ -35,12 +35,12 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.configuration.schemas.table.ColumnChange;
import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultChange;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteObjectName;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
index 6036c5409a..8814296f96 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDataSchemaSyncTest.java
@@ -33,13 +33,13 @@ import java.util.concurrent.TimeUnit;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.internal.app.IgniteImpl;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.test.WatchListenerInhibitor;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDynamicTableCreationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDynamicTableCreationTest.java
index b74735ec5a..9bef423071 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDynamicTableCreationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItDynamicTableCreationTest.java
@@ -38,11 +38,11 @@ import org.apache.ignite.IgnitionManager;
import org.apache.ignite.configuration.schemas.table.ColumnChange;
import
org.apache.ignite.configuration.validation.ConfigurationValidationException;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.KeyValueView;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
index 41179fe67b..65238f2736 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteInMemoryNodeRestartTest.java
@@ -36,6 +36,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.raft.Loza;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import
org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageChange;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
@@ -46,7 +47,6 @@ import org.apache.ignite.lang.IgniteStringFormatter;
import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.raft.client.Peer;
import org.apache.ignite.raft.client.service.RaftGroupService;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index bbfe2ec788..eead7e596d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -72,6 +72,7 @@ import
org.apache.ignite.internal.raft.storage.impl.LocalLogStorageFactory;
import org.apache.ignite.internal.recovery.ConfigurationCatchUpListener;
import org.apache.ignite.internal.recovery.RecoveryCompletionFutureFactory;
import org.apache.ignite.internal.schema.SchemaManager;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModule;
import org.apache.ignite.internal.storage.DataStorageModules;
@@ -96,7 +97,6 @@ import
org.apache.ignite.network.MessageSerializationRegistryImpl;
import org.apache.ignite.network.NettyBootstrapFactory;
import org.apache.ignite.network.scalecube.ScaleCubeClusterServiceFactory;
import
org.apache.ignite.raft.jraft.RaftMessagesSerializationRegistryInitializer;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItNoThreadsLeftTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItNoThreadsLeftTest.java
index f8eb931eb3..fc5d08e4b3 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItNoThreadsLeftTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItNoThreadsLeftTest.java
@@ -31,9 +31,9 @@ import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.Table;
import org.junit.jupiter.api.Test;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeKvViewTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeKvViewTest.java
index 0f892a8012..1e0d9e1458 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeKvViewTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeKvViewTest.java
@@ -26,7 +26,7 @@ import java.util.List;
import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.schema.SchemaMismatchException;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.KeyValueView;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeTableViewTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeTableViewTest.java
index d07424d409..b11a176443 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeTableViewTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItSchemaChangeTableViewTest.java
@@ -26,7 +26,7 @@ import java.util.List;
import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.schema.SchemaMismatchException;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.RecordView;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
index c2be105b3c..33c389f57f 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
@@ -25,10 +25,10 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import org.apache.ignite.Ignite;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
import org.apache.ignite.lang.TableAlreadyExistsException;
import org.apache.ignite.lang.TableNotFoundException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.Table;
import org.junit.jupiter.api.AfterEach;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
index b8ee87b1a6..b1a0c43569 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTablesApiTest.java
@@ -41,6 +41,7 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.table.IgniteTablesInternal;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.test.WatchListenerInhibitor;
@@ -51,7 +52,6 @@ import org.apache.ignite.lang.IndexAlreadyExistsException;
import org.apache.ignite.lang.NodeStoppingException;
import org.apache.ignite.lang.TableAlreadyExistsException;
import org.apache.ignite.lang.TableNotFoundException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.index.IndexDefinition;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
index 6ad971ef94..404855f3e7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
@@ -31,8 +31,8 @@ import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.JobExecutionContext;
import org.apache.ignite.internal.app.IgniteImpl;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
index 2e6d9b6861..d1084d9345 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItAbstractThinClientTest.java
@@ -33,12 +33,12 @@ import org.apache.ignite.IgnitionManager;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.internal.app.IgniteImpl;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.AfterAll;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcMetadataSelfTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcMetadataSelfTest.java
index dbf94f3c6a..a032f10074 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcMetadataSelfTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcMetadataSelfTest.java
@@ -45,7 +45,7 @@ import java.util.Set;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.client.proto.ProtocolVersion;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcResultSetSelfTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcResultSetSelfTest.java
index cd956683d9..847a0dc984 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcResultSetSelfTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/jdbc/ItJdbcResultSetSelfTest.java
@@ -44,8 +44,8 @@ import java.util.GregorianCalendar;
import java.util.List;
import org.apache.ignite.Ignite;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
index 63657360ba..a5adfbcb62 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
@@ -43,6 +43,8 @@ import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.internal.sql.engine.property.PropertiesHolder;
import org.apache.ignite.internal.sql.engine.session.SessionId;
import org.apache.ignite.internal.sql.engine.util.QueryChecker;
@@ -51,10 +53,8 @@ import
org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteStringFormatter;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.apache.ignite.sql.ColumnMetadata;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
index 95efbd8c58..0a25ecd65f 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
@@ -30,9 +30,9 @@ import java.time.LocalTime;
import java.time.temporal.Temporal;
import org.apache.calcite.sql.validate.SqlValidatorException;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.lang.IgniteException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
index 153e6590d7..4918964b4d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
@@ -25,7 +25,7 @@ import java.util.List;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
index bd21036cb0..0f72607994 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
@@ -19,8 +19,8 @@ package org.apache.ignite.internal.sql.engine;
import java.util.Arrays;
import java.util.stream.Collectors;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.sql.engine.util.QueryChecker;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
index 1ad9c0e0cc..ea28086aca 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
@@ -24,8 +24,8 @@ import static
org.apache.ignite.sql.ColumnMetadata.UNDEFINED_SCALE;
import java.time.Duration;
import java.time.Period;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.sql.engine.util.MetadataMatcher;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.sql.SqlColumnType;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
index 55374be9a7..4f2923f371 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
@@ -26,7 +26,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Arrays;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
index fa55b2264e..18adaffa44 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
@@ -24,7 +24,7 @@ import static org.hamcrest.CoreMatchers.not;
import java.util.List;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
index 245e337bc6..1f20c825f6 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
@@ -24,8 +24,8 @@ import static
org.apache.ignite.internal.sql.engine.util.QueryChecker.containsPr
import static org.junit.jupiter.api.Assertions.assertThrows;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.lang.IgniteException;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
index ac3ecd7c7f..033a23bdf3 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
@@ -28,7 +28,7 @@ import static org.hamcrest.Matchers.not;
import java.util.List;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
index 04a159b979..3d1dcf1ca7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.function.Predicate;
import java.util.stream.StreamSupport;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
index 0e940191cc..d047780b3d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSortAggregateTest.java
@@ -20,7 +20,7 @@ package org.apache.ignite.internal.sql.engine;
import static org.junit.jupiter.api.Assertions.assertEquals;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
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 05552b00d2..f1d5f7ee13 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
@@ -143,4 +143,13 @@ public class SchemaUtils {
return true;
}
+
+ /**
+ * Creates canonical table name.
+ *
+ * @return Table with schema canonical name.
+ */
+ public static String canonicalName(String schema, String name) {
+ return schema + '.' + name;
+ }
}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/TableValidatorImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/TableValidatorImpl.java
index 6d4cc9fa6a..a9da01df30 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/TableValidatorImpl.java
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/TableValidatorImpl.java
@@ -23,8 +23,8 @@ import
org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.validation.ValidationContext;
import org.apache.ignite.configuration.validation.ValidationIssue;
import org.apache.ignite.configuration.validation.Validator;
+import org.apache.ignite.internal.schema.definition.SchemaValidationUtils;
import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
-import
org.apache.ignite.internal.schema.definition.builder.TableDefinitionBuilderImpl;
/**
* Table schema configuration validator implementation.
@@ -47,7 +47,7 @@ public class TableValidatorImpl implements
Validator<TableValidator, NamedListVi
assert !tbl.keyColumns().isEmpty();
assert !tbl.colocationColumns().isEmpty();
- TableDefinitionBuilderImpl.validateIndices(tbl.indices(),
tbl.columns(), tbl.colocationColumns());
+ SchemaValidationUtils.validateIndices(tbl.indices(),
tbl.columns(), tbl.colocationColumns());
} catch (IllegalArgumentException e) {
ctx.addIssue(new ValidationIssue(
ctx.currentKey(),
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/SchemaValidationUtils.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/SchemaValidationUtils.java
new file mode 100644
index 0000000000..4dd20017c6
--- /dev/null
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/SchemaValidationUtils.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.schema.definition;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.ignite.schema.definition.ColumnDefinition;
+import org.apache.ignite.schema.definition.index.ColumnarIndexDefinition;
+import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
+import org.apache.ignite.schema.definition.index.IndexDefinition;
+
+/**
+ * Schema validation methods.
+ */
+public class SchemaValidationUtils {
+ /**
+ * Validate primary key.
+ *
+ * @param pkColNames Primary key columns.
+ * @param cols Table columns.
+ */
+ public static void validatePrimaryKey(Set<String> pkColNames, final
Map<String, ColumnDefinition> cols) {
+ pkColNames.stream()
+ .filter(pkCol -> cols.get(pkCol).nullable())
+ .findAny()
+ .ifPresent((pkCol) -> {
+ throw new IllegalStateException("Primary key cannot
contain nullable column [col=" + pkCol + "].");
+ });
+ }
+
+ /**
+ * Validate indices.
+ *
+ * @param indices Table indices.
+ * @param cols Table columns.
+ * @param colocationColNames Colocation columns names.
+ */
+ public static void validateIndices(
+ Collection<IndexDefinition> indices,
+ Collection<ColumnDefinition> cols,
+ List<String> colocationColNames) {
+ Set<String> colNames =
cols.stream().map(ColumnDefinition::name).collect(Collectors.toSet());
+
+ for (IndexDefinition idx : indices) {
+ assert idx instanceof ColumnarIndexDefinition : "Only columnar
indices are supported.";
+ // Note: E.g. functional index is not columnar index as it index
an expression result only.
+
+ ColumnarIndexDefinition idx0 = (ColumnarIndexDefinition) idx;
+
+ if
(!idx0.columns().stream().map(IndexColumnDefinition::name).allMatch(colNames::contains))
{
+ throw new IllegalStateException("Index column must exist in
the schema.");
+ }
+
+ if (idx0.unique() &&
!(idx0.columns().stream().map(IndexColumnDefinition::name).allMatch(colocationColNames::contains)))
{
+ throw new IllegalStateException("Unique index must contains
all colocation columns.");
+ }
+ }
+ }
+}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
index 3e8ac14368..cb88ca7819 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
@@ -24,14 +24,12 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import
org.apache.ignite.internal.schema.modification.TableModificationBuilderImpl;
+import org.apache.ignite.internal.schema.SchemaUtils;
import org.apache.ignite.internal.tostring.S;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.schema.definition.index.IndexDefinition;
-import org.apache.ignite.schema.modification.TableModificationBuilder;
-import org.jetbrains.annotations.NotNull;
/**
* Table.
@@ -106,16 +104,7 @@ public class TableDefinitionImpl extends
AbstractSchemaObject implements TableDe
/** {@inheritDoc} */
@Override
public String canonicalName() {
- return canonicalName(schemaName, name());
- }
-
- /**
- * Creates canonical table name.
- *
- * @return Table with schema canonical name.
- */
- public static String canonicalName(@NotNull String schema, @NotNull String
name) {
- return schema + '.' + name;
+ return SchemaUtils.canonicalName(schemaName, name());
}
/** {@inheritDoc} */
@@ -124,12 +113,6 @@ public class TableDefinitionImpl extends
AbstractSchemaObject implements TableDe
return Collections.unmodifiableCollection(indices.values());
}
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder toBuilder() {
- return new TableModificationBuilderImpl(this);
- }
-
/**
* Check if specified column already exists.
*
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/AlterColumnBuilderImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/AlterColumnBuilderImpl.java
deleted file mode 100644
index 0b1a12d25d..0000000000
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/AlterColumnBuilderImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.modification;
-
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.modification.AlterColumnBuilder;
-import org.apache.ignite.schema.modification.TableModificationBuilder;
-
-/**
- * Alter column builder.
- */
-class AlterColumnBuilderImpl implements AlterColumnBuilder {
- /** Table modification builder. */
- private final TableModificationBuilderImpl tableBuilder;
-
- /**
- * Constructor.
- *
- * @param tableBuilder Table modification builder.
- */
- AlterColumnBuilderImpl(TableModificationBuilderImpl tableBuilder) {
- this.tableBuilder = tableBuilder;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder withNewName(String newName) {
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder convertTo(ColumnType newType) {
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder withNewDefault(Object defaultValue) {
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder asNullable() {
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder asNonNullable(Object replacement) {
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder done() {
- return tableBuilder;
- }
-}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/TableModificationBuilderImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/TableModificationBuilderImpl.java
deleted file mode 100644
index 563399fc02..0000000000
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/modification/TableModificationBuilderImpl.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.schema.modification;
-
-import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
-import org.apache.ignite.schema.definition.index.IndexDefinition;
-import org.apache.ignite.schema.modification.AlterColumnBuilder;
-import org.apache.ignite.schema.modification.TableModificationBuilder;
-
-/**
- * Table modification builder.
- */
-public class TableModificationBuilderImpl implements TableModificationBuilder {
- /** Table. */
- private final TableDefinitionImpl table;
-
- /**
- * Constructor.
- *
- * @param table Table.
- */
- public TableModificationBuilderImpl(TableDefinitionImpl table) {
- this.table = table;
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder addColumn(ColumnDefinition column) {
- if (table.hasColumn(column.name())) {
- throw new IllegalArgumentException("Duplicate column: name='" +
column.name() + '\'');
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder addKeyColumn(ColumnDefinition column) {
- if (table.hasColumn(column.name())) {
- throw new IllegalArgumentException("Duplicate column: name=" +
column.name() + '\'');
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public AlterColumnBuilder alterColumn(String columnName) {
- return new AlterColumnBuilderImpl(this);
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder dropColumn(String columnName) {
- if (table.hasKeyColumn(columnName)) {
- throw new IllegalArgumentException("Can't drop key column: name="
+ columnName);
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder addIndex(IndexDefinition indexDefinition) {
- assert
!PrimaryKeyDefinition.PRIMARY_KEY_NAME.equals(indexDefinition.name());
-
- if (table.indices().stream().anyMatch(i ->
i.name().equals(indexDefinition.name()))) {
- throw new IllegalArgumentException("Index already exists: name=" +
indexDefinition.name() + '\'');
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public TableModificationBuilder dropIndex(String indexName) {
- if (PrimaryKeyDefinition.PRIMARY_KEY_NAME.equals(indexName)) {
- throw new IllegalArgumentException("Can't drop primary key index:
name=" + indexName);
- }
-
- return this;
- }
-
- /** {@inheritDoc} */
- @Override
- public void apply() {
-
- }
-}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/schema/package-info.java
b/modules/schema/src/main/java/org/apache/ignite/schema/package-info.java
deleted file mode 100644
index a039260186..0000000000
--- a/modules/schema/src/main/java/org/apache/ignite/schema/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Contains public schema definition helpers.
- */
-
-package org.apache.ignite.schema;
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaConfigurationTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaConfigurationTest.java
index 2337f53ec3..604ca9cf65 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaConfigurationTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/SchemaConfigurationTest.java
@@ -22,11 +22,10 @@ import static org.hamcrest.Matchers.containsString;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Map;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.SchemaObject;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.junit.jupiter.api.Test;
/**
@@ -79,52 +78,6 @@ public class SchemaConfigurationTest {
.build();
}
- /**
- * TestSchemaModification.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
- */
- @Test
- public void testSchemaModification() {
- final TableDefinition table = SchemaBuilders.tableBuilder("PUBLIC",
"table1")
- .columns(
- // Declaring columns in user order.
- SchemaBuilders.column("id", ColumnType.INT64).build(),
- SchemaBuilders.column("name",
ColumnType.string()).build()
- )
- .withPrimaryKey("id")
- .build();
-
- table.toBuilder()
- .addColumn(
- SchemaBuilders.column("firstName", ColumnType.string())
- .build()
- )
- .addKeyColumn(
- // It looks safe to add non-affinity column to key.
- SchemaBuilders.column("subId", ColumnType.string())
- .build()
- )
-
- .alterColumn("firstName")
- .withNewName("lastName")
- .withNewDefault("ivanov")
- .asNullable()
- .convertTo(ColumnType.stringOf(100))
- .done()
-
- .dropColumn("name") // Key column can't be dropped.
-
- .addIndex(
- SchemaBuilders.sortedIndex("sortedIdx")
- .addIndexColumn("subId").done()
- .withHints(Map.of("INLINE_SIZE", "73"))
- .build()
- )
-
- .dropIndex("hash_idx")
- .apply();
- }
-
/**
* Check invalid colocation columns configuration:
* - not PK columns;
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/ColumnDefinitionBuilderTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/ColumnDefinitionBuilderTest.java
index 1c76ca7701..70d8587ff9 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/ColumnDefinitionBuilderTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/ColumnDefinitionBuilderTest.java
@@ -21,12 +21,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import java.time.LocalDate;
-import org.apache.ignite.schema.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.ColumnDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import
org.apache.ignite.schema.definition.DefaultValueDefinition.ConstantValue;
import
org.apache.ignite.schema.definition.DefaultValueDefinition.DefaultValueType;
-import org.apache.ignite.schema.definition.builder.ColumnDefinitionBuilder;
import org.junit.jupiter.api.Test;
/**
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/HashIndexDefinitionBuilderTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/HashIndexDefinitionBuilderTest.java
index af1575ae3b..8983556865 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/HashIndexDefinitionBuilderTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/HashIndexDefinitionBuilderTest.java
@@ -21,8 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Collections;
-import org.apache.ignite.schema.SchemaBuilders;
-import org.apache.ignite.schema.definition.builder.HashIndexDefinitionBuilder;
+import
org.apache.ignite.internal.schema.testutils.builder.HashIndexDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.index.HashIndexDefinition;
import org.junit.jupiter.api.Test;
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/PrimaryKeyDefinitionDefinitionBuilderTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/PrimaryKeyDefinitionDefinitionBuilderTest.java
index d47eb66d5b..795b45adb2 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/PrimaryKeyDefinitionDefinitionBuilderTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/PrimaryKeyDefinitionDefinitionBuilderTest.java
@@ -23,9 +23,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
-import org.apache.ignite.schema.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.PrimaryKeyDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
-import org.apache.ignite.schema.definition.builder.PrimaryKeyDefinitionBuilder;
import org.junit.jupiter.api.Test;
/**
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/SortedIndexDefinitionBuilderTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/SortedIndexDefinitionBuilderTest.java
index c98059e15d..b07b3c3d86 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/SortedIndexDefinitionBuilderTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/SortedIndexDefinitionBuilderTest.java
@@ -20,8 +20,8 @@ package org.apache.ignite.internal.schema.builder;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import org.apache.ignite.schema.SchemaBuilders;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.SortedIndexDefinitionBuilder;
import org.apache.ignite.schema.definition.index.SortOrder;
import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
import org.junit.jupiter.api.Test;
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/TableDefinitionBuilderTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/TableDefinitionBuilderTest.java
index 2bf212ad12..38fde35dd6 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/TableDefinitionBuilderTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/builder/TableDefinitionBuilderTest.java
@@ -19,10 +19,10 @@ package org.apache.ignite.internal.schema.builder;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import org.apache.ignite.schema.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.junit.jupiter.api.Test;
/**
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverterTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverterTest.java
index e25e0eb531..8b9e5b919a 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverterTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverterTest.java
@@ -48,16 +48,16 @@ import
org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfiguratio
import org.apache.ignite.internal.configuration.ConfigurationRegistry;
import
org.apache.ignite.internal.configuration.storage.TestConfigurationStorage;
import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
-import org.apache.ignite.schema.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.HashIndexDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.SortedIndexDefinitionBuilder;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.DefaultValueDefinition;
import
org.apache.ignite.schema.definition.DefaultValueDefinition.ConstantValue;
import org.apache.ignite.schema.definition.DefaultValueDefinition.FunctionCall;
import org.apache.ignite.schema.definition.DefaultValueGenerators;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.HashIndexDefinitionBuilder;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.apache.ignite.schema.definition.index.HashIndexDefinition;
import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
import org.apache.ignite.schema.definition.index.IndexDefinition;
diff --git
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverterTest.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverterTest.java
index e96d1d5eb5..22ada06e48 100644
---
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverterTest.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverterTest.java
@@ -34,14 +34,14 @@ import
org.apache.ignite.internal.schema.DefaultValueProvider.Type;
import org.apache.ignite.internal.schema.NativeTypeSpec;
import org.apache.ignite.internal.schema.SchemaDescriptor;
import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
-import org.apache.ignite.schema.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.ColumnDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.DefaultValueDefinition;
import org.apache.ignite.schema.definition.DefaultValueGenerators;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.ColumnDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/AbstractIndexBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/AbstractIndexBuilder.java
similarity index 94%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/AbstractIndexBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/AbstractIndexBuilder.java
index b73390d3be..1bb7a0bd1a 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/AbstractIndexBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/AbstractIndexBuilder.java
@@ -15,12 +15,11 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Collections;
import java.util.Map;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.definition.builder.SchemaObjectBuilder;
/**
* Index base class.
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
similarity index 96%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
index 9f06c28479..d07f2b61c3 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/ColumnDefinitionBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
import org.apache.ignite.schema.definition.ColumnDefinition;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/ColumnDefinitionBuilderImpl.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
similarity index 92%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/ColumnDefinitionBuilderImpl.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
index f5af66e271..b620eb05c9 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/ColumnDefinitionBuilderImpl.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
@@ -23,13 +23,12 @@ import org.apache.ignite.internal.util.IgniteObjectName;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.DefaultValueDefinition;
-import org.apache.ignite.schema.definition.builder.ColumnDefinitionBuilder;
import org.jetbrains.annotations.Nullable;
/**
* Column builder.
*/
-public class ColumnDefinitionBuilderImpl implements ColumnDefinitionBuilder {
+class ColumnDefinitionBuilderImpl implements ColumnDefinitionBuilder {
/** Column name. */
private final String colName;
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
similarity index 96%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
index ae84169c51..244d632b4a 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/HashIndexDefinitionBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
import java.util.Map;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/HashIndexDefinitionBuilderImpl.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
similarity index 89%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/HashIndexDefinitionBuilderImpl.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
index 13225428c1..aab1a58d9e 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/HashIndexDefinitionBuilderImpl.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Arrays;
import java.util.List;
@@ -23,13 +23,12 @@ import java.util.Map;
import java.util.stream.Collectors;
import
org.apache.ignite.internal.schema.definition.index.HashIndexDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.definition.builder.HashIndexDefinitionBuilder;
import org.apache.ignite.schema.definition.index.HashIndexDefinition;
/**
* Hash index builder.
*/
-public class HashIndexDefinitionBuilderImpl extends AbstractIndexBuilder
implements HashIndexDefinitionBuilder {
+class HashIndexDefinitionBuilderImpl extends AbstractIndexBuilder implements
HashIndexDefinitionBuilder {
/** Index columns. */
private List<String> columns;
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
similarity index 97%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
index ff4ab00613..d7a59ecf2d 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/PrimaryKeyDefinitionBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/PrimaryKeyDefinitionBuilderImpl.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
similarity index 91%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/PrimaryKeyDefinitionBuilderImpl.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
index 760cefe08b..f4e81a8103 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/PrimaryKeyDefinitionBuilderImpl.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Arrays;
import java.util.List;
@@ -27,13 +27,11 @@ import
org.apache.ignite.internal.tostring.IgniteToStringInclude;
import org.apache.ignite.internal.util.CollectionUtils;
import org.apache.ignite.internal.util.IgniteObjectName;
import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
-import org.apache.ignite.schema.definition.builder.PrimaryKeyDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.SchemaObjectBuilder;
/**
* Primary key builder.
*/
-public class PrimaryKeyDefinitionBuilderImpl implements SchemaObjectBuilder,
PrimaryKeyDefinitionBuilder {
+class PrimaryKeyDefinitionBuilderImpl implements SchemaObjectBuilder,
PrimaryKeyDefinitionBuilder {
/** Index columns. */
@IgniteToStringInclude
private List<String> columns;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/schema/SchemaBuilders.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
similarity index 76%
rename from
modules/schema/src/main/java/org/apache/ignite/schema/SchemaBuilders.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
index 570460e191..01b861d73b 100644
--- a/modules/schema/src/main/java/org/apache/ignite/schema/SchemaBuilders.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
@@ -15,20 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.schema;
+package org.apache.ignite.internal.schema.testutils.builder;
-import
org.apache.ignite.internal.schema.definition.builder.ColumnDefinitionBuilderImpl;
-import
org.apache.ignite.internal.schema.definition.builder.HashIndexDefinitionBuilderImpl;
-import
org.apache.ignite.internal.schema.definition.builder.PrimaryKeyDefinitionBuilderImpl;
-import
org.apache.ignite.internal.schema.definition.builder.SortedIndexDefinitionBuilderImpl;
-import
org.apache.ignite.internal.schema.definition.builder.TableDefinitionBuilderImpl;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.ColumnDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.HashIndexDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.PrimaryKeyDefinitionBuilder;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
/**
* Schema builder helper.
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SchemaObjectBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaObjectBuilder.java
similarity index 95%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SchemaObjectBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaObjectBuilder.java
index cc923b9af7..31e923d641 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SchemaObjectBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SchemaObjectBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
similarity index 97%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
index ed425a5a1b..655f1851c7 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/SortedIndexDefinitionBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/SortedIndexDefinitionBuilderImpl.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
similarity index 88%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/SortedIndexDefinitionBuilderImpl.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
index 8389e0a43e..cab88ae7db 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/SortedIndexDefinitionBuilderImpl.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.LinkedHashMap;
import java.util.List;
@@ -24,7 +24,6 @@ import java.util.stream.Collectors;
import
org.apache.ignite.internal.schema.definition.index.SortedIndexColumnDefinitionImpl;
import
org.apache.ignite.internal.schema.definition.index.SortedIndexDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
import org.apache.ignite.schema.definition.index.SortOrder;
import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
@@ -32,8 +31,8 @@ import
org.apache.ignite.schema.definition.index.SortedIndexDefinition;
/**
* Sorted index builder.
*/
-public class SortedIndexDefinitionBuilderImpl extends AbstractIndexBuilder
implements SortedIndexDefinitionBuilder {
- /** Index columns. */
+class SortedIndexDefinitionBuilderImpl extends AbstractIndexBuilder implements
SortedIndexDefinitionBuilder {
+ /** Index columns ordered map. */
protected final Map<String, SortedIndexColumnBuilderImpl> cols = new
LinkedHashMap<>();
/**
@@ -61,7 +60,6 @@ public class SortedIndexDefinitionBuilderImpl extends
AbstractIndexBuilder imple
/**
* Add index column.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
*
* @param idxBuilder Index builder.
*/
@@ -83,7 +81,7 @@ public class SortedIndexDefinitionBuilderImpl extends
AbstractIndexBuilder imple
* Get index columns.
*/
public List<SortedIndexColumnDefinition> columns() {
- return cols.values().stream().map(c -> new
SortedIndexColumnDefinitionImpl(c.name, c.asc)).collect(Collectors.toList());
+ return cols.values().stream().map(c -> new
SortedIndexColumnDefinitionImpl(c.name, c.order)).collect(Collectors.toList());
}
/** {@inheritDoc} */
@@ -105,7 +103,7 @@ public class SortedIndexDefinitionBuilderImpl extends
AbstractIndexBuilder imple
protected String name;
/** Index order flag. */
- protected SortOrder asc = SortOrder.ASC;
+ private SortOrder order = SortOrder.ASC;
/**
* Constructor.
@@ -119,7 +117,7 @@ public class SortedIndexDefinitionBuilderImpl extends
AbstractIndexBuilder imple
/** {@inheritDoc} */
@Override
public SortedIndexColumnBuilderImpl desc() {
- asc = SortOrder.DESC;
+ order = SortOrder.DESC;
return this;
}
@@ -127,7 +125,7 @@ public class SortedIndexDefinitionBuilderImpl extends
AbstractIndexBuilder imple
/** {@inheritDoc} */
@Override
public SortedIndexColumnBuilderImpl asc() {
- asc = SortOrder.ASC;
+ order = SortOrder.ASC;
return this;
}
diff --git
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/TableDefinitionBuilder.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
similarity index 97%
rename from
modules/api/src/main/java/org/apache/ignite/schema/definition/builder/TableDefinitionBuilder.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
index 7d72554e2b..a408cf3973 100644
---
a/modules/api/src/main/java/org/apache/ignite/schema/definition/builder/TableDefinitionBuilder.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
import java.util.Map;
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/TableDefinitionBuilderImpl.java
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
similarity index 62%
rename from
modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/TableDefinitionBuilderImpl.java
rename to
modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
index 44575c6bfc..8a20dc66cf 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/builder/TableDefinitionBuilderImpl.java
+++
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
@@ -15,32 +15,26 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.builder;
+package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
+import org.apache.ignite.internal.schema.definition.SchemaValidationUtils;
import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.builder.TableDefinitionBuilder;
-import org.apache.ignite.schema.definition.index.ColumnarIndexDefinition;
-import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
import org.apache.ignite.schema.definition.index.IndexDefinition;
/**
* Table builder.
*/
-public class TableDefinitionBuilderImpl implements TableDefinitionBuilder {
+class TableDefinitionBuilderImpl implements TableDefinitionBuilder {
/** Schema name. */
private final String schemaName;
@@ -60,7 +54,7 @@ public class TableDefinitionBuilderImpl implements
TableDefinitionBuilder {
* Constructor.
*
* @param schemaName Schema name.
- * @param tableName Table name.
+ * @param tableName Table name.
*/
public TableDefinitionBuilderImpl(String schemaName, String tableName) {
this.schemaName = IgniteObjectName.parse(schemaName);
@@ -126,8 +120,8 @@ public class TableDefinitionBuilderImpl implements
TableDefinitionBuilder {
assert primaryKeyDefinition != null : "Primary key index must be
configured.";
assert columns.size() > primaryKeyDefinition.columns().size() : "Key
or/and value columns must be defined.";
- validatePrimaryKey(primaryKeyDefinition.columns(), columns);
- validateIndices(indices.values(), columns.values(),
primaryKeyDefinition.colocationColumns());
+
SchemaValidationUtils.validatePrimaryKey(primaryKeyDefinition.columns(),
columns);
+ SchemaValidationUtils.validateIndices(indices.values(),
columns.values(), primaryKeyDefinition.colocationColumns());
return new TableDefinitionImpl(
schemaName,
@@ -137,48 +131,4 @@ public class TableDefinitionBuilderImpl implements
TableDefinitionBuilder {
Collections.unmodifiableMap(indices)
);
}
-
- /**
- * Validate primary key.
- *
- * @param pkColNames Primary key columns.
- * @param cols Table columns.
- */
- private static void validatePrimaryKey(Set<String> pkColNames, final
Map<String, ColumnDefinition> cols) {
- pkColNames.stream()
- .filter(pkCol -> cols.get(pkCol).nullable())
- .findAny()
- .ifPresent((pkCol) -> {
- throw new IllegalStateException("Primary key cannot
contain nullable column [col=" + pkCol + "].");
- });
- }
-
- /**
- * Validate indices.
- *
- * @param indices Table indices.
- * @param cols Table columns.
- * @param colocationColNames Colocation columns names.
- */
- public static void validateIndices(
- Collection<IndexDefinition> indices,
- Collection<ColumnDefinition> cols,
- List<String> colocationColNames) {
- Set<String> colNames =
cols.stream().map(ColumnDefinition::name).collect(Collectors.toSet());
-
- for (IndexDefinition idx : indices) {
- assert idx instanceof ColumnarIndexDefinition : "Only columnar
indices are supported.";
- // Note: E.g. functional index is not columnar index as it index
an expression result only.
-
- ColumnarIndexDefinition idx0 = (ColumnarIndexDefinition) idx;
-
- if
(!idx0.columns().stream().map(IndexColumnDefinition::name).allMatch(colNames::contains))
{
- throw new IllegalStateException("Index column must exist in
the schema.");
- }
-
- if (idx0.unique() &&
!(idx0.columns().stream().map(IndexColumnDefinition::name).allMatch(colocationColNames::contains)))
{
- throw new IllegalStateException("Unique index must contains
all colocation columns.");
- }
- }
- }
}
diff --git
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
index 1f8cbd52bd..6ad4badcfd 100644
---
a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
+++
b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/exec/ddl/DdlCommandHandler.java
@@ -36,9 +36,11 @@ import
org.apache.ignite.configuration.schemas.table.ConstantValueDefaultChange;
import org.apache.ignite.configuration.schemas.table.FunctionCallDefaultChange;
import org.apache.ignite.configuration.schemas.table.NullValueDefaultChange;
import org.apache.ignite.configuration.schemas.table.PrimaryKeyView;
+import org.apache.ignite.configuration.schemas.table.SortedIndexChange;
import org.apache.ignite.configuration.schemas.table.TableChange;
+import org.apache.ignite.configuration.schemas.table.TableIndexChange;
import org.apache.ignite.internal.index.IndexManager;
-import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
+import org.apache.ignite.internal.schema.SchemaUtils;
import
org.apache.ignite.internal.sql.engine.prepare.ddl.AbstractTableDdlCommand;
import org.apache.ignite.internal.sql.engine.prepare.ddl.AlterTableAddCommand;
import org.apache.ignite.internal.sql.engine.prepare.ddl.AlterTableDropCommand;
@@ -63,9 +65,6 @@ import org.apache.ignite.lang.IgniteInternalCheckedException;
import org.apache.ignite.lang.IgniteStringFormatter;
import org.apache.ignite.lang.TableAlreadyExistsException;
import org.apache.ignite.lang.TableNotFoundException;
-import org.apache.ignite.schema.SchemaBuilders;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder.SortedIndexColumnBuilder;
/** DDL commands handler. */
public class DdlCommandHandler {
@@ -153,7 +152,7 @@ public class DdlCommandHandler {
}
};
- String fullName = TableDefinitionImpl.canonicalName(
+ String fullName = SchemaUtils.canonicalName(
IgniteObjectName.quote(cmd.schemaName()),
IgniteObjectName.quote(cmd.tableName())
);
@@ -173,7 +172,7 @@ public class DdlCommandHandler {
/** Handles drop table command. */
private boolean handleDropTable(DropTableCommand cmd) {
- String fullName = TableDefinitionImpl.canonicalName(
+ String fullName = SchemaUtils.canonicalName(
IgniteObjectName.quote(cmd.schemaName()),
IgniteObjectName.quote(cmd.tableName())
);
@@ -196,7 +195,7 @@ public class DdlCommandHandler {
return false;
}
- String fullName = TableDefinitionImpl.canonicalName(
+ String fullName = SchemaUtils.canonicalName(
IgniteObjectName.quote(cmd.schemaName()),
IgniteObjectName.quote(cmd.tableName())
);
@@ -218,7 +217,7 @@ public class DdlCommandHandler {
return false;
}
- String fullName = TableDefinitionImpl.canonicalName(
+ String fullName = SchemaUtils.canonicalName(
IgniteObjectName.quote(cmd.schemaName()),
IgniteObjectName.quote(cmd.tableName())
);
@@ -236,26 +235,17 @@ public class DdlCommandHandler {
/** Handles create index command. */
private boolean handleCreateIndex(CreateIndexCommand cmd) {
- // Only sorted idx for now.
- //TODO: https://issues.apache.org/jira/browse/IGNITE-17563 Pass null
ordering for columns.
- SortedIndexDefinitionBuilder idx =
SchemaBuilders.sortedIndex(cmd.indexName());
-
- for (Pair<String, Boolean> idxInfo : cmd.columns()) {
- SortedIndexColumnBuilder idx0 =
idx.addIndexColumn(idxInfo.getFirst());
-
- if (idxInfo.getSecond()) {
- idx0.desc();
- }
-
- idx0.done();
- }
+ Consumer<TableIndexChange> indexChanger = tableIndexChange -> {
+ // Only sorted idx for now.
+ createSortedIndexInternal(cmd,
tableIndexChange.convert(SortedIndexChange.class));
+ };
return indexManager.createIndex(
cmd.schemaName(),
cmd.indexName(),
cmd.tableName(),
!cmd.ifIndexNotExists(),
- tableIndexChange -> convert(idx.build(), tableIndexChange));
+ indexChanger);
}
/** Handles drop index command. */
@@ -263,6 +253,21 @@ public class DdlCommandHandler {
return indexManager.dropIndex(cmd.schemaName(), cmd.indexName(),
!cmd.ifNotExists());
}
+ /**
+ * Creates sorted index.
+ *
+ * @param cmd Create index command.
+ * @param indexChange Index configuration changer.
+ */
+ private void createSortedIndexInternal(CreateIndexCommand cmd,
SortedIndexChange indexChange) {
+ indexChange.changeColumns(colsInit -> {
+ for (Pair<String, Boolean> col : cmd.columns()) {
+ //TODO: https://issues.apache.org/jira/browse/IGNITE-17563
Pass null ordering for columns.
+ colsInit.create(col.getFirst(), colInit ->
colInit.changeAsc(col.getSecond()));
+ }
+ });
+ }
+
/**
* Adds a column according to the column definition.
*
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index 64ac10fbb1..5efaee4e95 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -40,11 +40,11 @@ import org.apache.ignite.internal.schema.BinaryTupleSchema;
import org.apache.ignite.internal.schema.BinaryTupleSchema.Element;
import org.apache.ignite.internal.schema.NativeTypes;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.engine.MvTableStorage;
import org.apache.ignite.internal.storage.index.HashIndexStorage;
import org.apache.ignite.internal.storage.index.IndexRowImpl;
import org.apache.ignite.internal.util.Cursor;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.AfterEach;
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
index 0e363f0a68..6e33696ee5 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.storage.index;
import static java.util.stream.Collectors.toList;
import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.column;
+import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.tableBuilder;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
-import static org.apache.ignite.schema.SchemaBuilders.column;
-import static org.apache.ignite.schema.SchemaBuilders.tableBuilder;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
@@ -33,12 +33,12 @@ import java.util.Collection;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.configuration.schemas.table.TableConfiguration;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.MvPartitionStorage;
import org.apache.ignite.internal.storage.RowId;
import org.apache.ignite.internal.storage.engine.MvTableStorage;
import org.apache.ignite.internal.storage.index.impl.BinaryTupleRowSerializer;
import org.apache.ignite.internal.util.Cursor;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
diff --git
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
index dfd0353e26..3be08e016d 100644
---
a/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
+++
b/modules/storage-api/src/test/java/org/apache/ignite/internal/storage/index/AbstractSortedIndexStorageTest.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.storage.index;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toUnmodifiableList;
import static
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.column;
+import static
org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders.tableBuilder;
import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.BACKWARDS;
import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.FORWARD;
import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.GREATER;
@@ -29,8 +31,6 @@ import static
org.apache.ignite.internal.storage.index.SortedIndexStorage.LESS_O
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.randomString;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willBe;
import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
-import static org.apache.ignite.schema.SchemaBuilders.column;
-import static org.apache.ignite.schema.SchemaBuilders.tableBuilder;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
@@ -65,6 +65,9 @@ import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.schema.BinaryTuple;
import org.apache.ignite.internal.schema.SchemaTestUtils;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import
org.apache.ignite.internal.schema.testutils.builder.SortedIndexDefinitionBuilder;
+import
org.apache.ignite.internal.schema.testutils.builder.SortedIndexDefinitionBuilder.SortedIndexColumnBuilder;
import org.apache.ignite.internal.storage.RowId;
import
org.apache.ignite.internal.storage.chm.TestConcurrentHashMapStorageEngine;
import
org.apache.ignite.internal.storage.chm.schema.TestConcurrentHashMapDataStorageConfigurationSchema;
@@ -73,12 +76,9 @@ import
org.apache.ignite.internal.storage.index.impl.BinaryTupleRowSerializer;
import org.apache.ignite.internal.storage.index.impl.TestIndexRow;
import org.apache.ignite.internal.testframework.VariableSource;
import org.apache.ignite.internal.util.Cursor;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnDefinition;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder;
-import
org.apache.ignite.schema.definition.builder.SortedIndexDefinitionBuilder.SortedIndexColumnBuilder;
import org.apache.ignite.schema.definition.index.ColumnarIndexDefinition;
import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
import org.intellij.lang.annotations.MagicConstant;
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 1f111133a8..9e946186fa 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
@@ -96,6 +96,7 @@ import org.apache.ignite.internal.schema.SchemaManager;
import org.apache.ignite.internal.schema.SchemaUtils;
import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
import
org.apache.ignite.internal.schema.marshaller.schema.SchemaSerializerImpl;
+import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModules;
import org.apache.ignite.internal.storage.rocksdb.RocksDbDataStorageModule;
@@ -124,7 +125,6 @@ import org.apache.ignite.raft.jraft.entity.PeerId;
import org.apache.ignite.raft.jraft.error.RaftError;
import org.apache.ignite.raft.jraft.rpc.CliRequests;
import org.apache.ignite.raft.jraft.rpc.impl.RaftGroupServiceImpl;
-import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;