You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ko...@apache.org on 2022/09/23 07:57:54 UTC
[ignite-3] branch main updated: IGNITE-17630 Remove org.apache.ignite.schema.definition package from public API (#1109)
This is an automated email from the ASF dual-hosted git repository.
korlov 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 70347a499d IGNITE-17630 Remove org.apache.ignite.schema.definition package from public API (#1109)
70347a499d is described below
commit 70347a499d499709d5f5f28793688569d504ba89
Author: korlov42 <ko...@gridgain.com>
AuthorDate: Fri Sep 23 10:57:49 2022 +0300
IGNITE-17630 Remove org.apache.ignite.schema.definition package from public API (#1109)
---
.../ignite/schema/definition/package-info.java | 22 --
.../apache/ignite/table/mapper/TypeConverter.java | 4 +-
.../ignite/internal/cli/IntegrationTestBase.java | 6 +-
.../ignite/internal/jdbc/JdbcConnection.java | 7 +-
.../apache/ignite/internal/util/IgniteUtils.java | 34 ++
.../ignite/internal/index/IndexManagerTest.java | 10 +-
.../ignite/internal/ItNoSyncMetadataTest.java | 2 +-
.../storage/ItRebalanceDistributedTest.java | 6 +-
.../inmemory/ItRaftStorageVolatilityTest.java | 6 +-
.../runner/app/AbstractSchemaChangeTest.java | 8 +-
.../internal/runner/app/ItDataSchemaSyncTest.java | 8 +-
.../runner/app/ItDynamicTableCreationTest.java | 6 +-
.../app/ItIgniteInMemoryNodeRestartTest.java | 6 +-
.../runner/app/ItIgniteNodeRestartTest.java | 6 +-
.../internal/runner/app/ItNoThreadsLeftTest.java | 4 +-
.../runner/app/ItSchemaChangeKvViewTest.java | 4 +-
.../runner/app/ItSchemaChangeTableViewTest.java | 4 +-
.../runner/app/ItTableApiContractTest.java | 4 +-
.../internal/runner/app/ItTablesApiTest.java | 6 +-
.../runner/app/PlatformTestNodeRunner.java | 6 +-
.../app/client/ItAbstractThinClientTest.java | 6 +-
.../runner/app/jdbc/ItJdbcMetadataSelfTest.java | 66 +---
.../runner/app/jdbc/ItJdbcResultSetSelfTest.java | 84 ++---
.../sql/engine/AbstractBasicIntegrationTest.java | 6 +-
.../internal/sql/engine/ItCreateTableDdlTest.java | 4 +-
.../internal/sql/engine/ItFunctionsTest.java | 27 +-
.../ignite/internal/sql/engine/ItJoinTest.java | 2 +-
.../ignite/internal/sql/engine/ItMetadataTest.java | 19 +-
.../internal/sql/engine/ItMixedQueriesTest.java | 30 +-
.../internal/sql/engine/ItOrToUnionRuleTest.java | 6 +-
.../sql/engine/ItProjectScanMergeRuleTest.java | 27 +-
.../internal/sql/engine/ItSecondaryIndexTest.java | 62 +---
.../ignite/internal/sql/engine/ItSetOpTest.java | 67 +---
.../ignite/internal/schema/DecimalNativeType.java | 6 +
.../apache/ignite/internal/schema/NativeTypes.java | 8 +-
.../apache/ignite/internal/schema/SchemaUtils.java | 12 +-
.../ignite/internal/schema/TemporalNativeType.java | 24 +-
.../configuration/ColumnTypeValidatorImpl.java | 83 ++++-
.../ConfigurationToSchemaDescriptorConverter.java | 191 ++++++++++
.../schema/configuration/IndexValidatorImpl.java | 89 +++--
.../configuration/SchemaDescriptorConverter.java | 225 ------------
.../schema/configuration/TableValidatorImpl.java | 102 +++++-
.../configuration/ValueSerializationHelper.java | 129 +++++++
.../schema/definition/SchemaValidationUtils.java | 116 ------
.../ignite/internal/schema/row/RowAssembler.java | 4 +-
.../ignite/internal/schema/NativeTypeTest.java | 47 ---
.../internal/schema/SchemaConfigurationTest.java | 4 +-
.../ignite/internal/schema/TemporalTypesTest.java | 2 +-
.../builder/ColumnDefinitionBuilderTest.java | 8 +-
.../builder/HashIndexDefinitionBuilderTest.java | 2 +-
.../PrimaryKeyDefinitionDefinitionBuilderTest.java | 2 +-
.../builder/SortedIndexDefinitionBuilderTest.java | 4 +-
.../schema/builder/TableDefinitionBuilderTest.java | 4 +-
.../configuration/AbstractSchemaConverterTest.java | 90 ++---
.../AbstractTableIndexValidatorTest.java | 5 +-
...nfigurationToSchemaDescriptorConverterTest.java | 308 ++++++++++++++++
.../configuration/IndexValidatorImplTest.java | 69 ----
.../SchemaConfigurationConverterTest.java | 388 ---------------------
.../SchemaDescriptorConverterTest.java | 296 ----------------
.../schema/serializer/AbstractSerializerTest.java | 7 +-
.../testutils}/SchemaConfigurationConverter.java | 79 +++--
.../testutils/builder/ColumnDefinitionBuilder.java | 2 +-
.../builder/ColumnDefinitionBuilderImpl.java | 8 +-
.../builder/HashIndexDefinitionBuilder.java | 2 +-
.../builder/HashIndexDefinitionBuilderImpl.java | 4 +-
.../builder/PrimaryKeyDefinitionBuilder.java | 2 +-
.../builder/PrimaryKeyDefinitionBuilderImpl.java | 4 +-
.../schema/testutils/builder/SchemaBuilders.java | 5 +-
.../builder/SortedIndexDefinitionBuilder.java | 2 +-
.../builder/SortedIndexDefinitionBuilderImpl.java | 10 +-
.../testutils/builder/TableDefinitionBuilder.java | 9 +-
.../builder/TableDefinitionBuilderImpl.java | 11 +-
.../definition/AbstractSchemaObject.java | 3 +-
.../testutils}/definition/ColumnDefinition.java | 2 +-
.../definition/ColumnDefinitionImpl.java | 5 +-
.../schema/testutils}/definition/ColumnType.java | 10 +-
.../definition/DefaultValueDefinition.java | 2 +-
.../definition/DefaultValueGenerators.java | 2 +-
.../definition/PrimaryKeyDefinition.java | 2 +-
.../schema/testutils}/definition/SchemaObject.java | 2 +-
.../testutils}/definition/TableDefinition.java | 2 +-
.../testutils}/definition/TableDefinitionImpl.java | 5 +-
.../definition/index/ColumnarIndexDefinition.java | 2 +-
.../definition/index/HashIndexDefinition.java | 2 +-
.../definition/index/HashIndexDefinitionImpl.java | 8 +-
.../definition/index/IndexColumnDefinition.java | 2 +-
.../index/IndexColumnDefinitionImpl.java | 7 +-
.../definition/index/IndexDefinition.java | 4 +-
.../definition/index/PrimaryKeyDefinitionImpl.java | 6 +-
.../testutils}/definition/index/SortOrder.java | 2 +-
.../index/SortedIndexColumnDefinition.java | 2 +-
.../index/SortedIndexColumnDefinitionImpl.java | 6 +-
.../definition/index/SortedIndexDefinition.java | 2 +-
.../index/SortedIndexDefinitionImpl.java | 10 +-
.../testutils}/definition/index/package-info.java | 2 +-
.../sql/engine/exec/ddl/DdlCommandHandler.java | 77 +++-
.../engine/prepare/ddl/DefaultValueDefinition.java | 2 -
.../sql/engine/property/PropertiesHelper.java | 25 +-
.../sql/engine/type/IgniteTypeFactory.java | 43 +--
.../internal/sql/engine/type/IgniteTypeSystem.java | 6 +-
.../sql/engine/property/PropertiesHelperTest.java | 2 +-
.../storage/index/HashIndexDescriptor.java | 5 +-
.../internal/storage/index/HashIndexStorage.java | 2 -
.../storage/index/SortedIndexDescriptor.java | 5 +-
.../internal/storage/index/SortedIndexStorage.java | 2 -
.../index/AbstractSortedIndexStorageTest.java | 14 +-
.../storage/AbstractMvTableStorageTest.java | 8 +-
.../index/AbstractHashIndexStorageTest.java | 12 +-
.../internal/table/MutableRowTupleAdapterTest.java | 2 +-
.../table/distributed/TableManagerTest.java | 6 +-
110 files changed, 1377 insertions(+), 1852 deletions(-)
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java b/modules/api/src/main/java/org/apache/ignite/schema/definition/package-info.java
deleted file mode 100644
index 17a0ede46c..0000000000
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/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 table schema definition interfaces and classes.
- */
-
-package org.apache.ignite.schema.definition;
diff --git a/modules/api/src/main/java/org/apache/ignite/table/mapper/TypeConverter.java b/modules/api/src/main/java/org/apache/ignite/table/mapper/TypeConverter.java
index ba1e0fe078..671eb279ca 100644
--- a/modules/api/src/main/java/org/apache/ignite/table/mapper/TypeConverter.java
+++ b/modules/api/src/main/java/org/apache/ignite/table/mapper/TypeConverter.java
@@ -17,14 +17,12 @@
package org.apache.ignite.table.mapper;
-import org.apache.ignite.schema.definition.ColumnType;
-
/**
* Type converter interface provides methods for additional transformation for data of the field type to a type, which is compatible with
* the column type, and vice versa.
*
* <p>The converter can be used to convert object (or their fields), which type is incompatible with the schema.
- * E.g. serialize an arbitrary object to a byte[] for storing is a BLOB column {@link ColumnType#blob()}.
+ * E.g. serialize an arbitrary object to a byte[] for storing is a BLOB column.
*
* @param <ObjectT> Object type.
* @param <ColumnT> Column type.
diff --git a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
index 7f47bd641a..5de2e981b0 100644
--- a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
+++ b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/IntegrationTestBase.java
@@ -42,9 +42,11 @@ import org.apache.ignite.IgnitionManager;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.sql.engine.AsyncCursor;
import org.apache.ignite.internal.sql.engine.AsyncCursor.BatchedResult;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
@@ -52,8 +54,6 @@ 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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
diff --git a/modules/client/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java b/modules/client/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
index d5f00a07f9..724debb087 100644
--- a/modules/client/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
+++ b/modules/client/src/main/java/org/apache/ignite/internal/jdbc/JdbcConnection.java
@@ -55,7 +55,6 @@ import org.apache.ignite.internal.client.HostAndPortRange;
import org.apache.ignite.internal.client.TcpIgniteClient;
import org.apache.ignite.internal.jdbc.proto.JdbcQueryEventHandler;
import org.apache.ignite.internal.jdbc.proto.SqlStateCode;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.jetbrains.annotations.Nullable;
/**
@@ -65,6 +64,8 @@ public class JdbcConnection implements Connection {
/** Network timeout permission. */
private static final String SET_NETWORK_TIMEOUT_PERM = "setNetworkTimeout";
+ private static final String DEFAULT_SCHEMA_NAME = "PUBLIC";
+
/** Statements modification mutex. */
private final Object stmtsMux = new Object();
@@ -124,7 +125,7 @@ public class JdbcConnection implements Connection {
holdability = HOLD_CURSORS_OVER_COMMIT;
- schema = TableDefinition.DEFAULT_DATABASE_SCHEMA_NAME;
+ schema = DEFAULT_SCHEMA_NAME;
client = null;
}
@@ -834,7 +835,7 @@ public class JdbcConnection implements Connection {
*/
public static String normalizeSchema(String schemaName) {
if (schemaName == null || schemaName.isEmpty()) {
- return TableDefinition.DEFAULT_DATABASE_SCHEMA_NAME;
+ return DEFAULT_SCHEMA_NAME;
}
String res;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 4e0820b61b..20f2f36a7a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -20,6 +20,8 @@ package org.apache.ignite.internal.util;
import static org.apache.ignite.lang.ErrorGroups.Common.NODE_STOPPING_ERR;
import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.nio.ByteBuffer;
import java.nio.file.AtomicMoveNotSupportedException;
import java.nio.file.FileVisitResult;
@@ -31,10 +33,12 @@ import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CancellationException;
@@ -828,4 +832,34 @@ public class IgniteUtils {
busyLock.leaveBusy();
}
}
+
+ /**
+ * Collects all the fields of given class which are defined as a public static within the specified class.
+ *
+ * @param sourceCls The class to lookup fields in.
+ * @param targetCls Type of the fields of interest.
+ * @return A mapping name to property itself.
+ */
+ public static <T> List<T> collectStaticFields(Class<?> sourceCls, Class<? extends T> targetCls) {
+ List<T> result = new ArrayList<>();
+
+ for (Field f : sourceCls.getDeclaredFields()) {
+ if (!targetCls.equals(f.getType())
+ || !Modifier.isStatic(f.getModifiers())
+ || !Modifier.isPublic(f.getModifiers())) {
+ continue;
+ }
+
+ try {
+ T value = targetCls.cast(f.get(sourceCls));
+
+ result.add(value);
+ } catch (IllegalAccessException e) {
+ // should not happen
+ throw new AssertionError(e);
+ }
+ }
+
+ return result;
+ }
}
diff --git a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
index a7e69308aa..e08938d991 100644
--- a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
+++ b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java
@@ -72,7 +72,6 @@ import org.apache.ignite.internal.index.event.IndexEventParameters;
import org.apache.ignite.internal.schema.configuration.IndexValidatorImpl;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.lang.ErrorGroups;
-import org.apache.ignite.lang.ErrorGroups.Table;
import org.apache.ignite.lang.IgniteInternalException;
import org.apache.ignite.lang.IndexNotFoundException;
import org.apache.ignite.lang.TableNotFoundException;
@@ -232,7 +231,7 @@ public class IndexManagerTest {
);
assertTrue(IgniteTestUtils.hasCause(completionException, ConfigurationValidationException.class,
- "At least one column should be specified"));
+ "Index must include at least one column"));
assertThat(
(IgniteTestUtils.cause(completionException, ConfigurationValidationException.class)).getMessage(),
@@ -253,12 +252,7 @@ public class IndexManagerTest {
);
assertTrue(IgniteTestUtils.hasCause(completionException, ConfigurationValidationException.class,
- "column must exist in the schema"));
-
- assertThat(
- (IgniteTestUtils.cause(completionException, ConfigurationValidationException.class)).getMessage(),
- containsString(Table.TABLE_ERR_GROUP.name())
- );
+ "Columns don't exist"));
}
@Test
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 a30ffe62c9..87d63cb2c6 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
@@ -20,10 +20,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.schema.testutils.definition.ColumnType;
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.definition.ColumnType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
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 98f7f26dbe..2cfe1ff0af 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
@@ -62,8 +62,10 @@ import org.apache.ignite.internal.raft.Loza;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModules;
import org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryDataStorageModule;
@@ -90,8 +92,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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.utils.ClusterServiceTestUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
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 9f8730a6ae..1067f4a1e9 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
@@ -38,12 +38,12 @@ import java.util.stream.Stream;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageChange;
import org.apache.ignite.internal.table.distributed.TableManager;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.Test;
import org.rocksdb.ColumnFamilyDescriptor;
import org.rocksdb.ColumnFamilyHandle;
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 57756205bd..ebc4d6b66f 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
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.runner.app;
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.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeName;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.fail;
@@ -36,14 +36,14 @@ 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.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
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 2a41d3c33b..a7fe871972 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
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.runner.app;
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.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -34,15 +34,15 @@ 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.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.AfterEach;
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 bf71f69a1d..796cefca4d 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
@@ -37,14 +37,14 @@ import org.apache.ignite.Ignite;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
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 57df0394b8..d7b1b22fbb 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
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.runner.app;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeName;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -37,6 +37,8 @@ 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.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.storage.pagememory.configuration.schema.VolatilePageMemoryDataStorageChange;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
@@ -47,8 +49,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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
import org.intellij.lang.annotations.Language;
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 7e5e84bede..23e2702cd3 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
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.runner.app;
import static java.util.stream.Collectors.joining;
import static org.apache.ignite.internal.recovery.ConfigurationCatchUpListener.CONFIGURATION_CATCH_UP_DIFFERENCE_PROPERTY;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.assertThrowsWithCause;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeName;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
@@ -73,6 +73,8 @@ 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.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModule;
import org.apache.ignite.internal.storage.DataStorageModules;
@@ -97,8 +99,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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
import org.intellij.lang.annotations.Language;
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 d2e87395ba..e202575d87 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
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.runner.app;
import static java.util.stream.Collectors.joining;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -32,9 +32,9 @@ 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.schema.testutils.definition.ColumnType;
import org.apache.ignite.internal.testframework.IgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
-import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.Table;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
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 5cc9c17096..987c0028c0 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
@@ -27,8 +27,8 @@ import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.schema.SchemaMismatchException;
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.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.Test;
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 d7210cff86..60699e394f 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
@@ -27,8 +27,8 @@ import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.schema.SchemaMismatchException;
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.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
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 3836e25d24..803a12b1fa 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
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.runner.app;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.convert;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -26,10 +26,10 @@ 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.schema.testutils.definition.ColumnType;
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.definition.ColumnType;
import org.apache.ignite.table.Table;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
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 71bd56492f..75325c7d87 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
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.runner.app;
import static java.util.concurrent.CompletableFuture.runAsync;
import static java.util.concurrent.CompletableFuture.supplyAsync;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.convert;
import static org.apache.ignite.internal.test.WatchListenerInhibitor.metastorageEventsInhibitor;
import static org.apache.ignite.internal.testframework.IgniteTestUtils.testNodeName;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
@@ -44,6 +44,8 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.internal.schema.SchemaUtils;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.apache.ignite.internal.table.IgniteTablesInternal;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.test.WatchListenerInhibitor;
@@ -55,8 +57,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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.sql.Session;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
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 816a8c1047..f24b244ad9 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
@@ -30,11 +30,11 @@ import org.apache.ignite.IgnitionManager;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.util.IgniteUtils;
-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 37361d1223..db93336eef 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
@@ -32,15 +32,15 @@ import org.apache.ignite.Ignite;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.TestInfo;
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 65ef06056c..685deceffa 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
@@ -27,7 +27,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
@@ -42,14 +41,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
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.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;
-import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -60,38 +52,16 @@ import org.junit.jupiter.api.Test;
public class ItJdbcMetadataSelfTest extends AbstractJdbcSelfTest {
/** Creates tables. */
@BeforeAll
- public static void createTables() {
+ public static void createTables() throws SQLException {
assert !clusterNodes.isEmpty();
- TableDefinition perTbl = SchemaBuilders.tableBuilder("PUBLIC", "PERSON").columns(
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("AGE", ColumnType.INT32).asNullable(true).build(),
- SchemaBuilders.column("ORGID", ColumnType.INT32).build()
- ).withPrimaryKey("ORGID").build();
-
- TableDefinition orgTbl = SchemaBuilders.tableBuilder("PUBLIC", "ORGANIZATION").columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("BIGDATA", ColumnType.decimalOf(20, 10)).asNullable(true).build()
- ).withPrimaryKey("ID").build();
-
- clusterNodes.get(0).tables().createTable(perTbl.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(perTbl, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- );
-
- clusterNodes.get(0).tables().createTable(orgTbl.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(orgTbl, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- );
-
- Table tbl1 = clusterNodes.get(0).tables().table(perTbl.canonicalName());
- Table tbl2 = clusterNodes.get(0).tables().table(orgTbl.canonicalName());
-
- tbl1.recordView().insert(null, Tuple.create().set("ORGID", 1).set("NAME", "111").set("AGE", 111));
- tbl2.recordView().insert(null, Tuple.create().set("ID", 1).set("NAME", "AAA").set("BIGDATA", BigDecimal.valueOf(10)));
+ try (Statement stmt = conn.createStatement()) {
+ stmt.executeUpdate("CREATE TABLE person(name VARCHAR, age INT, orgid INT PRIMARY KEY)");
+ stmt.executeUpdate("INSERT INTO person (orgid, name, age) VALUES (1, '111', 111)");
+
+ stmt.executeUpdate("CREATE TABLE organization(id INT PRIMARY KEY, name VARCHAR, bigdata DECIMAL(20, 10))");
+ stmt.executeUpdate("INSERT INTO organization (id, name, bigdata) VALUES (1, 'AAA', 10)");
+ }
}
@Test
@@ -159,19 +129,13 @@ public class ItJdbcMetadataSelfTest extends AbstractJdbcSelfTest {
}
private void createMetaTable() {
- Ignite ignite = clusterNodes.get(0);
-
- TableDefinition metaTableDef = SchemaBuilders.tableBuilder("PUBLIC", "METATEST")
- .columns(
- SchemaBuilders.column("DECIMAL_COL", ColumnType.decimal()).build(),
- SchemaBuilders.column("DATE_COL", ColumnType.DATE).build(),
- SchemaBuilders.column("ID", ColumnType.INT32).asNullable(false).build())
- .withPrimaryKey("ID")
- .build();
-
- ignite.tables().createTable(metaTableDef.canonicalName(), (tableChange) -> {
- SchemaConfigurationConverter.convert(metaTableDef, tableChange).changeReplicas(1).changePartitions(10);
- });
+ try (Connection conn = DriverManager.getConnection(URL);
+ Statement stmt = conn.createStatement();
+ ) {
+ stmt.executeUpdate("CREATE TABLE metatest(decimal_col DECIMAL, date_col DATE, id INT PRIMARY KEY)");
+ } catch (SQLException ex) {
+ throw new RuntimeException(ex);
+ }
}
@Test
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 7c96713e8a..ac1e0b56a9 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
@@ -34,23 +34,12 @@ import java.sql.Date;
import java.sql.NClob;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
-import java.time.Instant;
import java.time.LocalDate;
-import java.time.LocalTime;
-import java.util.ArrayList;
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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.table.RecordView;
-import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -70,49 +59,34 @@ public class ItJdbcResultSetSelfTest extends AbstractJdbcSelfTest {
+ "doubleVal, bigVal, strVal from TEST WHERE id = 1";
@BeforeAll
- public static void beforeClass() {
- Ignite ignite = clusterNodes.get(0);
-
- List<ColumnDefinition> columns = new ArrayList<>();
-
- columns.add(SchemaBuilders.column("ID", ColumnType.INT32).build());
- columns.add(SchemaBuilders.column("BOOLVAL", ColumnType.INT8).asNullable(true).build());
- columns.add(SchemaBuilders.column("BYTEVAL", ColumnType.INT8).asNullable(true).build());
- columns.add(SchemaBuilders.column("SHORTVAL", ColumnType.INT16).asNullable(true).build());
- columns.add(SchemaBuilders.column("INTVAL", ColumnType.INT32).asNullable(true).build());
- columns.add(SchemaBuilders.column("LONGVAL", ColumnType.INT64).asNullable(true).build());
- columns.add(SchemaBuilders.column("FLOATVAL", ColumnType.FLOAT).asNullable(true).build());
- columns.add(SchemaBuilders.column("DOUBLEVAL", ColumnType.DOUBLE).asNullable(true).build());
- columns.add(SchemaBuilders.column("BIGVAL", ColumnType.decimal()).asNullable(true).build());
- columns.add(SchemaBuilders.column("STRVAL", ColumnType.string()).asNullable(true).build());
- columns.add(SchemaBuilders.column("ARRVAL", ColumnType.blob()).asNullable(true).build());
- columns.add(SchemaBuilders.column("DATEVAL", ColumnType.DATE).asNullable(true).build());
- columns.add(SchemaBuilders.column("TIMEVAL", ColumnType.TemporalColumnType.time()).asNullable(true).build());
- columns.add(SchemaBuilders.column("TSVAL", ColumnType.TemporalColumnType.timestamp()).asNullable(true).build());
- columns.add(SchemaBuilders.column("URLVAL", ColumnType.blob()).asNullable(true).build());
-
- TableDefinition personTableDef = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(columns)
- .withPrimaryKey("ID")
- .build();
-
- ignite.tables().createTable(personTableDef.canonicalName(), (tableChange) ->
- SchemaConfigurationConverter.convert(personTableDef, tableChange).changeReplicas(1).changePartitions(10)
- );
-
- RecordView<Tuple> tupleRecordView = ignite.tables().table("PUBLIC.TEST").recordView();
-
- Tuple tuple = Tuple.create();
-
- tuple.set("BOOLVAL", (byte) 1).set("BYTEVAL", (byte) 1).set("SHORTVAL", (short) 1)
- .set("INTVAL", 1).set("LONGVAL", 1L).set("FLOATVAL", 1.0f).set("DOUBLEVAL", 1.0d)
- .set("BIGVAL", new BigDecimal("1")).set("STRVAL", "1")
- .set("DATEVAL", LocalDate.parse("1901-02-01"))
- .set("TIMEVAL", LocalTime.parse("01:01:01"))
- .set("TSVAL", Instant.ofEpochMilli(1));
-
- tupleRecordView.insert(null, tuple.set("ID", 1));
- tupleRecordView.insert(null, tuple.set("ID", 2));
+ public static void beforeClass() throws SQLException {
+ try (Statement stmt = conn.createStatement()) {
+ stmt.executeUpdate("CREATE TABLE test("
+ + "id INT PRIMARY KEY,"
+ + "boolval TINYINT,"
+ + "byteval TINYINT,"
+ + "shortval SMALLINT,"
+ + "intval INT,"
+ + "longval BIGINT,"
+ + "floatval FLOAT,"
+ + "doubleval DOUBLE,"
+ + "bigval DECIMAL(10, 3),"
+ + "strval VARCHAR,"
+ + "arrval BINARY,"
+ + "dateval DATE,"
+ + "timeval TIME,"
+ + "tsval TIMESTAMP,"
+ + "urlval BINARY"
+ + ")"
+ );
+
+ stmt.executeUpdate("INSERT INTO test ("
+ + "id, boolval, byteval, shortval, intval, longval, floatval, doubleval, bigval, strval, dateval, timeval, tsval)"
+ + " VALUES (1, 1, 1, 1, 1, 1, 1.0, 1.0, 1, '1', date '1901-02-01', time '01:01:01', timestamp '1970-01-01 00:00:01')");
+ stmt.executeUpdate("INSERT INTO test ("
+ + "id, boolval, byteval, shortval, intval, longval, floatval, doubleval, bigval, strval, dateval, timeval, tsval)"
+ + " VALUES (2, 1, 1, 1, 1, 1, 1.0, 1.0, 1, '1', date '1901-02-01', time '01:01:01', timestamp '1970-01-01 00:00:01')");
+ }
}
@Test
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 7a2d69082e..d1ddc69994 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
@@ -42,9 +42,11 @@ import org.apache.ignite.IgnitionManager;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.schema.testutils.builder.TableDefinitionBuilder;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
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;
@@ -53,8 +55,6 @@ 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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.sql.ColumnMetadata;
import org.apache.ignite.sql.Session;
import org.apache.ignite.table.RecordView;
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
index 4ea2527281..4f4d97dc65 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
@@ -95,7 +95,7 @@ public class ItCreateTableDdlTest extends AbstractBasicIntegrationTest {
IgniteException.class,
() -> sql("CREATE TABLE T0(ID0 INT, ID1 INT, VAL INT, PRIMARY KEY (ID1, ID0)) COLOCATE (ID0, VAL)")
).getMessage(),
- containsString("Schema definition error: All colocation columns must be part of primary key")
+ containsString("Colocation columns must be subset of primary key")
);
assertThat(
@@ -103,7 +103,7 @@ public class ItCreateTableDdlTest extends AbstractBasicIntegrationTest {
IgniteException.class,
() -> sql("CREATE TABLE T0(ID0 INT, ID1 INT, VAL INT, PRIMARY KEY (ID1, ID0)) COLOCATE (ID1, ID0, ID1)")
).getMessage(),
- containsString("Schema definition error: Colocation columns must not be duplicated")
+ containsString("Colocation columns contains duplicates")
);
}
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 2f1f4b10dd..1954f269ba 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
@@ -29,14 +29,8 @@ import java.time.LocalDateTime;
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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.table.RecordView;
-import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.Test;
/**
@@ -148,26 +142,11 @@ public class ItFunctionsTest extends AbstractBasicIntegrationTest {
@Test
public void testRangeWithCache() {
- TableDefinition tblDef = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("VAL", ColumnType.INT32).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- String tblName = tblDef.canonicalName();
-
- RecordView<Tuple> tbl = CLUSTER_NODES.get(0).tables().createTable(tblDef.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(tblDef, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- ).recordView();
+ sql("CREATE TABLE test(id INT PRIMARY KEY, val INT)");
try {
-
for (int i = 0; i < 100; i++) {
- tbl.insert(null, Tuple.create().set("ID", i).set("VAL", i));
+ sql("INSERT INTO test VALUES (?, ?)", i, i);
}
// Correlated INNER join.
@@ -208,7 +187,7 @@ public class ItFunctionsTest extends AbstractBasicIntegrationTest {
.returns(50)
.check();
} finally {
- CLUSTER_NODES.get(0).tables().dropTable(tblName);
+ sql("DROP TABLE IF EXISTS test");
}
}
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 2b6613add8..436461a4db 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
@@ -20,8 +20,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.schema.testutils.definition.ColumnType;
import org.apache.ignite.internal.sql.engine.util.QueryChecker;
-import org.apache.ignite.schema.definition.ColumnType;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
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 9a5f7b18f4..2eccb35c0c 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
@@ -23,14 +23,9 @@ 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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.sql.SqlColumnType;
import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/**
@@ -96,20 +91,8 @@ public class ItMetadataTest extends AbstractBasicIntegrationTest {
}
@Test
- @Disabled("https://issues.apache.org/jira/browse/IGNITE-16679")
public void columnOrder() {
- TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", "COLUMN_ORDER").columns(
- SchemaBuilders.column("DOUBLE_C", ColumnType.DOUBLE).asNullable(true).build(),
- SchemaBuilders.column("LONG_C", ColumnType.INT64).build(),
- SchemaBuilders.column("STRING_C", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("INT_C", ColumnType.INT32).asNullable(true).build()
- ).withPrimaryKey("LONG_C").build();
-
- CLUSTER_NODES.get(0).tables().createTable(schTbl1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl1, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- );
+ sql("CREATE TABLE column_order (double_c DOUBLE, long_c BIGINT PRIMARY KEY, string_c VARCHAR, int_c INT)");
assertQuery("select * from column_order")
.columnNames("DOUBLE_C", "LONG_C", "STRING_C", "INT_C")
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 cad085305b..e15b714ebd 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
@@ -25,11 +25,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Arrays;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-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;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -43,11 +38,11 @@ public class ItMixedQueriesTest extends AbstractBasicIntegrationTest {
*/
@BeforeAll
static void initTestData() {
- Table emp1 = createTable("EMP1");
- Table emp2 = createTable("EMP2");
+ createTable("EMP1");
+ createTable("EMP2");
int idx = 0;
- insertData(emp1, new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
+ insertData("PUBLIC.EMP1", new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
{idx++, "Igor", 10d},
{idx++, "Igor", 11d},
{idx++, "Igor", 12d},
@@ -58,7 +53,7 @@ public class ItMixedQueriesTest extends AbstractBasicIntegrationTest {
});
idx = 0;
- insertData(emp2, new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
+ insertData("PUBLIC.EMP2", new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
{idx++, "Roman", 10d},
{idx++, "Roman", 11d},
{idx++, "Roman", 12d},
@@ -363,20 +358,7 @@ public class ItMixedQueriesTest extends AbstractBasicIntegrationTest {
.check();
}
- private static Table createTable(String tableName) {
- TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", tableName)
- .columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("SALARY", ColumnType.DOUBLE).asNullable(true).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- return CLUSTER_NODES.get(0).tables().createTable(schTbl1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl1, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- );
+ private static void createTable(String tableName) {
+ sql("CREATE TABLE " + tableName + "(id INT PRIMARY KEY, name VARCHAR, salary DOUBLE)");
}
}
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 943cdbe753..37ab14b7fb 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,10 +24,10 @@ import static org.hamcrest.CoreMatchers.not;
import java.util.List;
import java.util.Map;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
+import org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter;
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.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.table.Table;
import org.hamcrest.CoreMatchers;
import org.junit.jupiter.api.BeforeAll;
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 8447f8ef2d..29fb7ea044 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
@@ -23,12 +23,7 @@ import static org.apache.ignite.internal.sql.engine.util.QueryChecker.containsOn
import static org.apache.ignite.internal.sql.engine.util.QueryChecker.containsProject;
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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.table.Table;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -45,24 +40,12 @@ public class ItProjectScanMergeRuleTest extends AbstractBasicIntegrationTest {
*/
@BeforeAll
static void initTestData() {
- TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", "PRODUCTS").columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("CATEGORY", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("CAT_ID", ColumnType.INT32).build(),
- SchemaBuilders.column("SUBCATEGORY", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("SUBCAT_ID", ColumnType.INT32).build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- Table tbl = CLUSTER_NODES.get(0).tables().createTable(schTbl1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl1, tblCh)
- .changeReplicas(1)
- .changePartitions(10)
- );
+ sql("CREATE TABLE products (id INT PRIMARY KEY, category VARCHAR, cat_id INT NOT NULL, subcategory VARCHAR,"
+ + " subcat_id INT NOT NULL, name VARCHAR)");
+
+ sql("CREATE INDEX " + IDX_CAT_ID + " ON products(cat_id)");
- insertData(tbl, new String[]{"ID", "CATEGORY", "CAT_ID", "SUBCATEGORY", "SUBCAT_ID", "NAME"}, new Object[][]{
+ insertData("PUBLIC.PRODUCTS", new String[]{"ID", "CATEGORY", "CAT_ID", "SUBCATEGORY", "SUBCAT_ID", "NAME"}, new Object[][]{
{1, "prod1", 1, "cat1", 11, "noname1"},
{2, "prod2", 2, "cat1", 11, "noname2"},
{3, "prod3", 3, "cat1", 12, "noname3"},
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 e9ed4ecd07..66f6322cb0 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
@@ -26,13 +26,6 @@ import static org.apache.ignite.internal.sql.engine.util.QueryChecker.containsUn
import static org.hamcrest.CoreMatchers.anyOf;
import static org.hamcrest.Matchers.not;
-import java.util.List;
-import java.util.Map;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-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;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -55,32 +48,13 @@ public class ItSecondaryIndexTest extends AbstractBasicIntegrationTest {
*/
@BeforeAll
static void initTestData() {
- TableDefinition tlbDef = SchemaBuilders.tableBuilder("PUBLIC", "DEVELOPER")
- .columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("DEPID", ColumnType.INT32).asNullable(true).build(),
- SchemaBuilders.column("CITY", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("AGE", ColumnType.INT32).asNullable(true).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- Table dev0 = CLUSTER_NODES.get(0).tables().createTable(tlbDef.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(tlbDef, tblCh)
- .changeReplicas(2)
- .changePartitions(10)
- );
-
- Map<String, List<String>> idxs = Map.of(
- DEPID_IDX, List.of("DEPID"),
- NAME_CITY_IDX, List.of("DEPID desc", "CITY desc"),
- NAME_DEPID_CITY_IDX, List.of("NAME", "DEPID desc", "CITY desc")
- );
+ sql("CREATE TABLE developer (id INT PRIMARY KEY, name VARCHAR, depid INT, city VARCHAR, age INT)");
+ sql("CREATE INDEX " + DEPID_IDX + " ON developer (depid)");
+ sql("CREATE INDEX " + NAME_CITY_IDX + " ON developer (name DESC, city DESC)");
+ sql("CREATE INDEX " + NAME_DEPID_CITY_IDX + " ON developer (name DESC, depid DESC, city DESC)");
- addIndexes(CLUSTER_NODES.get(0), idxs, tlbDef.canonicalName());
- insertData(dev0, new String[]{"ID", "NAME", "DEPID", "CITY", "AGE"}, new Object[][]{
+ insertData("DEVELOPER", new String[]{"ID", "NAME", "DEPID", "CITY", "AGE"}, new Object[][]{
{1, "Mozart", 3, "Vienna", 33},
{2, "Beethoven", 2, "Vienna", 44},
{3, "Bach", 1, "Leipzig", 55},
@@ -106,28 +80,10 @@ public class ItSecondaryIndexTest extends AbstractBasicIntegrationTest {
{23, "Musorgskii", 22, "", -1}
});
- TableDefinition schema1 = SchemaBuilders.tableBuilder("PUBLIC", "UNWRAP_PK")
- .columns(
- SchemaBuilders.column("F1", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("F2", ColumnType.INT64).asNullable(true).build(),
- SchemaBuilders.column("F3", ColumnType.INT64).asNullable(true).build(),
- SchemaBuilders.column("F4", ColumnType.INT64).asNullable(true).build()
- )
- .withPrimaryKey(
- SchemaBuilders.primaryKey().withColumns("F2", "F1").build()
- )
- .build();
-
- Table dev1 = CLUSTER_NODES.get(0).tables().createTable(schema1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schema1, tblCh)
- .changeReplicas(2)
- .changePartitions(10)
- .changePrimaryKey(primaryKeyChange -> {
- primaryKeyChange.changeColumns("F2", "F1");
- })
- );
-
- insertData(dev1, new String[]{"F1", "F2", "F3", "F4"}, new Object[][]{
+ sql("CREATE TABLE unwrap_pk(f1 VARCHAR, f2 BIGINT, f3 BIGINT, f4 BIGINT, primary key(f2, f1))");
+ sql("CREATE INDEX" + PK_IDX + " ON unwrap_pk(f2, f1)");
+
+ insertData("UNWRAP_PK", new String[]{"F1", "F2", "F3", "F4"}, new Object[][]{
{"Petr", 1L, 2L, 3L},
{"Ivan", 2L, 2L, 4L},
{"Ivan1", 21L, 2L, 4L},
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 bb85e66186..a947593844 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
@@ -21,13 +21,6 @@ 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.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;
-import org.apache.ignite.table.Table;
-import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -41,11 +34,11 @@ public class ItSetOpTest extends AbstractBasicIntegrationTest {
*/
@BeforeAll
static void initTestData() {
- Table emp1 = createTable("EMP1");
- Table emp2 = createTable("EMP2");
+ createTable("EMP1");
+ createTable("EMP2");
int idx = 0;
- insertData(emp1, new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
+ insertData("PUBLIC.EMP1", new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
{idx++, "Igor", 10d},
{idx++, "Igor", 11d},
{idx++, "Igor", 12d},
@@ -56,7 +49,7 @@ public class ItSetOpTest extends AbstractBasicIntegrationTest {
});
idx = 0;
- insertData(emp2, new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
+ insertData("PUBLIC.EMP2", new String[]{"ID", "NAME", "SALARY"}, new Object[][]{
{idx++, "Roman", 10d},
{idx++, "Roman", 11d},
{idx++, "Roman", 12d},
@@ -112,46 +105,19 @@ public class ItSetOpTest extends AbstractBasicIntegrationTest {
@Test
@Disabled
public void testSetOpBigBatch() {
- TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", "BIG_TABLE1")
- .columns(
- SchemaBuilders.column("KEY", ColumnType.INT32).build(),
- SchemaBuilders.column("VAL", ColumnType.INT32).asNullable(true).build()
- )
- .withPrimaryKey("KEY")
- .build();
-
- Table tbl1 = CLUSTER_NODES.get(0).tables().createTable(schTbl1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl1, tblCh)
- .changeReplicas(2)
- .changePartitions(10)
- );
-
- TableDefinition schTbl2 = SchemaBuilders.tableBuilder("PUBLIC", "BIG_TABLE2")
- .columns(
- SchemaBuilders.column("KEY", ColumnType.INT32).build(),
- SchemaBuilders.column("VAL", ColumnType.INT32).asNullable(true).build()
- )
- .withPrimaryKey("KEY")
- .build();
-
- Table tbl2 = CLUSTER_NODES.get(0).tables().createTable(schTbl2.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl2, tblCh)
- .changeReplicas(2)
- .changePartitions(10)
- );
+ sql("CREATE TABLE big_table1(key INT PRIMARY KEY, val INT)");
+ sql("CREATE TABLE big_table2(key INT PRIMARY KEY, val INT)");
int key = 0;
- RecordView<Tuple> recordView1 = tbl1.recordView();
- RecordView<Tuple> recordView2 = tbl2.recordView();
for (int i = 0; i < 5; i++) {
for (int j = 0; j < ((i == 0) ? 1 : (1 << (i * 4 - 1))); j++) {
// Cache1 keys count: 1 of "0", 8 of "1", 128 of "2", 2048 of "3", 32768 of "4".
- recordView1.insert(null, Tuple.create().set("KEY", key++).set("VAL", i));
+ sql("INSERT INTO big_table1 VALUES (?, ?)", key++, i);
// Cache2 keys count: 1 of "5", 128 of "3", 32768 of "1".
if ((i & 1) == 0) {
- recordView2.insert(null, Tuple.create().set("KEY", key++).set("VAL", 5 - i));
+ sql("INSERT INTO big_table2 VALUES (?, ?)", key++, 5 - i);
}
}
}
@@ -262,21 +228,8 @@ public class ItSetOpTest extends AbstractBasicIntegrationTest {
assertEquals(3, rows.size());
}
- private static Table createTable(String tableName) {
- TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", tableName)
- .columns(
- SchemaBuilders.column("ID", ColumnType.INT32).build(),
- SchemaBuilders.column("NAME", ColumnType.string()).asNullable(true).build(),
- SchemaBuilders.column("SALARY", ColumnType.DOUBLE).asNullable(true).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- return CLUSTER_NODES.get(0).tables().createTable(schTbl1.canonicalName(), tblCh ->
- SchemaConfigurationConverter.convert(schTbl1, tblCh)
- .changeReplicas(2)
- .changePartitions(10)
- );
+ private static void createTable(String tableName) {
+ sql("CREATE TABLE " + tableName + "(id INT PRIMARY KEY, name VARCHAR, salary DOUBLE)");
}
private <T> long countIf(Iterable<T> it, Predicate<T> pred) {
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/DecimalNativeType.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/DecimalNativeType.java
index cb642ba90f..45949c98e3 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/DecimalNativeType.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/DecimalNativeType.java
@@ -24,6 +24,12 @@ import org.apache.ignite.internal.tostring.S;
* Decimal column type.
*/
public class DecimalNativeType extends NativeType {
+ /** Default precision. */
+ public static final int DEFAULT_PRECISION = 19;
+
+ /** Default scale. */
+ public static final int DEFAULT_SCALE = 3;
+
/** Precision. */
private final int precision;
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/NativeTypes.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/NativeTypes.java
index 6c7654f300..6308687c10 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/NativeTypes.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/NativeTypes.java
@@ -20,8 +20,6 @@ package org.apache.ignite.internal.schema;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.BitSet;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.ColumnType.TemporalColumnType;
import org.jetbrains.annotations.Contract;
/**
@@ -148,7 +146,7 @@ public class NativeTypes {
* @see #time(int)
*/
public static NativeType time() {
- return TemporalNativeType.time(ColumnType.TemporalColumnType.DEFAULT_TIME_PRECISION);
+ return TemporalNativeType.time(TemporalNativeType.DEFAULT_TIME_PRECISION);
}
/**
@@ -168,7 +166,7 @@ public class NativeTypes {
* @see #datetime(int)
*/
public static NativeType datetime() {
- return TemporalNativeType.datetime(TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION);
+ return TemporalNativeType.datetime(TemporalNativeType.DEFAULT_TIMESTAMP_PRECISION);
}
/**
@@ -188,7 +186,7 @@ public class NativeTypes {
* @see #timestamp(int)
*/
public static NativeType timestamp() {
- return TemporalNativeType.timestamp(ColumnType.TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION);
+ return TemporalNativeType.timestamp(TemporalNativeType.DEFAULT_TIMESTAMP_PRECISION);
}
/**
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 d2f8ae8228..602a6be780 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
@@ -21,12 +21,10 @@ import java.util.Optional;
import org.apache.ignite.configuration.NamedListView;
import org.apache.ignite.configuration.schemas.table.ColumnView;
import org.apache.ignite.configuration.schemas.table.TableView;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.internal.schema.configuration.SchemaDescriptorConverter;
+import org.apache.ignite.internal.schema.configuration.ConfigurationToSchemaDescriptorConverter;
import org.apache.ignite.internal.schema.mapping.ColumnMapper;
import org.apache.ignite.internal.schema.mapping.ColumnMapping;
import org.apache.ignite.lang.IgniteStringFormatter;
-import org.apache.ignite.schema.definition.TableDefinition;
/**
* Stateless schema utils that produces helper methods for schema preparation.
@@ -36,13 +34,11 @@ public class SchemaUtils {
* Creates schema descriptor for the table with specified configuration.
*
* @param schemaVer Schema version.
- * @param tblCfg Table configuration.
+ * @param tableView Table configuration.
* @return Schema descriptor.
*/
- public static SchemaDescriptor prepareSchemaDescriptor(int schemaVer, TableView tblCfg) {
- TableDefinition tableDef = SchemaConfigurationConverter.convert(tblCfg);
-
- return SchemaDescriptorConverter.convert(schemaVer, tableDef);
+ public static SchemaDescriptor prepareSchemaDescriptor(int schemaVer, TableView tableView) {
+ return ConfigurationToSchemaDescriptorConverter.convert(schemaVer, tableView);
}
/**
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/TemporalNativeType.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/TemporalNativeType.java
index f401a7b67b..a71948e7c6 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/TemporalNativeType.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/TemporalNativeType.java
@@ -18,12 +18,32 @@
package org.apache.ignite.internal.schema;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.ColumnType.TemporalColumnType;
/**
* Temporal native type.
*/
public class TemporalNativeType extends NativeType {
+ /**
+ * Default TIMESTAMP type precision: microseconds.
+ *
+ * <p>SQL99 part 2 section 6.1 syntax rule 30
+ */
+ public static final int DEFAULT_TIMESTAMP_PRECISION = 6;
+
+ /**
+ * Default TIME type precision: seconds.
+ *
+ * <p>SQL99 part 2 section 6.1 syntax rule 30
+ */
+ public static final int DEFAULT_TIME_PRECISION = 0;
+
+ /**
+ * Max TIME precision.
+ *
+ * <p>SQL99 part 2 section 6.1 syntax rule 32
+ */
+ public static final int MAX_TIME_PRECISION = 9;
+
/**
* Creates TIME type.
*
@@ -72,7 +92,7 @@ public class TemporalNativeType extends NativeType {
private TemporalNativeType(NativeTypeSpec typeSpec, int size, int precision) {
super(typeSpec, size);
- if (precision < 0 || precision > TemporalColumnType.MAX_TIME_PRECISION) {
+ if (precision < 0 || precision > MAX_TIME_PRECISION) {
throw new IllegalArgumentException("Unsupported fractional seconds precision: " + precision);
}
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ColumnTypeValidatorImpl.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ColumnTypeValidatorImpl.java
index c6736cd977..0416b247f1 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ColumnTypeValidatorImpl.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ColumnTypeValidatorImpl.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.schema.configuration;
import java.util.Objects;
import org.apache.ignite.configuration.schemas.table.ColumnTypeValidator;
import org.apache.ignite.configuration.schemas.table.ColumnTypeView;
+import org.apache.ignite.configuration.schemas.table.ColumnView;
import org.apache.ignite.configuration.validation.ValidationContext;
import org.apache.ignite.configuration.validation.ValidationIssue;
import org.apache.ignite.configuration.validation.Validator;
@@ -37,13 +38,9 @@ public class ColumnTypeValidatorImpl implements Validator<ColumnTypeValidator, C
ColumnTypeView newType = ctx.getNewValue();
ColumnTypeView oldType = ctx.getOldValue();
- try {
- SchemaConfigurationConverter.convert(newType);
- } catch (IllegalArgumentException ex) {
- ctx.addIssue(new ValidationIssue(ctx.currentKey(), ctx.currentKey() + ": " + ex.getMessage()));
-
- return;
- }
+ validateLength(ctx, newType);
+ validatePrecision(ctx, newType);
+ validateScale(ctx, newType);
if (oldType == null) {
return; // Nothing to do.
@@ -53,11 +50,81 @@ public class ColumnTypeValidatorImpl implements Validator<ColumnTypeValidator, C
|| newType.precision() != oldType.precision()
|| newType.scale() != oldType.scale()
|| newType.length() != oldType.length()) {
- ctx.addIssue(new ValidationIssue(ctx.currentKey(), "Unsupported column type change: " + ctx.currentKey()));
+ ColumnView columnView = ctx.getNewOwner();
+
+ assert columnView != null;
+
+ ctx.addIssue(new ValidationIssue(columnView.name(), "Column type can't be changed"));
}
}
+ private void validateLength(ValidationContext<ColumnTypeView> ctx, ColumnTypeView typeView) {
+ switch (typeView.type()) {
+ case "STRING":
+ case "BYTES":
+ case "BITMASK":
+ if (typeView.length() <= 0) {
+ ColumnView columnView = ctx.getNewOwner();
+
+ assert columnView != null;
+
+ ctx.addIssue(new ValidationIssue(columnView.name(), "Length must be positive"));
+ }
+
+ break;
+ default:
+ // nothing to do
+ break;
+ }
+ }
+
+ private void validatePrecision(ValidationContext<ColumnTypeView> ctx, ColumnTypeView typeView) {
+ switch (typeView.type()) {
+ case "NUMBER":
+ case "DECIMAL":
+ if (typeView.precision() <= 0) {
+ ColumnView columnView = ctx.getNewOwner();
+
+ assert columnView != null;
+
+ ctx.addIssue(new ValidationIssue(columnView.name(), "Precision must be positive"));
+ }
+
+ break;
+
+ case "TIME":
+ case "DATETIME":
+ case "TIMESTAMP":
+ if (typeView.precision() < 0 || typeView.precision() > 9) {
+ ColumnView columnView = ctx.getNewOwner();
+
+ assert columnView != null;
+
+ ctx.addIssue(new ValidationIssue(columnView.name(), "Precision must be in range [0-9]"));
+ }
+
+ break;
+ default:
+ // nothing to do
+ break;
+ }
+ }
+
+ private void validateScale(ValidationContext<ColumnTypeView> ctx, ColumnTypeView typeView) {
+ if (!"DECIMAL".equals(typeView.type())) {
+ return;
+ }
+
+ if (typeView.precision() < typeView.scale()) {
+ ColumnView columnView = ctx.getNewOwner();
+
+ assert columnView != null;
+
+ ctx.addIssue(new ValidationIssue(columnView.name(), "Scale must be lower or equal to precision"));
+ }
+ }
+
/** Private constructor. */
private ColumnTypeValidatorImpl() {
}
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
new file mode 100644
index 0000000000..20060dac54
--- /dev/null
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverter.java
@@ -0,0 +1,191 @@
+/*
+ * 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.configuration;
+
+import static org.apache.ignite.internal.schema.configuration.ValueSerializationHelper.fromString;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.configuration.schemas.table.ColumnDefaultView;
+import org.apache.ignite.configuration.schemas.table.ColumnTypeView;
+import org.apache.ignite.configuration.schemas.table.ColumnView;
+import org.apache.ignite.configuration.schemas.table.ConstantValueDefaultView;
+import org.apache.ignite.configuration.schemas.table.FunctionCallDefaultView;
+import org.apache.ignite.configuration.schemas.table.NullValueDefaultView;
+import org.apache.ignite.configuration.schemas.table.TableView;
+import org.apache.ignite.internal.schema.Column;
+import org.apache.ignite.internal.schema.DefaultValueGenerator;
+import org.apache.ignite.internal.schema.DefaultValueProvider;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypes;
+import org.apache.ignite.internal.schema.SchemaDescriptor;
+import org.apache.ignite.internal.util.IgniteUtils;
+
+/**
+ * Utility class to convert table configuration view as well as all related objects to a {@link SchemaDescriptor} domain.
+ */
+public final class ConfigurationToSchemaDescriptorConverter {
+ private static final Map<String, NativeType> FIX_SIZED_TYPES;
+
+ static {
+ List<NativeType> types = IgniteUtils.collectStaticFields(NativeTypes.class, NativeType.class);
+
+ Map<String, NativeType> tmp = new HashMap<>(types.size(), 1.0f);
+
+ for (NativeType type : types) {
+ if (!type.spec().fixedLength()) {
+ continue;
+ }
+
+ tmp.put(type.spec().name(), type);
+ }
+
+ FIX_SIZED_TYPES = Map.copyOf(tmp);
+ }
+
+ /**
+ * Converts given type view to a {@link NativeType}.
+ *
+ * @param colTypeView View to convert.
+ * @return A {@link NativeType} object represented by given view.
+ */
+ public static NativeType convert(ColumnTypeView colTypeView) {
+ String typeName = colTypeView.type().toUpperCase();
+ NativeType res = FIX_SIZED_TYPES.get(typeName);
+
+ if (res != null) {
+ return res;
+ }
+
+ switch (typeName) {
+ case "BITMASK":
+ int bitmaskLen = colTypeView.length();
+
+ return NativeTypes.bitmaskOf(bitmaskLen);
+
+ case "STRING":
+ int strLen = colTypeView.length();
+
+ return NativeTypes.stringOf(strLen);
+
+ case "BYTES":
+ int blobLen = colTypeView.length();
+
+ return NativeTypes.blobOf(blobLen);
+
+ case "DECIMAL":
+ int prec = colTypeView.precision();
+ int scale = colTypeView.scale();
+
+ return NativeTypes.decimalOf(prec, scale);
+
+ case "NUMBER":
+ return NativeTypes.numberOf(colTypeView.precision());
+
+ case "TIME":
+ return NativeTypes.time(colTypeView.precision());
+
+ case "DATETIME":
+ return NativeTypes.datetime(colTypeView.precision());
+
+ case "TIMESTAMP":
+ return NativeTypes.timestamp(colTypeView.precision());
+
+ default:
+ throw new IllegalArgumentException("Unknown type " + typeName);
+ }
+ }
+
+ /**
+ * Converts given column view to a {@link Column}.
+ *
+ * @param columnOrder Number of the current column.
+ * @param columnView View to convert.
+ * @return A {@link Column} object represented by given view.
+ */
+ public static Column convert(int columnOrder, ColumnView columnView) {
+ NativeType type = convert(columnView.type());
+
+ ColumnDefaultView defaultValueView = columnView.defaultValueProvider();
+
+ DefaultValueProvider defaultValueProvider;
+
+ if (defaultValueView instanceof NullValueDefaultView) {
+ defaultValueProvider = DefaultValueProvider.constantProvider(null);
+ } else if (defaultValueView instanceof FunctionCallDefaultView) {
+ defaultValueProvider = DefaultValueProvider.forValueGenerator(
+ DefaultValueGenerator.valueOf(
+ ((FunctionCallDefaultView) defaultValueView).functionName()
+ )
+ );
+ } else if (defaultValueView instanceof ConstantValueDefaultView) {
+ defaultValueProvider = DefaultValueProvider.constantProvider(
+ fromString(((ConstantValueDefaultView) defaultValueView).defaultValue(), type)
+ );
+ } else {
+ throw new IllegalStateException("Unknown value supplier class " + defaultValueView.getClass().getName());
+ }
+
+ return new Column(columnOrder, columnView.name(), type, columnView.nullable(), defaultValueProvider);
+ }
+
+ /**
+ * Converts given table view to a {@link SchemaDescriptor}.
+ *
+ * @param schemaVer A version of given schema.
+ * @param tableView View to convert.
+ * @return A {@link SchemaDescriptor} object represented by given view.
+ */
+ public static SchemaDescriptor convert(int schemaVer, TableView tableView) {
+ Set<String> keyColumnsNames = Set.of(tableView.primaryKey().columns());
+
+ List<Column> keyCols = new ArrayList<>(keyColumnsNames.size());
+ List<Column> valCols = new ArrayList<>(tableView.columns().size() - keyColumnsNames.size());
+
+ int idx = 0;
+
+ for (String columnName : tableView.columns().namedListKeys()) {
+ ColumnView column = tableView.columns().get(columnName);
+
+ if (column == null) {
+ // columns was removed, so let's skip it
+ continue;
+ }
+
+ if (keyColumnsNames.contains(columnName)) {
+ keyCols.add(convert(idx, column));
+ } else {
+ valCols.add(convert(idx, column));
+ }
+
+ idx++;
+ }
+
+ return new SchemaDescriptor(
+ schemaVer,
+ keyCols.toArray(Column[]::new),
+ tableView.primaryKey().colocationColumns(),
+ valCols.toArray(Column[]::new)
+ );
+ }
+
+ private ConfigurationToSchemaDescriptorConverter() { }
+}
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImpl.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImpl.java
index 7f454ded41..f13acfc609 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImpl.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImpl.java
@@ -19,12 +19,15 @@ package org.apache.ignite.internal.schema.configuration;
import static org.apache.ignite.internal.configuration.util.ConfigurationUtil.getByInternalId;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import java.util.UUID;
-import java.util.stream.Collectors;
import org.apache.ignite.configuration.NamedListView;
+import org.apache.ignite.configuration.schemas.table.HashIndexView;
import org.apache.ignite.configuration.schemas.table.IndexValidator;
+import org.apache.ignite.configuration.schemas.table.SortedIndexView;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
@@ -32,11 +35,6 @@ import org.apache.ignite.configuration.schemas.table.TablesView;
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.lang.IgniteInternalException;
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.index.IndexDefinition;
/**
* Index configuration validator implementation.
@@ -55,7 +53,7 @@ public class IndexValidatorImpl implements Validator<IndexValidator, NamedListVi
NamedListView<? extends TableView> tablesView = tablesConfig.tables();
- for (String key : indexView.namedListKeys()) {
+ for (String key : newKeys(ctx.getOldValue(), ctx.getNewValue())) {
TableIndexView idxView = indexView.get(key);
UUID tableId = idxView.tableId();
@@ -64,28 +62,77 @@ public class IndexValidatorImpl implements Validator<IndexValidator, NamedListVi
if (tableView == null) {
ctx.addIssue(new ValidationIssue(key, "Unable to create index [name=" + key + "]. Table not found."));
+
+ // no further validation required for current index
+ continue;
}
- IndexDefinition index = SchemaConfigurationConverter.convert(idxView);
+ List<String> colocationColumns;
+ if (tableView.primaryKey() != null) {
+ colocationColumns = List.of(tableView.primaryKey().colocationColumns());
+ } else {
+ colocationColumns = List.of();
+ }
- TableDefinitionImpl tbl = SchemaConfigurationConverter.convert(tableView);
+ validate(ctx, idxView, tableView.columns().namedListKeys(), colocationColumns);
+ }
+ }
- Set<String> tableColumns = tbl.columns().stream().map(ColumnDefinition::name).collect(Collectors.toSet());
+ private void validate(
+ ValidationContext<?> ctx,
+ TableIndexView indexView,
+ Collection<String> tableColumns,
+ Collection<String> collocationColumns
+ ) {
+ List<String> indexedColumns;
+ if (indexView instanceof HashIndexView) {
+ var index0 = (HashIndexView) indexView;
+
+ // we need modifiable list
+ indexedColumns = new ArrayList<>(Arrays.asList(index0.columnNames()));
+ } else if (indexView instanceof SortedIndexView) {
+ var index0 = (SortedIndexView) indexView;
+
+ // we need modifiable list
+ indexedColumns = new ArrayList<>(index0.columns().namedListKeys());
+ } else {
+ ctx.addIssue(new ValidationIssue(indexView.name(), "Index type is not supported [type=" + indexView.type() + "]"));
+
+ // no further validation required
+ return;
+ }
- List<String> tableColocationColumns = tbl.colocationColumns();
+ if (indexedColumns.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(indexView.name(), "Index must include at least one column"));
- try {
- SchemaValidationUtils.validateIndexes(index, tableColumns, tableColocationColumns);
- } catch (IllegalStateException e) {
- ctx.addIssue(new ValidationIssue(key, e.getMessage()));
- }
+ // no further validation required
+ return;
+ }
- try {
- SchemaValidationUtils.validateColumns(idxView, tableColumns);
- } catch (IgniteInternalException e) {
- ctx.addIssue(new ValidationIssue(key, e.getMessage()));
+ // need check this first because later indexedColumns will be truncated
+ if (indexView.uniq()) {
+ if (collocationColumns.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(indexView.name(), "Unique index is not supported for tables without primary key"));
+ } else if (!indexedColumns.containsAll(collocationColumns)) {
+ ctx.addIssue(new ValidationIssue(indexView.name(), "Unique index must include all colocation columns"));
}
}
+
+ indexedColumns.removeAll(tableColumns);
+
+ if (!indexedColumns.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(indexView.name(), "Columns don't exist [columns=" + indexedColumns + "]"));
+ }
+ }
+
+ private List<String> newKeys(NamedListView<?> before, NamedListView<?> after) {
+ List<String> result = new ArrayList<>(after.namedListKeys());
+
+ if (before != null) {
+ result.removeAll(before.namedListKeys());
+ }
+
+ return result;
}
/** Private constructor. */
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverter.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverter.java
deleted file mode 100644
index 158958bbf2..0000000000
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverter.java
+++ /dev/null
@@ -1,225 +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.configuration;
-
-import static org.apache.ignite.internal.schema.NativeTypes.DOUBLE;
-import static org.apache.ignite.internal.schema.NativeTypes.FLOAT;
-import static org.apache.ignite.internal.schema.NativeTypes.INT16;
-import static org.apache.ignite.internal.schema.NativeTypes.INT32;
-import static org.apache.ignite.internal.schema.NativeTypes.INT64;
-import static org.apache.ignite.internal.schema.NativeTypes.INT8;
-import static org.apache.ignite.internal.schema.NativeTypes.UUID;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Supplier;
-import org.apache.ignite.internal.schema.Column;
-import org.apache.ignite.internal.schema.DefaultValueGenerator;
-import org.apache.ignite.internal.schema.DefaultValueProvider;
-import org.apache.ignite.internal.schema.InvalidTypeException;
-import org.apache.ignite.internal.schema.NativeType;
-import org.apache.ignite.internal.schema.NativeTypes;
-import org.apache.ignite.internal.schema.SchemaDescriptor;
-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.DefaultValueDefinition.FunctionCall;
-import org.apache.ignite.schema.definition.TableDefinition;
-
-/**
- * Build SchemaDescriptor from Table internal configuration.
- */
-public class SchemaDescriptorConverter {
- /**
- * Convert ColumnType to NativeType.
- *
- * @param colType ColumnType.
- * @return NativeType.
- */
- public static NativeType convert(ColumnType colType) {
- assert colType != null;
-
- ColumnType.ColumnTypeSpec type = colType.typeSpec();
-
- switch (type) {
- case INT8:
- return INT8;
-
- case INT16:
- return INT16;
-
- case INT32:
- return INT32;
-
- case INT64:
- return INT64;
-
- case FLOAT:
- return FLOAT;
-
- case DOUBLE:
- return DOUBLE;
-
- case DECIMAL: {
- ColumnType.DecimalColumnType numType = (ColumnType.DecimalColumnType) colType;
-
- return NativeTypes.decimalOf(numType.precision(), numType.scale());
- }
- case UUID:
- return UUID;
-
- case BITMASK:
- return NativeTypes.bitmaskOf(((ColumnType.VarLenColumnType) colType).length());
-
- case STRING: {
- int strLen = ((ColumnType.VarLenColumnType) colType).length();
-
- if (strLen == 0) {
- strLen = Integer.MAX_VALUE;
- }
-
- return NativeTypes.stringOf(strLen);
- }
- case BLOB: {
- int blobLen = ((ColumnType.VarLenColumnType) colType).length();
-
- if (blobLen == 0) {
- blobLen = Integer.MAX_VALUE;
- }
-
- return NativeTypes.blobOf(blobLen);
- }
- case DATE:
- return NativeTypes.DATE;
- case TIME: {
- ColumnType.TemporalColumnType temporalType = (ColumnType.TemporalColumnType) colType;
-
- return NativeTypes.time(temporalType.precision());
- }
- case DATETIME: {
- ColumnType.TemporalColumnType temporalType = (ColumnType.TemporalColumnType) colType;
-
- return NativeTypes.datetime(temporalType.precision());
- }
- case TIMESTAMP: {
- ColumnType.TemporalColumnType temporalType = (ColumnType.TemporalColumnType) colType;
-
- return NativeTypes.timestamp(temporalType.precision());
- }
-
- case NUMBER: {
- ColumnType.NumberColumnType numberType = (ColumnType.NumberColumnType) colType;
-
- return NativeTypes.numberOf(numberType.precision());
- }
- default:
- throw new InvalidTypeException("Unexpected type " + type);
- }
- }
-
- /**
- * Creates a column for given column definition.
- *
- * @param colCfg Column definition.
- * @return Internal Column.
- */
- public static Column convert(int columnOrder, ColumnDefinition colCfg) {
- NativeType type = convert(colCfg.type());
-
- DefaultValueType defaultValueType;
- if (colCfg.defaultValueDefinition() == null) {
- defaultValueType = DefaultValueType.NULL;
- } else {
- defaultValueType = colCfg.defaultValueDefinition().type();
- }
-
- switch (defaultValueType) {
- case NULL:
- return new Column(columnOrder, colCfg.name(), type, colCfg.nullable());
- case CONSTANT:
- ConstantValue constantValue = colCfg.defaultValueDefinition();
-
- return new Column(columnOrder, colCfg.name(), type, colCfg.nullable(),
- DefaultValueProvider.constantProvider(constantValue.value()));
- case FUNCTION_CALL:
- FunctionCall functionCall = colCfg.defaultValueDefinition();
-
- return new Column(columnOrder, colCfg.name(), type, colCfg.nullable(),
- DefaultValueProvider.forValueGenerator(DefaultValueGenerator.valueOf(functionCall.functionName())));
- default:
- throw new IllegalStateException("Unknown type " + colCfg.defaultValueDefinition().type());
- }
- }
-
- /**
- * Build schema descriptor by table schema.
- *
- * @param schemaVer Schema version.
- * @param tblCfg Table schema.
- * @return SchemaDescriptor.
- */
- public static SchemaDescriptor convert(int schemaVer, TableDefinition tblCfg) {
- Set<String> keyColumnsNames = tblCfg.keyColumns();
-
- List<Column> keyCols = new ArrayList<>(keyColumnsNames.size());
- List<Column> valCols = new ArrayList<>(tblCfg.columns().size() - keyColumnsNames.size());
-
- int idx = 0;
-
- for (ColumnDefinition col : tblCfg.columns()) {
- if (keyColumnsNames.contains(col.name())) {
- keyCols.add(convert(idx, col));
- } else {
- valCols.add(convert(idx, col));
- }
-
- idx++;
- }
-
- return new SchemaDescriptor(
- schemaVer,
- keyCols.toArray(Column[]::new),
- tblCfg.colocationColumns().toArray(String[]::new),
- valCols.toArray(Column[]::new));
- }
-
- /**
- * Constant value supplier.
- */
- private static class ConstantSupplier implements Supplier<Object> {
- /** Value. */
- private final Object val;
-
- /**
- * Constructor.
- *
- * @param val Value.
- */
- ConstantSupplier(Object val) {
- this.val = val;
- }
-
- /** {@inheritDoc} */
- @Override
- public Object get() {
- return val;
- }
- }
-}
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 df5531b221..95a09824a4 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
@@ -17,13 +17,20 @@
package org.apache.ignite.internal.schema.configuration;
+import static org.apache.ignite.internal.util.ArrayUtils.nullOrEmpty;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import org.apache.ignite.configuration.NamedListView;
import org.apache.ignite.configuration.schemas.table.TableValidator;
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.TableDefinitionImpl;
/**
* Table schema configuration validator implementation.
@@ -37,19 +44,69 @@ public class TableValidatorImpl implements Validator<TableValidator, NamedListVi
public void validate(TableValidator annotation, ValidationContext<NamedListView<TableView>> ctx) {
NamedListView<TableView> newTables = ctx.getNewValue();
- for (String tableName : newTables.namedListKeys()) {
+ for (String tableName : newKeys(ctx.getOldValue(), ctx.getNewValue())) {
TableView newTable = newTables.get(tableName);
- try {
- TableDefinitionImpl tbl = SchemaConfigurationConverter.convert(newTable);
+ if (newTable.columns() == null || newTable.columns().size() == 0) {
+ ctx.addIssue(new ValidationIssue(newTable.name(), "Table should include at least one column"));
+
+ // no further validation required
+ return;
+ }
+
+ Set<String> columnsDups = findDuplicates(newTable.columns().namedListKeys());
+
+ if (!columnsDups.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(newTable.name(),
+ "Some columns are specified more than once [duplicates=" + new HashSet<>(columnsDups) + "]"));
+ }
+
+ Set<String> columns = new HashSet<>(newTable.columns().namedListKeys());
+
+ if (newTable.primaryKey() == null || nullOrEmpty(newTable.primaryKey().columns())) {
+ ctx.addIssue(new ValidationIssue(newTable.name(), "Table without primary key is not supported"));
+
+ // no further validation required
+ return;
+ }
+
+ List<String> pkColumns = Arrays.asList(newTable.primaryKey().columns());
+
+ if (!columns.containsAll(pkColumns)) {
+ Set<String> missingColumns = new HashSet<>(pkColumns);
+
+ missingColumns.removeAll(columns);
+
+ ctx.addIssue(new ValidationIssue(newTable.name(), "Columns don't exists [columns=" + missingColumns + "]"));
+ }
+
+ Set<String> pkDups = findDuplicates(pkColumns);
+ if (!pkDups.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(newTable.name(),
+ "Primary key contains duplicated columns [duplicates=" + pkDups + "]"));
+ }
+
+ if (nullOrEmpty(newTable.primaryKey().colocationColumns())) {
+ ctx.addIssue(new ValidationIssue(newTable.name(), "Colocation columns must be specified"));
- assert !tbl.keyColumns().isEmpty();
- assert !tbl.colocationColumns().isEmpty();
- } catch (IllegalArgumentException e) {
- ctx.addIssue(new ValidationIssue(
- ctx.currentKey(),
- "Validator works success by key " + ctx.currentKey() + ". Found "
- + newTable.columns().size() + " columns"));
+ // no further validation required
+ return;
+ }
+
+ Set<String> outstandingColumns = new HashSet<>(Arrays.asList(newTable.primaryKey().colocationColumns()));
+
+ outstandingColumns.removeAll(Arrays.asList(newTable.primaryKey().columns()));
+
+ if (!outstandingColumns.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(newTable.name(),
+ "Colocation columns must be subset of primary key [outstandingColumns=" + outstandingColumns + "]"));
+ }
+
+ Set<String> colocationDups = findDuplicates(Arrays.asList(newTable.primaryKey().colocationColumns()));
+
+ if (!colocationDups.isEmpty()) {
+ ctx.addIssue(new ValidationIssue(newTable.name(),
+ "Colocation columns contains duplicates [duplicates=" + colocationDups + "]"));
}
}
}
@@ -57,4 +114,27 @@ public class TableValidatorImpl implements Validator<TableValidator, NamedListVi
/** Private constructor. */
private TableValidatorImpl() {
}
+
+ private List<String> newKeys(NamedListView<?> before, NamedListView<?> after) {
+ List<String> result = new ArrayList<>(after.namedListKeys());
+
+ if (before != null) {
+ result.removeAll(before.namedListKeys());
+ }
+
+ return result;
+ }
+
+ private Set<String> findDuplicates(Collection<String> collection) {
+ Set<String> used = new HashSet<>();
+ Set<String> result = new HashSet<>();
+
+ for (String element : collection) {
+ if (!used.add(element)) {
+ result.add(element);
+ }
+ }
+
+ return result;
+ }
}
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ValueSerializationHelper.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ValueSerializationHelper.java
new file mode 100644
index 0000000000..5ebcf5e94a
--- /dev/null
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/ValueSerializationHelper.java
@@ -0,0 +1,129 @@
+/*
+ * 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.configuration;
+
+import static java.math.RoundingMode.HALF_UP;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.BitSet;
+import java.util.Objects;
+import java.util.UUID;
+import org.apache.ignite.internal.schema.DecimalNativeType;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.util.IgniteUtils;
+
+/**
+ * Utility class to convert object to and from human readable string representation.
+ */
+public final class ValueSerializationHelper {
+ /**
+ * Converts value to a string representation.
+ *
+ * @param defaultValue Value to convert.
+ * @param type Type of the value.
+ * @return String representation of given value.
+ * @throws NullPointerException If given value or type is null.
+ */
+ public static String toString(Object defaultValue, NativeType type) {
+ Objects.requireNonNull(defaultValue, "defaultValue");
+ Objects.requireNonNull(type, "type");
+
+ switch (type.spec()) {
+ case INT8:
+ case INT16:
+ case INT32:
+ case INT64:
+ case FLOAT:
+ case DOUBLE:
+ case DECIMAL:
+ case DATE:
+ case TIME:
+ case DATETIME:
+ case TIMESTAMP:
+ case NUMBER:
+ case STRING:
+ case UUID:
+ return defaultValue.toString();
+ case BYTES:
+ return IgniteUtils.toHexString((byte[]) defaultValue);
+ case BITMASK:
+ return IgniteUtils.toHexString(((BitSet) defaultValue).toByteArray());
+ default:
+ throw new IllegalStateException("Unknown type [type=" + type + ']');
+ }
+ }
+
+ /**
+ * Converts value from a string representation.
+ *
+ * @param defaultValue String representation of a value.
+ * @param type Type of the value.
+ * @return Restored value.
+ * @throws NullPointerException If given value or type is null.
+ */
+ public static Object fromString(String defaultValue, NativeType type) {
+ Objects.requireNonNull(defaultValue, "defaultValue");
+ Objects.requireNonNull(type, "type");
+
+ switch (type.spec()) {
+ case INT8:
+ return Byte.parseByte(defaultValue);
+ case INT16:
+ return Short.parseShort(defaultValue);
+ case INT32:
+ return Integer.parseInt(defaultValue);
+ case INT64:
+ return Long.parseLong(defaultValue);
+ case FLOAT:
+ return Float.parseFloat(defaultValue);
+ case DOUBLE:
+ return Double.parseDouble(defaultValue);
+ case DECIMAL:
+ assert type instanceof DecimalNativeType;
+
+ return new BigDecimal(defaultValue).setScale(((DecimalNativeType) type).scale(), HALF_UP);
+ case DATE:
+ return LocalDate.parse(defaultValue);
+ case TIME:
+ return LocalTime.parse(defaultValue);
+ case DATETIME:
+ return LocalDateTime.parse(defaultValue);
+ case TIMESTAMP:
+ return Instant.parse(defaultValue);
+ case NUMBER:
+ return new BigInteger(defaultValue);
+ case STRING:
+ return defaultValue;
+ case UUID:
+ return UUID.fromString(defaultValue);
+ case BYTES:
+ return IgniteUtils.fromHexString(defaultValue);
+ case BITMASK:
+ return BitSet.valueOf(IgniteUtils.fromHexString(defaultValue));
+ default:
+ throw new IllegalStateException("Unknown type [type=" + type + ']');
+ }
+ }
+
+ private ValueSerializationHelper() { }
+}
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
deleted file mode 100644
index e88329cb07..0000000000
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/SchemaValidationUtils.java
+++ /dev/null
@@ -1,116 +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.definition;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.apache.ignite.configuration.schemas.table.HashIndexView;
-import org.apache.ignite.configuration.schemas.table.SortedIndexView;
-import org.apache.ignite.configuration.schemas.table.TableIndexView;
-import org.apache.ignite.internal.util.CollectionUtils;
-import org.apache.ignite.lang.ErrorGroups;
-import org.apache.ignite.lang.ErrorGroups.Table;
-import org.apache.ignite.lang.IgniteInternalException;
-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 indexes.
- *
- * @param index Table index.
- * @param colNames Table column names.
- * @param colocationColNames Colocation columns names.
- */
- public static void validateIndexes(
- IndexDefinition index,
- Collection<String> colNames,
- List<String> colocationColNames) {
- assert index 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) index;
-
- 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.");
- }
- }
-
- /**
- * Validate index enlisted columns.
- *
- * @param indexView Index info.
- * @param tableColumns Table column names.
- */
- public static void validateColumns(TableIndexView indexView, Set<String> tableColumns) {
- if (indexView instanceof SortedIndexView) {
- var sortedIndexView = (SortedIndexView) indexView;
-
- validateColumns(sortedIndexView.columns().namedListKeys(), tableColumns);
- } else if (indexView instanceof HashIndexView) {
- validateColumns(Arrays.asList(((HashIndexView) indexView).columnNames()), tableColumns);
- } else {
- throw new AssertionError("Unknown index type [type=" + (indexView != null ? indexView.getClass() : null) + ']');
- }
- }
-
- private static void validateColumns(Iterable<String> indexedColumns, Set<String> tableColumns) {
- if (CollectionUtils.nullOrEmpty(indexedColumns)) {
- throw new IgniteInternalException(
- ErrorGroups.Index.INVALID_INDEX_DEFINITION_ERR,
- "At least one column should be specified by index definition"
- );
- }
-
- for (var columnName : indexedColumns) {
- if (!tableColumns.contains(columnName)) {
- throw new IgniteInternalException(
- Table.COLUMN_NOT_FOUND_ERR,
- "Column not found [name=" + columnName + ']'
- );
- }
- }
- }
-}
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
index 0330cbd7fe..06a771672d 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
+++ b/modules/schema/src/main/java/org/apache/ignite/internal/schema/row/RowAssembler.java
@@ -546,7 +546,7 @@ public class RowAssembler {
* @throws SchemaMismatchException If a value doesn't match the current column type.
*/
public RowAssembler appendString(String val) throws SchemaMismatchException {
- checkType(NativeTypes.STRING);
+ checkType(NativeTypeSpec.STRING);
try {
final int written = buf.putString(curOff, val, encoder());
@@ -571,7 +571,7 @@ public class RowAssembler {
* @throws SchemaMismatchException If a value doesn't match the current column type.
*/
public RowAssembler appendBytes(byte[] val) throws SchemaMismatchException {
- checkType(NativeTypes.BYTES);
+ checkType(NativeTypeSpec.BYTES);
buf.putBytes(curOff, val);
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/NativeTypeTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/NativeTypeTest.java
index 55294c0006..acd3ef4fc4 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/NativeTypeTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/NativeTypeTest.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.schema;
import static org.apache.ignite.internal.schema.NativeTypes.BYTES;
import static org.apache.ignite.internal.schema.NativeTypes.DATE;
-import static org.apache.ignite.internal.schema.NativeTypes.DOUBLE;
import static org.apache.ignite.internal.schema.NativeTypes.FLOAT;
import static org.apache.ignite.internal.schema.NativeTypes.INT16;
import static org.apache.ignite.internal.schema.NativeTypes.INT32;
@@ -27,20 +26,13 @@ import static org.apache.ignite.internal.schema.NativeTypes.INT64;
import static org.apache.ignite.internal.schema.NativeTypes.INT8;
import static org.apache.ignite.internal.schema.NativeTypes.STRING;
import static org.apache.ignite.internal.schema.NativeTypes.UUID;
-import static org.apache.ignite.internal.schema.NativeTypes.bitmaskOf;
-import static org.apache.ignite.internal.schema.NativeTypes.blobOf;
import static org.apache.ignite.internal.schema.NativeTypes.datetime;
-import static org.apache.ignite.internal.schema.NativeTypes.decimalOf;
-import static org.apache.ignite.internal.schema.NativeTypes.numberOf;
-import static org.apache.ignite.internal.schema.NativeTypes.stringOf;
import static org.apache.ignite.internal.schema.NativeTypes.time;
import static org.apache.ignite.internal.schema.NativeTypes.timestamp;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import org.apache.ignite.internal.schema.configuration.SchemaDescriptorConverter;
-import org.apache.ignite.schema.definition.ColumnType;
import org.junit.jupiter.api.Test;
/**
@@ -156,43 +148,4 @@ public class NativeTypeTest {
public void compareVarlenTypesByDesc() {
assertTrue(BYTES.compareTo(STRING) < 0);
}
-
- /**
- * CreateNativeTypeFromColumnType.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
- */
- @Test
- public void createNativeTypeFromColumnType() {
- assertEquals(INT8, from(ColumnType.INT8));
- assertEquals(INT16, from(ColumnType.INT16));
- assertEquals(INT32, from(ColumnType.INT32));
- assertEquals(INT64, from(ColumnType.INT64));
- assertEquals(FLOAT, from(ColumnType.FLOAT));
- assertEquals(DOUBLE, from(ColumnType.DOUBLE));
- assertEquals(DATE, from(ColumnType.DATE));
- assertEquals(BYTES, from(ColumnType.blob()));
- assertEquals(STRING, from(ColumnType.string()));
-
- assertEquals(time(), from(ColumnType.time(ColumnType.TemporalColumnType.DEFAULT_TIME_PRECISION)));
- assertEquals(datetime(), from(ColumnType.datetime(ColumnType.TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION)));
- assertEquals(timestamp(), from(ColumnType.timestamp(ColumnType.TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION)));
-
- for (int i = 1; i < 800; i += 100) {
- assertEquals(blobOf(i), from(ColumnType.blobOf(i)));
- assertEquals(stringOf(i), from(ColumnType.stringOf(i)));
- assertEquals(bitmaskOf(i), from(ColumnType.bitmaskOf(i)));
- assertEquals(numberOf(i), from(ColumnType.numberOf(i)));
- assertEquals(decimalOf(i, i), from(ColumnType.decimalOf(i, i)));
- }
-
- for (int i = 0; i <= 9; i++) {
- assertEquals(time(i), from(ColumnType.time(i)));
- assertEquals(datetime(i), from(ColumnType.datetime(i)));
- assertEquals(timestamp(i), from(ColumnType.timestamp(i)));
- }
- }
-
- private NativeType from(ColumnType colType) {
- return SchemaDescriptorConverter.convert(colType);
- }
}
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 64a9748f34..0d9c3f57c9 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
@@ -27,8 +27,8 @@ import org.apache.ignite.internal.schema.testutils.builder.HashIndexDefinitionBu
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.SchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.SchemaObject;
import org.junit.jupiter.api.Test;
/**
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/TemporalTypesTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/TemporalTypesTest.java
index bf61ab6b66..2aa432d4a4 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/TemporalTypesTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/TemporalTypesTest.java
@@ -24,7 +24,7 @@ import java.time.LocalDate;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import org.apache.ignite.internal.schema.row.TemporalTypesHelper;
-import org.apache.ignite.schema.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.junit.jupiter.api.Test;
/**
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 aed110db1f..c679876796 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
@@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
import java.time.LocalDate;
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.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition.ConstantValue;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition.DefaultValueType;
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 2a2174b156..78c95e1815 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
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.Collections;
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.apache.ignite.internal.schema.testutils.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 66d83e4825..e716d6ffef 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
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.List;
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.internal.schema.testutils.definition.PrimaryKeyDefinition;
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 079257231c..46712c3cd2 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
@@ -22,8 +22,8 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
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.apache.ignite.internal.schema.testutils.definition.index.SortOrder;
+import org.apache.ignite.internal.schema.testutils.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 ed720e1bca..c5f0688d22 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
@@ -21,8 +21,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
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.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.junit.jupiter.api.Test;
/**
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractSchemaConverterTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractSchemaConverterTest.java
index 99a60b0b0f..adc0a00ae8 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractSchemaConverterTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractSchemaConverterTest.java
@@ -35,45 +35,47 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import org.apache.ignite.internal.schema.DecimalNativeType;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypeSpec;
+import org.apache.ignite.internal.schema.NativeTypes;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType.DecimalColumnType;
import org.apache.ignite.internal.util.ArrayUtils;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.ColumnType.ColumnTypeSpec;
-import org.apache.ignite.schema.definition.ColumnType.DecimalColumnType;
/**
* Abstract class for schema converter tests.
*/
public class AbstractSchemaConverterTest {
- protected static final Map<ColumnTypeSpec, List<Object>> DEFAULT_VALUES_TO_TEST;
+ protected static final Map<NativeTypeSpec, List<Object>> DEFAULT_VALUES_TO_TEST;
static {
- var tmp = new HashMap<ColumnTypeSpec, List<Object>>();
+ var tmp = new HashMap<NativeTypeSpec, List<Object>>();
- tmp.put(ColumnTypeSpec.INT8, Arrays.asList(null, Byte.MIN_VALUE, Byte.MAX_VALUE, (byte) 14));
- tmp.put(ColumnTypeSpec.INT16, Arrays.asList(null, Short.MIN_VALUE, Short.MAX_VALUE, (short) 14));
- tmp.put(ColumnTypeSpec.INT32, Arrays.asList(null, Integer.MIN_VALUE, Integer.MAX_VALUE, 14));
- tmp.put(ColumnTypeSpec.INT64, Arrays.asList(null, Long.MIN_VALUE, Long.MAX_VALUE, 14L));
- tmp.put(ColumnTypeSpec.FLOAT, Arrays.asList(null, Float.MIN_VALUE, Float.MAX_VALUE, Float.NaN,
+ tmp.put(NativeTypeSpec.INT8, Arrays.asList(null, Byte.MIN_VALUE, Byte.MAX_VALUE, (byte) 14));
+ tmp.put(NativeTypeSpec.INT16, Arrays.asList(null, Short.MIN_VALUE, Short.MAX_VALUE, (short) 14));
+ tmp.put(NativeTypeSpec.INT32, Arrays.asList(null, Integer.MIN_VALUE, Integer.MAX_VALUE, 14));
+ tmp.put(NativeTypeSpec.INT64, Arrays.asList(null, Long.MIN_VALUE, Long.MAX_VALUE, 14L));
+ tmp.put(NativeTypeSpec.FLOAT, Arrays.asList(null, Float.MIN_VALUE, Float.MAX_VALUE, Float.NaN,
Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, 14.14f));
- tmp.put(ColumnTypeSpec.DOUBLE, Arrays.asList(null, Double.MIN_VALUE, Double.MAX_VALUE, Double.NaN,
+ tmp.put(NativeTypeSpec.DOUBLE, Arrays.asList(null, Double.MIN_VALUE, Double.MAX_VALUE, Double.NaN,
Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY, 14.14));
- tmp.put(ColumnTypeSpec.DECIMAL, Arrays.asList(null, BigDecimal.ONE, BigDecimal.ZERO, BigDecimal.valueOf(Long.MIN_VALUE),
+ tmp.put(NativeTypeSpec.DECIMAL, Arrays.asList(null, BigDecimal.ONE, BigDecimal.ZERO, BigDecimal.valueOf(Long.MIN_VALUE),
BigDecimal.valueOf(Long.MAX_VALUE), new BigDecimal("10000000000000000000000000000000000000")));
- tmp.put(ColumnTypeSpec.DATE, Arrays.asList(null, LocalDate.MIN, LocalDate.MAX, LocalDate.EPOCH, LocalDate.now()));
- tmp.put(ColumnTypeSpec.TIME, Arrays.asList(null, LocalTime.MIN, LocalTime.MAX, LocalTime.MIDNIGHT,
+ tmp.put(NativeTypeSpec.DATE, Arrays.asList(null, LocalDate.MIN, LocalDate.MAX, LocalDate.EPOCH, LocalDate.now()));
+ tmp.put(NativeTypeSpec.TIME, Arrays.asList(null, LocalTime.MIN, LocalTime.MAX, LocalTime.MIDNIGHT,
LocalTime.NOON, LocalTime.now()));
- tmp.put(ColumnTypeSpec.DATETIME, Arrays.asList(null, LocalDateTime.MIN, LocalDateTime.MAX, LocalDateTime.now()));
- tmp.put(ColumnTypeSpec.TIMESTAMP, Arrays.asList(null, Instant.MIN, Instant.MAX, Instant.EPOCH, Instant.now()));
- tmp.put(ColumnTypeSpec.UUID, Arrays.asList(null, UUID.randomUUID()));
- tmp.put(ColumnTypeSpec.BITMASK, Arrays.asList(null, fromBinString(""), fromBinString("1"),
+ tmp.put(NativeTypeSpec.DATETIME, Arrays.asList(null, LocalDateTime.MIN, LocalDateTime.MAX, LocalDateTime.now()));
+ tmp.put(NativeTypeSpec.TIMESTAMP, Arrays.asList(null, Instant.MIN, Instant.MAX, Instant.EPOCH, Instant.now()));
+ tmp.put(NativeTypeSpec.UUID, Arrays.asList(null, UUID.randomUUID()));
+ tmp.put(NativeTypeSpec.BITMASK, Arrays.asList(null, fromBinString(""), fromBinString("1"),
fromBinString("10101010101010101010101")));
- tmp.put(ColumnTypeSpec.STRING, Arrays.asList(null, "", UUID.randomUUID().toString()));
- tmp.put(ColumnTypeSpec.BLOB, Arrays.asList(null, ArrayUtils.BYTE_EMPTY_ARRAY,
+ tmp.put(NativeTypeSpec.STRING, Arrays.asList(null, "", UUID.randomUUID().toString()));
+ tmp.put(NativeTypeSpec.BYTES, Arrays.asList(null, ArrayUtils.BYTE_EMPTY_ARRAY,
UUID.randomUUID().toString().getBytes(StandardCharsets.UTF_8)));
- tmp.put(ColumnTypeSpec.NUMBER, Arrays.asList(null, BigInteger.ONE, BigInteger.ZERO,
+ tmp.put(NativeTypeSpec.NUMBER, Arrays.asList(null, BigInteger.ONE, BigInteger.ZERO,
new BigInteger("10000000000000000000000000000000000000")));
- var missedTypes = new HashSet<>(Arrays.asList(ColumnTypeSpec.values()));
+ var missedTypes = new HashSet<>(Arrays.asList(NativeTypeSpec.values()));
missedTypes.removeAll(tmp.keySet());
@@ -117,41 +119,41 @@ public class AbstractSchemaConverterTest {
return val;
}
- /** Creates a column type from given type spec. */
- protected static ColumnType specToType(ColumnTypeSpec spec) {
+ /** Creates a native type from given type spec. */
+ protected static NativeType specToType(NativeTypeSpec spec) {
switch (spec) {
case INT8:
- return ColumnType.INT8;
+ return NativeTypes.INT8;
case INT16:
- return ColumnType.INT16;
+ return NativeTypes.INT16;
case INT32:
- return ColumnType.INT32;
+ return NativeTypes.INT32;
case INT64:
- return ColumnType.INT64;
+ return NativeTypes.INT64;
case FLOAT:
- return ColumnType.FLOAT;
+ return NativeTypes.FLOAT;
case DOUBLE:
- return ColumnType.DOUBLE;
+ return NativeTypes.DOUBLE;
case DECIMAL:
- return ColumnType.decimal();
+ return NativeTypes.decimalOf(10, 3);
case DATE:
- return ColumnType.DATE;
+ return NativeTypes.DATE;
case TIME:
- return ColumnType.time();
+ return NativeTypes.time();
case DATETIME:
- return ColumnType.datetime();
+ return NativeTypes.datetime();
case TIMESTAMP:
- return ColumnType.timestamp();
+ return NativeTypes.timestamp();
case NUMBER:
- return ColumnType.number();
+ return NativeTypes.numberOf(DecimalNativeType.DEFAULT_PRECISION);
case STRING:
- return ColumnType.string();
+ return NativeTypes.stringOf(8);
case UUID:
- return ColumnType.UUID;
- case BLOB:
- return ColumnType.blob();
+ return NativeTypes.UUID;
+ case BYTES:
+ return NativeTypes.blobOf(8);
case BITMASK:
- return ColumnType.bitmaskOf(10);
+ return NativeTypes.bitmaskOf(10);
default:
throw new IllegalStateException("Unknown type spec [spec=" + spec + ']');
}
@@ -179,7 +181,7 @@ public class AbstractSchemaConverterTest {
* Class represents a default value of particular type.
*/
protected static class DefaultValueArg {
- final ColumnType type;
+ final NativeType type;
final Object defaultValue;
/**
@@ -188,14 +190,14 @@ public class AbstractSchemaConverterTest {
* @param type Type of the value
* @param defaultValue value itself.
*/
- public DefaultValueArg(ColumnType type, Object defaultValue) {
+ public DefaultValueArg(NativeType type, Object defaultValue) {
this.type = type;
this.defaultValue = defaultValue;
}
@Override
public String toString() {
- return type.typeSpec() + ": " + AbstractSchemaConverterTest.toString(defaultValue);
+ return type.spec() + ": " + AbstractSchemaConverterTest.toString(defaultValue);
}
}
}
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractTableIndexValidatorTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractTableIndexValidatorTest.java
index b82510f4a8..9aa0096a05 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractTableIndexValidatorTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/AbstractTableIndexValidatorTest.java
@@ -29,10 +29,11 @@ import org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfiguratio
import org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.schema.configuration.schema.TestDataStorageConfigurationSchema;
+import org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter;
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.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverterTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverterTest.java
new file mode 100644
index 0000000000..a1c1bbc11f
--- /dev/null
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/ConfigurationToSchemaDescriptorConverterTest.java
@@ -0,0 +1,308 @@
+/*
+ * 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.configuration;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+import java.util.ArrayList;
+import org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
+import org.apache.ignite.configuration.schemas.table.ColumnDefaultConfigurationSchema;
+import org.apache.ignite.configuration.schemas.table.ColumnDefaultView;
+import org.apache.ignite.configuration.schemas.table.ColumnTypeView;
+import org.apache.ignite.configuration.schemas.table.ColumnView;
+import org.apache.ignite.configuration.schemas.table.ConstantValueDefaultView;
+import org.apache.ignite.configuration.schemas.table.FunctionCallDefaultView;
+import org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
+import org.apache.ignite.configuration.schemas.table.NullValueDefaultView;
+import org.apache.ignite.configuration.schemas.table.TableConfiguration;
+import org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
+import org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
+import org.apache.ignite.internal.schema.BitmaskNativeType;
+import org.apache.ignite.internal.schema.Column;
+import org.apache.ignite.internal.schema.DecimalNativeType;
+import org.apache.ignite.internal.schema.DefaultValueProvider.FunctionalValueProvider;
+import org.apache.ignite.internal.schema.DefaultValueProvider.Type;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypeSpec;
+import org.apache.ignite.internal.schema.NativeTypes;
+import org.apache.ignite.internal.schema.NumberNativeType;
+import org.apache.ignite.internal.schema.SchemaDescriptor;
+import org.apache.ignite.internal.schema.TemporalNativeType;
+import org.apache.ignite.internal.schema.VarlenNativeType;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueGenerators;
+import org.jetbrains.annotations.Nullable;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.MethodSource;
+
+/**
+ * Tests to verify conversion from configuration views to schema objects.
+ */
+@ExtendWith(ConfigurationExtension.class)
+public class ConfigurationToSchemaDescriptorConverterTest extends AbstractSchemaConverterTest {
+ private static final int TEST_LENGTH = 15;
+
+ private static final int TEST_PRECISION = 8;
+
+ private static final int TEST_SCALE = 5;
+
+ @ParameterizedTest
+ @EnumSource(value = NativeTypeSpec.class)
+ public void convertColumnTypeView(NativeTypeSpec typeSpec) {
+ ColumnTypeView typeView = TestColumnTypeView.forSpec(typeSpec);
+
+ NativeType type = ConfigurationToSchemaDescriptorConverter.convert(typeView);
+
+ assertThat(type.spec().name(), equalTo(typeView.type()));
+
+ if (type instanceof VarlenNativeType) {
+ assertThat(((VarlenNativeType) type).length(), equalTo(TEST_LENGTH));
+ } else if (type instanceof NumberNativeType) {
+ assertThat(((NumberNativeType) type).precision(), equalTo(typeView.precision()));
+ } else if (type instanceof DecimalNativeType) {
+ assertThat(((DecimalNativeType) type).precision(), equalTo(typeView.precision()));
+ assertThat(((DecimalNativeType) type).scale(), equalTo(typeView.scale()));
+ } else if (type instanceof TemporalNativeType) {
+ assertThat(((TemporalNativeType) type).precision(), equalTo(typeView.precision()));
+ } else if (type instanceof BitmaskNativeType) {
+ assertThat(((BitmaskNativeType) type).bits(), equalTo(TEST_LENGTH));
+ } else {
+ assertThat("Unknown type: " + type.getClass(), type.getClass(), equalTo(NativeType.class));
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("generateTestArguments")
+ public void convertColumnViewConstantDefault(DefaultValueArg arg) {
+ String columnName = arg.type.spec().name();
+ ColumnTypeView typeView = TestColumnTypeView.forType(arg.type);
+ ColumnDefaultView defaultValueView = createViewForValue(arg.type, arg.defaultValue);
+ ColumnView columnView = new TestColumnView(columnName, typeView, defaultValueView);
+
+ Column column = ConfigurationToSchemaDescriptorConverter.convert(0, columnView);
+
+ assertThat(column.name(), equalTo(columnName));
+ assertThat(column.type(), equalTo(arg.type));
+ assertThat(column.nullable(), equalTo(arg.defaultValue == null));
+ assertThat(column.defaultValueProvider().type(), equalTo(Type.CONSTANT));
+ assertThat(column.defaultValue(), equalTo(arg.defaultValue));
+ }
+
+ @Test
+ public void convertColumnViewFunctionalDefault() {
+ String columnName = "UUID";
+ String functionName = DefaultValueGenerators.GEN_RANDOM_UUID;
+ ColumnTypeView typeView = TestColumnTypeView.forSpec(NativeTypeSpec.UUID);
+ ColumnDefaultView defaultValueView = new TestFunctionCallDefaultView(functionName);
+ ColumnView columnView = new TestColumnView(columnName, typeView, defaultValueView);
+
+ Column column = ConfigurationToSchemaDescriptorConverter.convert(0, columnView);
+
+ assertThat(column.name(), equalTo(columnName));
+ assertThat(column.type(), equalTo(NativeTypes.UUID));
+ assertThat(column.defaultValueProvider().type(), equalTo(Type.FUNCTIONAL));
+ assertThat(((FunctionalValueProvider) column.defaultValueProvider()).name(), equalTo(functionName));
+ }
+
+ @Test
+ public void convertTableView(@InjectConfiguration(
+ polymorphicExtensions = {
+ UnknownDataStorageConfigurationSchema.class,
+ NullValueDefaultConfigurationSchema.class,
+ UnlimitedBudgetConfigurationSchema.class
+ },
+ value = "mock {"
+ + "primaryKey {columns=[K1, K2], colocationColumns=[K2]},"
+ + "columns: ["
+ + " {name=C1, type.type=INT32},"
+ + " {name=K2, type.type=INT32},"
+ + " {name=C2, type.type=INT32},"
+ + " {name=K1, type.type=INT32},"
+ + "]"
+ + "}"
+ ) TableConfiguration tableConfiguration) {
+ SchemaDescriptor schema = ConfigurationToSchemaDescriptorConverter.convert(1, tableConfiguration.value());
+
+ assertThat(schema.keyColumns().length(), equalTo(2));
+ assertThat(schema.keyColumns().column(0).name(), equalTo("K1"));
+ assertThat(schema.keyColumns().column(1).name(), equalTo("K2"));
+ assertThat(schema.valueColumns().length(), equalTo(2));
+ assertThat(schema.valueColumns().column(0).name(), equalTo("C1"));
+ assertThat(schema.valueColumns().column(1).name(), equalTo("C2"));
+ assertThat(schema.colocationColumns().length, equalTo(1));
+ assertThat(schema.colocationColumns()[0].name(), equalTo("K2"));
+ }
+
+ private static Iterable<DefaultValueArg> generateTestArguments() {
+ var paramList = new ArrayList<DefaultValueArg>();
+
+ for (var entry : DEFAULT_VALUES_TO_TEST.entrySet()) {
+ for (var defaultValue : entry.getValue()) {
+ paramList.add(
+ new DefaultValueArg(specToType(entry.getKey()), adjust(defaultValue))
+ );
+ }
+ }
+ return paramList;
+ }
+
+ private ColumnDefaultView createViewForValue(NativeType type, @Nullable Object value) {
+ if (value == null) {
+ return new TestNullValueDefaultView();
+ }
+
+ return new TestConstantValueDefaultView(ValueSerializationHelper.toString(value, type));
+ }
+
+ private static class TestColumnTypeView implements ColumnTypeView {
+ private final String typeName;
+
+ private final int length;
+
+ private final int precision;
+
+ private final int scale;
+
+ public static TestColumnTypeView forSpec(NativeTypeSpec spec) {
+ return new TestColumnTypeView(spec, TEST_LENGTH, TEST_PRECISION, TEST_SCALE);
+ }
+
+ public static TestColumnTypeView forType(NativeType type) {
+ int length = type instanceof VarlenNativeType ? ((VarlenNativeType) type).length()
+ : type instanceof BitmaskNativeType ? ((BitmaskNativeType) type).bits()
+ : 0;
+
+ int precision = type instanceof DecimalNativeType ? ((DecimalNativeType) type).precision()
+ : type instanceof NumberNativeType ? ((NumberNativeType) type).precision()
+ : type instanceof TemporalNativeType ? ((TemporalNativeType) type).precision()
+ : 0;
+
+ int scale = type instanceof DecimalNativeType ? ((DecimalNativeType) type).scale() : 0;
+
+ return new TestColumnTypeView(type.spec(), length, precision, scale);
+ }
+
+ private TestColumnTypeView(NativeTypeSpec spec, int length, int precision, int scale) {
+ this.typeName = spec.name();
+ this.length = length;
+ this.precision = precision;
+ this.scale = scale;
+ }
+
+ @Override
+ public String type() {
+ return typeName;
+ }
+
+ @Override
+ public int length() {
+ return length;
+ }
+
+ @Override
+ public int precision() {
+ return precision;
+ }
+
+ @Override
+ public int scale() {
+ return scale;
+ }
+ }
+
+ private static class TestColumnView implements ColumnView {
+ private final String name;
+
+ private final ColumnTypeView type;
+
+ private final ColumnDefaultView defaultValueView;
+
+ public TestColumnView(String name, ColumnTypeView type, ColumnDefaultView defaultValueView) {
+ this.name = name;
+ this.type = type;
+ this.defaultValueView = defaultValueView;
+ }
+
+ @Override
+ public String name() {
+ return name;
+ }
+
+ @Override
+ public ColumnTypeView type() {
+ return type;
+ }
+
+ @Override
+ public boolean nullable() {
+ return defaultValueView instanceof NullValueDefaultView;
+ }
+
+ @Override
+ public ColumnDefaultView defaultValueProvider() {
+ return defaultValueView;
+ }
+ }
+
+ private static class TestConstantValueDefaultView implements ConstantValueDefaultView {
+ private final String value;
+
+ public TestConstantValueDefaultView(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String type() {
+ return ColumnDefaultConfigurationSchema.CONSTANT_VALUE_TYPE;
+ }
+
+ @Override
+ public String defaultValue() {
+ return value;
+ }
+ }
+
+ private static class TestNullValueDefaultView implements NullValueDefaultView {
+ @Override
+ public String type() {
+ return ColumnDefaultConfigurationSchema.CONSTANT_VALUE_TYPE;
+ }
+ }
+
+ private static class TestFunctionCallDefaultView implements FunctionCallDefaultView {
+ private final String functionName;
+
+ public TestFunctionCallDefaultView(String functionName) {
+ this.functionName = functionName;
+ }
+
+ @Override
+ public String type() {
+ return ColumnDefaultConfigurationSchema.FUNCTION_CALL_TYPE;
+ }
+
+ @Override
+ public String functionName() {
+ return functionName;
+ }
+ }
+}
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImplTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImplTest.java
deleted file mode 100644
index e4dee1c6d3..0000000000
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/IndexValidatorImplTest.java
+++ /dev/null
@@ -1,69 +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.configuration;
-
-import static org.apache.ignite.internal.configuration.validation.TestValidationUtil.validate;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.List;
-import java.util.UUID;
-import org.apache.ignite.configuration.NamedConfigurationTree;
-import org.apache.ignite.configuration.NamedListView;
-import org.apache.ignite.configuration.schemas.table.HashIndexChange;
-import org.apache.ignite.configuration.schemas.table.IndexValidator;
-import org.apache.ignite.configuration.schemas.table.TableChange;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexView;
-import org.apache.ignite.configuration.schemas.table.TableView;
-import org.apache.ignite.configuration.schemas.table.TablesView;
-import org.apache.ignite.configuration.validation.ValidationContext;
-import org.apache.ignite.internal.configuration.NamedListConfiguration;
-import org.junit.jupiter.api.Test;
-
-/** Index validator tests. */
-public class IndexValidatorImplTest extends AbstractTableIndexValidatorTest {
- /** Tests that validator finds no issues in a simple valid configuration. */
- @Test
- public void testNoIssues() throws Exception {
- ValidationContext<NamedListView<TableIndexView>> ctxIdx = mock(ValidationContext.class);
-
- NamedConfigurationTree<TableConfiguration, TableView, TableChange> cfg0 = tablesCfg.tables();
-
- List<UUID> ids = ((NamedListConfiguration<TableConfiguration, ?, ?>) cfg0).internalIds();
-
- assertEquals(1, ids.size());
-
- UUID tableId = ids.get(0);
-
- TablesView oldRoot = tablesCfg.value();
-
- tablesCfg.indexes().change(c -> c.create("schema.idx", idxCng -> idxCng.convert(HashIndexChange.class)
- .changeColumnNames("ID2").changeTableId(tableId))).get();
-
- TablesView view = tablesCfg.value();
-
- when(ctxIdx.getNewRoot(any())).thenReturn(view);
-
- when(ctxIdx.getOldRoot(any())).thenReturn(oldRoot);
-
- validate(IndexValidatorImpl.INSTANCE, mock(IndexValidator.class), ctxIdx, null);
- }
-}
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
deleted file mode 100644
index 45ecc1bbba..0000000000
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverterTest.java
+++ /dev/null
@@ -1,388 +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.configuration;
-
-import static org.apache.ignite.configuration.annotation.ConfigurationType.DISTRIBUTED;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.ExecutionException;
-import java.util.stream.Collectors;
-import org.apache.ignite.configuration.NamedConfigurationTree;
-import org.apache.ignite.configuration.schemas.store.UnknownDataStorageConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.ConstantValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.EntryCountBudgetConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.FunctionCallDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.HashIndexConfiguration;
-import org.apache.ignite.configuration.schemas.table.HashIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.IndexValidator;
-import org.apache.ignite.configuration.schemas.table.NullValueDefaultConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.SortedIndexConfigurationSchema;
-import org.apache.ignite.configuration.schemas.table.SortedIndexView;
-import org.apache.ignite.configuration.schemas.table.TableChange;
-import org.apache.ignite.configuration.schemas.table.TableConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexChange;
-import org.apache.ignite.configuration.schemas.table.TableIndexConfiguration;
-import org.apache.ignite.configuration.schemas.table.TableIndexView;
-import org.apache.ignite.configuration.schemas.table.TableValidator;
-import org.apache.ignite.configuration.schemas.table.TableView;
-import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
-import org.apache.ignite.configuration.schemas.table.UnlimitedBudgetConfigurationSchema;
-import org.apache.ignite.internal.configuration.ConfigurationRegistry;
-import org.apache.ignite.internal.configuration.NamedListConfiguration;
-import org.apache.ignite.internal.configuration.storage.TestConfigurationStorage;
-import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
-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.index.HashIndexDefinition;
-import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.SortOrder;
-import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-
-/**
- * SchemaConfigurationConverter tests.
- */
-@SuppressWarnings("InstanceVariableMayNotBeInitialized")
-public class SchemaConfigurationConverterTest extends AbstractSchemaConverterTest {
- /** Table builder. */
- private TableDefinitionBuilder tblBuilder;
-
- /** Configuration registry with one table for each test. */
- private ConfigurationRegistry confRegistry;
-
- /** Registered table id. */
- private UUID tableId;
-
- /**
- * Prepare configuration registry for test.
- *
- * @throws ExecutionException If failed.
- * @throws InterruptedException If failed.
- */
- @BeforeEach
- public void createRegistry() throws Exception {
- confRegistry = new ConfigurationRegistry(
- List.of(TablesConfiguration.KEY),
- Map.of(TableValidator.class, Set.of(TableValidatorImpl.INSTANCE),
- IndexValidator.class, Set.of(IndexValidatorImpl.INSTANCE)),
- new TestConfigurationStorage(DISTRIBUTED),
- List.of(),
- List.of(
- HashIndexConfigurationSchema.class,
- SortedIndexConfigurationSchema.class,
-
- UnknownDataStorageConfigurationSchema.class,
- ConstantValueDefaultConfigurationSchema.class,
- FunctionCallDefaultConfigurationSchema.class,
- NullValueDefaultConfigurationSchema.class,
- UnlimitedBudgetConfigurationSchema.class,
- EntryCountBudgetConfigurationSchema.class
- )
- );
-
- confRegistry.start();
-
- tblBuilder = SchemaBuilders.tableBuilder("SNAME", "TNAME")
- .columns(
- SchemaBuilders.column("COL1", ColumnType.DOUBLE).build(),
- SchemaBuilders.column("COL2", ColumnType.DOUBLE).build(),
- SchemaBuilders.column("A", ColumnType.INT8).build(),
- SchemaBuilders.column("B", ColumnType.INT8).build(),
- SchemaBuilders.column("C", ColumnType.INT8).build()
- ).withPrimaryKey("COL1");
-
- TableDefinition tbl = tblBuilder.build();
-
- confRegistry.getConfiguration(TablesConfiguration.KEY).change(
- ch -> SchemaConfigurationConverter.createTable(tbl, ch)
- .changeTables(
- tblsCh -> tblsCh.update(tbl.canonicalName(), tblCh -> tblCh.changeReplicas(1).changeTableId(1))
- )
- ).get();
-
- NamedConfigurationTree<TableConfiguration, TableView, TableChange> cfg0 = getConfiguration().tables();
-
- List<UUID> ids = ((NamedListConfiguration<TableConfiguration, ?, ?>) cfg0).internalIds();
-
- assertEquals(1, ids.size());
-
- tableId = ids.get(0);
- }
-
- @AfterEach
- void tearDown() throws Exception {
- confRegistry.stop();
- }
-
- /**
- * Add/remove HashIndex into configuration and read it back.
- */
- @Test
- public void testConvertHashIndex() throws Exception {
- HashIndexDefinitionBuilder builder = SchemaBuilders.hashIndex("testHI")
- .withColumns("A", "B", "C")
- .withHints(Collections.singletonMap("param", "value"));
- HashIndexDefinition idx = builder.build();
-
- getConfiguration().indexes().change(change -> change.create(idx.name(), ch ->
- SchemaConfigurationConverter.addIndex(idx, tableId, ch))).get();
-
- HashIndexConfiguration idxCfg = (HashIndexConfiguration) getConfiguration().indexes().get(idx.name());
-
- assertNotNull(idxCfg);
-
- assertEquals("HASH", idxCfg.type().value());
- assertEquals(3, idxCfg.columnNames().value().length);
- assertEquals(idxCfg.tableId().value(), tableId);
- }
-
- /**
- * Add/remove SortedIndex into configuration and read it back.
- */
- @Test
- public void testConvertSortedIndex() throws Exception {
- SortedIndexDefinitionBuilder builder = SchemaBuilders.sortedIndex("SIDX");
-
- builder.addIndexColumn("A").asc().done();
- builder.addIndexColumn("B").desc().done();
-
- SortedIndexDefinition idx = builder.build();
-
- NamedConfigurationTree<TableIndexConfiguration, TableIndexView, TableIndexChange> idxConfig = getConfiguration().indexes();
-
- idxConfig.change(change -> change.create(idx.name(), ch ->
- SchemaConfigurationConverter.addIndex(idx, tableId, ch))).get();;
-
- SortedIndexView idx2 = (SortedIndexView) idxConfig.get(idx.name()).value();
-
- assertNotNull(idx2);
- assertEquals("SORTED", idx2.type());
- assertEquals(2, idx2.columns().size());
- assertEquals("A", idx2.columns().get(0).name());
- assertEquals("B", idx2.columns().get(1).name());
- SortedIndexColumnDefinition col0 = SchemaConfigurationConverter.convert(idx2.columns().get(0));
- SortedIndexColumnDefinition col1 = SchemaConfigurationConverter.convert(idx2.columns().get(1));
- assertEquals(SortOrder.ASC, col0.sortOrder());
- assertEquals(SortOrder.DESC, col1.sortOrder());
- }
-
- /**
- * Add/remove index on primary key into configuration and read it back.
- */
- @Test
- public void testUniqIndex() throws Exception {
- SortedIndexDefinition idx = SchemaBuilders.sortedIndex("pk_sorted")
- .addIndexColumn("COL1").desc().done()
- .unique(true)
- .build();
-
- getConfiguration().indexes().change(change -> change.create(idx.name(), ch ->
- SchemaConfigurationConverter.addIndex(idx, tableId, ch))).get();
-
- SortedIndexView idx2 = (SortedIndexView) getConfiguration().indexes().get(idx.name()).value();
-
- assertNotNull(idx2);
- assertEquals("PK_SORTED", idx2.name());
- assertEquals("SORTED", idx2.type());
- assertEquals(idx.columns().stream().map(IndexColumnDefinition::name).collect(Collectors.toList()),
- new ArrayList<>(idx2.columns().namedListKeys()));
- assertTrue(idx2.uniq());
- }
-
- /**
- * Detect an index containing affinity key as unique one.
- */
- @Disabled("https://issues.apache.org/jira/browse/IGNITE-15483")
- @Test
- public void testUniqueIndexDetection() throws Exception {
- SortedIndexDefinition idx = SchemaBuilders.sortedIndex("uniq_sorted")
- .addIndexColumn("A").done()
- .addIndexColumn("COL1").desc().done()
- .build();
-
- getConfiguration().indexes().change(change -> change.create(idx.canonicalName(), ch ->
- SchemaConfigurationConverter.addIndex(idx, tableId, ch))).get();
-
- SortedIndexView idx2 = (SortedIndexView) getConfiguration().indexes().get(idx.name()).value();
-
- assertNotNull(idx2);
- assertEquals("uniq_sorted", idx2.name().toLowerCase(Locale.US));
- assertEquals("SORTED", idx2.type());
-
- assertTrue(idx2.uniq());
-
- assertEquals(2, idx2.columns().size());
- assertEquals("A", idx2.columns().get(0).name());
- assertEquals("COL1", idx2.columns().get(1).name());
- SortedIndexColumnDefinition col0 = SchemaConfigurationConverter.convert(idx2.columns().get(0));
- SortedIndexColumnDefinition col1 = SchemaConfigurationConverter.convert(idx2.columns().get(1));
- assertEquals(SortOrder.ASC, col0.sortOrder());
- assertEquals(SortOrder.DESC, col1.sortOrder());
- }
-
- /**
- * Add/remove table and read it back.
- */
- @Test
- public void testConvertTable() {
- TableDefinition tbl = tblBuilder.build();
-
- TableConfiguration tblCfg = confRegistry.getConfiguration(TablesConfiguration.KEY).tables().get(tbl.canonicalName());
-
- TableDefinition tbl2 = SchemaConfigurationConverter.convert(tblCfg);
-
- assertEquals(tbl.canonicalName(), tbl2.canonicalName());
- assertEquals(tbl.keyColumns().size(), tbl2.keyColumns().size());
- assertEquals(tbl.colocationColumns().size(), tbl2.colocationColumns().size());
- assertEquals(tbl.columns().size(), tbl2.columns().size());
- }
-
- /**
- * Validates conversion of functional default.
- */
- @Test
- public void convertFunctionalDefault() {
- final var keyColumnName = "KEY";
-
- TableDefinition tableDefinition = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(
- new ColumnDefinitionImpl(
- keyColumnName, ColumnType.string(), false,
- DefaultValueDefinition.functionCall(DefaultValueGenerators.GEN_RANDOM_UUID)
- ),
- SchemaBuilders.column("VAL", ColumnType.INT8).build()
- )
- .withPrimaryKey(keyColumnName)
- .build();
-
- confRegistry.getConfiguration(TablesConfiguration.KEY).change(
- ch -> SchemaConfigurationConverter.createTable(tableDefinition, ch)
- .changeTables(
- tblsCh -> tblsCh.update(tableDefinition.canonicalName(), tblCh -> tblCh.changeReplicas(1).changeTableId(1))
- )
- ).join();
-
- var tableConfiguration = confRegistry.getConfiguration(TablesConfiguration.KEY)
- .tables().get(tableDefinition.canonicalName());
-
- var columns = SchemaConfigurationConverter.convert(tableConfiguration.value()).columns();
-
- assertThat(columns, hasSize(2));
- assertThat(columns.get(0).name(), equalTo(keyColumnName));
- assertThat(columns.get(0).defaultValueDefinition(), instanceOf(FunctionCall.class));
- assertThat(((FunctionCall) columns.get(0).defaultValueDefinition()).functionName(),
- equalTo(DefaultValueGenerators.GEN_RANDOM_UUID));
- }
-
- /**
- * Ensures that column default are properly converted from definition to configuration and vice versa.
- *
- * @param arg Argument object describing default value to verify.
- */
- @ParameterizedTest
- @MethodSource("generateTestArguments")
- public void convertDefaults(DefaultValueArg arg) {
- final String keyColumnName = "ID";
-
- var columnName = arg.type.typeSpec().name();
-
- var tableDefinition = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(
- SchemaBuilders.column(keyColumnName, ColumnType.INT32).build(),
- SchemaBuilders.column(columnName, arg.type).withDefaultValue(arg.defaultValue).build()
- )
- .withPrimaryKey("ID")
- .build();
-
- confRegistry.getConfiguration(TablesConfiguration.KEY).change(
- ch -> SchemaConfigurationConverter.createTable(tableDefinition, ch)
- .changeTables(
- tblsCh -> tblsCh.update(tableDefinition.canonicalName(), tblCh -> tblCh.changeReplicas(1).changeTableId(1))
- )
- ).join();
-
- var tableConfiguration = confRegistry.getConfiguration(TablesConfiguration.KEY)
- .tables().get(tableDefinition.canonicalName());
-
- var columns = SchemaConfigurationConverter.convert(tableConfiguration.value()).columns();
-
- assertThat(columns, hasSize(2));
- assertThat(columns.get(0).name(), equalTo(keyColumnName));
-
- var targetColumn = columns.get(1);
-
- assertThat(targetColumn.name(), equalTo(columnName));
- assertThat(targetColumn.type(), equalTo(arg.type));
-
- if (arg.defaultValue != null) {
- assertThat(targetColumn.defaultValueDefinition(), instanceOf(ConstantValue.class));
- assertThat(((ConstantValue) targetColumn.defaultValueDefinition()).value(), equalTo(arg.defaultValue));
- } else {
- assertThat(targetColumn.defaultValueDefinition(), instanceOf(DefaultValueDefinition.class));
- }
- }
-
- /**
- * Get tests default index configuration.
- *
- * @return Indexes configuration.
- */
- private TablesConfiguration getConfiguration() {
- return confRegistry.getConfiguration(TablesConfiguration.KEY);
- }
-
- private static Iterable<DefaultValueArg> generateTestArguments() {
- var paramList = new ArrayList<DefaultValueArg>();
-
- for (var entry : DEFAULT_VALUES_TO_TEST.entrySet()) {
- for (var defaultValue : entry.getValue()) {
- paramList.add(
- new DefaultValueArg(specToType(entry.getKey()), adjust(defaultValue))
- );
- }
- }
- return paramList;
- }
-}
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
deleted file mode 100644
index daec0e4ec5..0000000000
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/configuration/SchemaDescriptorConverterTest.java
+++ /dev/null
@@ -1,296 +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.configuration;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.function.Function;
-import org.apache.ignite.internal.schema.Column;
-import org.apache.ignite.internal.schema.Columns;
-import org.apache.ignite.internal.schema.DefaultValueGenerator;
-import org.apache.ignite.internal.schema.DefaultValueProvider.FunctionalValueProvider;
-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.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.junit.jupiter.api.Test;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
-
-/**
- * Tests for SchemaDescriptorConverter.
- */
-public class SchemaDescriptorConverterTest extends AbstractSchemaConverterTest {
- /** Total number of columns. */
- private static final int columns = 15;
-
- /**
- * Convert table with complex primary key and check it.
- */
- @Test
- public void testComplexPrimaryKey() {
- TableDefinitionBuilder bldr = getBuilder(false, false);
- TableDefinition tblSchm = bldr.withPrimaryKey(
- SchemaBuilders.primaryKey()
- .withColumns("INT8", "ID")
- .build()
- ).build();
-
- SchemaDescriptor tblDscr = SchemaDescriptorConverter.convert(1, tblSchm);
-
- assertEquals(2, tblDscr.keyColumns().length());
- assertEquals(2, tblDscr.colocationColumns().length);
- assertEquals(columns - 2, tblDscr.valueColumns().length());
- }
-
- /**
- * Convert table with complex primary key with affinity column configured and check it.
- */
- @Test
- public void testComplexPrimaryKeyWithAffinity() {
- TableDefinitionBuilder bldr = getBuilder(false, false);
- TableDefinition tblSchm = bldr.withPrimaryKey(
- SchemaBuilders.primaryKey()
- .withColumns("INT8", "ID")
- .withColocationColumns("INT8")
- .build()
- ).build();
-
- SchemaDescriptor tblDscr = SchemaDescriptorConverter.convert(1, tblSchm);
-
- assertEquals(2, tblDscr.keyColumns().length());
- assertEquals(1, tblDscr.colocationColumns().length);
- assertEquals(columns - 2, tblDscr.valueColumns().length());
- }
-
- /**
- * Convert table with nullable columns.
- */
- @Test
- public void convertNullable() {
- TableDefinition tblSchm = getBuilder(true, true).build();
-
- SchemaDescriptor tblDscr = SchemaDescriptorConverter.convert(1, tblSchm);
-
- assertEquals(1, tblDscr.keyColumns().length());
- testCol(tblDscr.keyColumns(), "ID", NativeTypeSpec.UUID, false);
-
- assertEquals(columns - 1, tblDscr.valueColumns().length());
- testCol(tblDscr.valueColumns(), "INT8", NativeTypeSpec.INT8, true);
- testCol(tblDscr.valueColumns(), "INT16", NativeTypeSpec.INT16, true);
- testCol(tblDscr.valueColumns(), "INT32", NativeTypeSpec.INT32, true);
- testCol(tblDscr.valueColumns(), "INT64", NativeTypeSpec.INT64, true);
- testCol(tblDscr.valueColumns(), "FLOAT", NativeTypeSpec.FLOAT, true);
- testCol(tblDscr.valueColumns(), "DOUBLE", NativeTypeSpec.DOUBLE, true);
- testCol(tblDscr.valueColumns(), "UUID", NativeTypeSpec.UUID, true);
- testCol(tblDscr.valueColumns(), "STRING", NativeTypeSpec.STRING, true);
- testCol(tblDscr.valueColumns(), "STRING_FS10", NativeTypeSpec.STRING, true);
- testCol(tblDscr.valueColumns(), "BLOB", NativeTypeSpec.BYTES, true);
- testCol(tblDscr.valueColumns(), "DECIMAL", NativeTypeSpec.DECIMAL, true);
- testCol(tblDscr.valueColumns(), "NUMBER", NativeTypeSpec.NUMBER, true);
- testCol(tblDscr.valueColumns(), "DECIMAL", NativeTypeSpec.DECIMAL, true);
- testCol(tblDscr.valueColumns(), "BITMASK_FS10", NativeTypeSpec.BITMASK, true);
- }
-
- @ParameterizedTest
- @MethodSource("generateTestArguments")
- public void convertDefaultValues(DefaultValueArg arg) {
- final String keyColumnName = "ID";
-
- var columnName = arg.type.typeSpec().name();
- var nullable = arg.defaultValue == null;
-
- var tableDefinition = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(
- SchemaBuilders.column(keyColumnName, ColumnType.INT32).build(),
- SchemaBuilders.column(columnName, arg.type)
- .withDefaultValue(arg.defaultValue)
- .asNullable(nullable)
- .build()
- )
- .withPrimaryKey(keyColumnName)
- .build();
-
- SchemaDescriptor schemaDescriptor = SchemaDescriptorConverter.convert(1, tableDefinition);
-
- assertEquals(1, schemaDescriptor.valueColumns().length());
-
- var column = schemaDescriptor.valueColumns().columns()[0];
-
- assertThat(column.name(), equalTo(columnName));
- assertThat(column.nullable(), equalTo(nullable));
- assertThat(column.defaultValueProvider().type(), equalTo(Type.CONSTANT));
- assertThat(column.defaultValue(), equalTo(arg.defaultValue));
- }
-
- /**
- * Validates conversion of functional default.
- */
- @Test
- public void convertFunctionalDefault() {
- final String keyColumnName = "ID";
-
- var tableDefinition = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
- .columns(
- new ColumnDefinitionImpl(
- keyColumnName, ColumnType.string(), false,
- DefaultValueDefinition.functionCall(DefaultValueGenerators.GEN_RANDOM_UUID)
- ),
- SchemaBuilders.column("VAL", ColumnType.INT8).asNullable(true).build()
- )
- .withPrimaryKey(keyColumnName)
- .build();
-
- SchemaDescriptor schemaDescriptor = SchemaDescriptorConverter.convert(1, tableDefinition);
-
- assertEquals(1, schemaDescriptor.keyColumns().length());
-
- var column = schemaDescriptor.keyColumns().columns()[0];
-
- assertThat(column.name(), equalTo(keyColumnName));
- assertThat(column.nullable(), equalTo(false));
- assertThat(column.defaultValueProvider().type(), equalTo(Type.FUNCTIONAL));
- assertThat(((FunctionalValueProvider) column.defaultValueProvider()).name(), equalTo(DefaultValueGenerator.GEN_RANDOM_UUID.name()));
- }
-
- /**
- * Convert table with complex primary key and check it.
- */
- @Test
- public void testColumnOrder() {
- ColumnDefinition[] cols = {
- SchemaBuilders.column("ID", ColumnType.UUID).build(),
- SchemaBuilders.column("STRING", ColumnType.string()).build(),
- SchemaBuilders.column("INT32", ColumnType.INT32).build(),
- SchemaBuilders.column("INT64", ColumnType.INT64).build(),
- SchemaBuilders.column("DOUBLE", ColumnType.DOUBLE).build(),
- SchemaBuilders.column("UUID", ColumnType.UUID).build(),
- SchemaBuilders.column("INT16", ColumnType.INT16).build(),
- SchemaBuilders.column("BITMASK_FS10", ColumnType.bitmaskOf(10)).build()
- };
-
- TableDefinition tblSchm = SchemaBuilders.tableBuilder("SCHEMA", "TABLE")
- .columns(cols)
- .withPrimaryKey(
- SchemaBuilders.primaryKey()
- .withColumns("INT32", "ID")
- .withColocationColumns("INT32")
- .build()
- ).build();
-
- SchemaDescriptor tblDscr = SchemaDescriptorConverter.convert(1, tblSchm);
-
- for (int i = 0; i < cols.length; i++) {
- Column col = tblDscr.column(i);
-
- assertEquals(col.name(), cols[col.columnOrder()].name());
- }
-
- assertArrayEquals(Arrays.stream(cols).map(ColumnDefinition::name).toArray(String[]::new),
- tblDscr.columnNames().toArray(String[]::new));
- }
-
- /**
- * Get TableSchemaBuilder with default table.
- *
- * @param nullable If all columns should be nullable.
- * @param withPk If builder should contains primary key index.
- * @return TableSchemaBuilder.
- */
- private TableDefinitionBuilder getBuilder(boolean nullable, boolean withPk) {
- Function<ColumnDefinitionBuilder, ColumnDefinition> postProcess =
- builder -> builder.asNullable(nullable).build();
-
- TableDefinitionBuilder res = SchemaBuilders.tableBuilder("SCHEMA", "TABLE")
- .columns(
- SchemaBuilders.column("ID", ColumnType.UUID).build(),
- postProcess.apply(SchemaBuilders.column("INT8", ColumnType.INT8)),
- postProcess.apply(SchemaBuilders.column("INT16", ColumnType.INT16)),
- postProcess.apply(SchemaBuilders.column("INT32", ColumnType.INT32)),
- postProcess.apply(SchemaBuilders.column("INT64", ColumnType.INT64)),
- postProcess.apply(SchemaBuilders.column("FLOAT", ColumnType.FLOAT)),
- postProcess.apply(SchemaBuilders.column("DOUBLE", ColumnType.DOUBLE)),
- postProcess.apply(SchemaBuilders.column("UUID", ColumnType.UUID)),
- postProcess.apply(SchemaBuilders.column("STRING", ColumnType.string())),
- postProcess.apply(SchemaBuilders.column("STRING_FS10", ColumnType.stringOf(10))),
- postProcess.apply(SchemaBuilders.column("BLOB", ColumnType.blob())),
- postProcess.apply(SchemaBuilders.column("BLOB_FS10", ColumnType.blobOf(10))),
- postProcess.apply(SchemaBuilders.column("DECIMAL", ColumnType.decimalOf(1, 1))),
- postProcess.apply(SchemaBuilders.column("NUMBER", ColumnType.numberOf(12))),
- postProcess.apply(SchemaBuilders.column("BITMASK_FS10", ColumnType.bitmaskOf(10)))
- // TODO: IGNITE-13750 uncomment after unsigned types available
- // postProcess.apply(SchemaBuilders.column("UINT8", ColumnType.UINT8)),
- // postProcess.apply(SchemaBuilders.column("UINT16", ColumnType.UINT16)),
- // postProcess.apply(SchemaBuilders.column("UINT32", ColumnType.UINT32)),
- // postProcess.apply(SchemaBuilders.column("UINT64", ColumnType.UINT64)),
- );
- if (withPk) {
- res.withPrimaryKey("ID");
- }
-
- return res;
- }
-
- /**
- * Check specified column to match other parameters.
- *
- * @param cols Columns to test.
- * @param name Expected column name.
- * @param type Expected column type.
- * @param nullable Expected column nullable flag.
- */
- private static void testCol(Columns cols, String name, NativeTypeSpec type, boolean nullable) {
- int idx = cols.columnIndex(name);
- Column col = cols.column(idx);
-
- assertEquals(name, col.name());
- assertEquals(type.name(), col.type().spec().name());
- assertEquals(nullable, col.nullable());
-
- if (col.type().spec().fixedLength()) {
- assertTrue(col.type().sizeInBytes() >= 0);
- }
- }
-
- private static Iterable<DefaultValueArg> generateTestArguments() {
- var paramList = new ArrayList<DefaultValueArg>();
-
- for (var entry : DEFAULT_VALUES_TO_TEST.entrySet()) {
- for (var defaultValue : entry.getValue()) {
- paramList.add(
- new DefaultValueArg(specToType(entry.getKey()), adjust(defaultValue))
- );
- }
- }
- return paramList;
- }
-}
diff --git a/modules/schema/src/test/java/org/apache/ignite/internal/schema/serializer/AbstractSerializerTest.java b/modules/schema/src/test/java/org/apache/ignite/internal/schema/serializer/AbstractSerializerTest.java
index f06aabb090..455771d2a3 100644
--- a/modules/schema/src/test/java/org/apache/ignite/internal/schema/serializer/AbstractSerializerTest.java
+++ b/modules/schema/src/test/java/org/apache/ignite/internal/schema/serializer/AbstractSerializerTest.java
@@ -46,6 +46,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.ignite.internal.schema.Column;
+import org.apache.ignite.internal.schema.DecimalNativeType;
import org.apache.ignite.internal.schema.DefaultValueProvider.Type;
import org.apache.ignite.internal.schema.NativeType;
import org.apache.ignite.internal.schema.NativeTypeSpec;
@@ -55,8 +56,8 @@ import org.apache.ignite.internal.schema.mapping.ColumnMapper;
import org.apache.ignite.internal.schema.mapping.ColumnMapping;
import org.apache.ignite.internal.schema.marshaller.schema.AbstractSchemaSerializer;
import org.apache.ignite.internal.schema.marshaller.schema.SchemaSerializerImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType.DecimalColumnType;
import org.apache.ignite.internal.util.ArrayUtils;
-import org.apache.ignite.schema.definition.ColumnType.DecimalColumnType;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
@@ -334,7 +335,7 @@ public class AbstractSerializerTest {
case DOUBLE:
return NativeTypes.DOUBLE;
case DECIMAL:
- return NativeTypes.decimalOf(DecimalColumnType.DEFAULT_PRECISION, DecimalColumnType.DEFAULT_SCALE);
+ return NativeTypes.decimalOf(DecimalNativeType.DEFAULT_PRECISION, DecimalNativeType.DEFAULT_SCALE);
case DATE:
return NativeTypes.DATE;
case TIME:
@@ -344,7 +345,7 @@ public class AbstractSerializerTest {
case TIMESTAMP:
return NativeTypes.timestamp();
case NUMBER:
- return NativeTypes.numberOf(DecimalColumnType.DEFAULT_PRECISION);
+ return NativeTypes.numberOf(DecimalNativeType.DEFAULT_PRECISION);
case STRING:
return NativeTypes.stringOf(Byte.MAX_VALUE);
case UUID:
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/SchemaConfigurationConverter.java
similarity index 88%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/SchemaConfigurationConverter.java
index fce92a95bf..7a7386feec 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/configuration/SchemaConfigurationConverter.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/SchemaConfigurationConverter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.configuration;
+package org.apache.ignite.internal.schema.testutils;
import static java.math.RoundingMode.HALF_UP;
import static java.util.Arrays.asList;
@@ -60,27 +60,27 @@ import org.apache.ignite.configuration.schemas.table.TableIndexChange;
import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesChange;
-import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
-import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
-import org.apache.ignite.internal.schema.definition.index.HashIndexDefinitionImpl;
-import org.apache.ignite.internal.schema.definition.index.PrimaryKeyDefinitionImpl;
-import org.apache.ignite.internal.schema.definition.index.SortedIndexColumnDefinitionImpl;
-import org.apache.ignite.internal.schema.definition.index.SortedIndexDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType.DecimalColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition.ConstantValue;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition.FunctionCall;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.IndexColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.IndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.PrimaryKeyDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortOrder;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexColumnDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinitionImpl;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.ColumnType.DecimalColumnType;
-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.PrimaryKeyDefinition;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.index.HashIndexDefinition;
-import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.IndexDefinition;
-import org.apache.ignite.schema.definition.index.SortOrder;
-import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
import org.jetbrains.annotations.Nullable;
/**
@@ -104,8 +104,7 @@ public class SchemaConfigurationConverter {
}
/**
- * Put type.
- * TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
+ * Put type. TODO Documentation https://issues.apache.org/jira/browse/IGNITE-15859
*
* @param type Column type.
*/
@@ -116,7 +115,7 @@ public class SchemaConfigurationConverter {
/**
* Convert SortedIndexColumn to IndexColumnChange.
*
- * @param col IndexColumnChange.
+ * @param col IndexColumnChange.
* @param colInit IndexColumnChange to fulfill.
* @return IndexColumnChange to get result from.
*/
@@ -139,7 +138,7 @@ public class SchemaConfigurationConverter {
/**
* Convert TableIndex to TableIndexChange.
*
- * @param idx TableIndex.
+ * @param idx TableIndex.
* @param idxChg TableIndexChange to fulfill.
* @return TableIndexChange to get result from.
*/
@@ -212,7 +211,7 @@ public class SchemaConfigurationConverter {
/**
* Convert ColumnType to ColumnTypeChange.
*
- * @param colType ColumnType.
+ * @param colType ColumnType.
* @param colTypeChg ColumnTypeChange to fulfill.
* @return ColumnTypeChange to get result from
*/
@@ -226,11 +225,15 @@ public class SchemaConfigurationConverter {
switch (typeName) {
case "BITMASK":
- case "BLOB":
+ case "BYTES":
case "STRING":
- ColumnType.VarLenColumnType varLenColType = (ColumnType.VarLenColumnType) colType;
+ int length = ((ColumnType.VarLenColumnType) colType).length();
+
+ if (length == 0) {
+ length = Integer.MAX_VALUE;
+ }
- colTypeChg.changeLength(varLenColType.length());
+ colTypeChg.changeLength(length);
break;
@@ -322,7 +325,7 @@ public class SchemaConfigurationConverter {
/**
* Convert column to column change.
*
- * @param col Column to convert.
+ * @param col Column to convert.
* @param colChg Column
* @return ColumnChange to get result from.
*/
@@ -397,7 +400,7 @@ public class SchemaConfigurationConverter {
/**
* Convert table schema to table changer.
*
- * @param tbl Table schema to convert.
+ * @param tbl Table schema to convert.
* @param tblChg Change to fulfill.
* @return TableChange to get result from.
*/
@@ -458,7 +461,7 @@ public class SchemaConfigurationConverter {
/**
* Create table.
*
- * @param tbl Table to create.
+ * @param tbl Table to create.
* @param tblsChange Tables change to fulfill.
* @return TablesChange to get result from.
*/
@@ -469,7 +472,7 @@ public class SchemaConfigurationConverter {
/**
* Drop table.
*
- * @param tbl table to drop.
+ * @param tbl table to drop.
* @param tblsChange TablesChange change to fulfill.
* @return TablesChange to get result from.
*/
@@ -480,7 +483,7 @@ public class SchemaConfigurationConverter {
/**
* Add index.
*
- * @param idx Index to add.
+ * @param idx Index to add.
* @param tableId Table id.
* @param change Indexes change to fulfill.
* @return TableChange to get result from.
@@ -492,7 +495,7 @@ public class SchemaConfigurationConverter {
/**
* Add table column.
*
- * @param column Column to add.
+ * @param column Column to add.
* @param tblChange TableChange to fulfill.
* @return TableChange to get result from.
*/
@@ -504,7 +507,7 @@ public class SchemaConfigurationConverter {
* Drop table column.
*
* @param columnName column name to drop.
- * @param tblChange TableChange to fulfill.
+ * @param tblChange TableChange to fulfill.
* @return TableChange to get result from.
*/
public static TableChange dropColumn(String columnName, TableChange tblChange) {
@@ -536,7 +539,7 @@ public class SchemaConfigurationConverter {
case STRING:
case UUID:
return defaultValue.toString();
- case BLOB:
+ case BYTES:
return IgniteUtils.toHexString((byte[]) defaultValue);
case BITMASK:
return IgniteUtils.toHexString(((BitSet) defaultValue).toByteArray());
@@ -577,7 +580,7 @@ public class SchemaConfigurationConverter {
return defaultValue;
case UUID:
return UUID.fromString(defaultValue);
- case BLOB:
+ case BYTES:
return IgniteUtils.fromHexString(defaultValue);
case BITMASK:
return BitSet.valueOf(IgniteUtils.fromHexString(defaultValue));
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
index ebb6d87a98..c2d6145ab0 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilder.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
-import org.apache.ignite.schema.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
import org.jetbrains.annotations.Nullable;
/**
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
index 2006d296fa..4467111479 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/ColumnDefinitionBuilderImpl.java
@@ -18,11 +18,11 @@
package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
-import org.apache.ignite.internal.schema.definition.ColumnDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.DefaultValueDefinition;
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.jetbrains.annotations.Nullable;
/**
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
index e06cf58c0e..4e108bdfe1 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilder.java
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
import java.util.Map;
-import org.apache.ignite.schema.definition.index.HashIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinition;
/**
* Hash index descriptor builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
index 487af48ea9..f76352707e 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/HashIndexDefinitionBuilderImpl.java
@@ -21,9 +21,9 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import org.apache.ignite.internal.schema.definition.index.HashIndexDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.definition.index.HashIndexDefinition;
/**
* Hash index builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
index 7b4ebca1f2..e3a3a6e092 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilder.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
-import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
/**
* Hash index descriptor builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
index f7fa3b0f8e..17c82c2bf0 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/PrimaryKeyDefinitionBuilderImpl.java
@@ -22,11 +22,11 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import org.apache.ignite.internal.schema.definition.index.PrimaryKeyDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.PrimaryKeyDefinitionImpl;
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;
/**
* Primary key builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
index ab83125180..43b93089a9 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SchemaBuilders.java
@@ -17,8 +17,9 @@
package org.apache.ignite.internal.schema.testutils.builder;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
+
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
/**
* Schema builder helper.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
index a85b837817..c6e20391c5 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilder.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.schema.testutils.builder;
import java.util.Map;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinition;
/**
* Sorted index descriptor builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
index ad42cca1fc..ea178edb42 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/SortedIndexDefinitionBuilderImpl.java
@@ -21,12 +21,12 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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.schema.testutils.definition.index.SortOrder;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexColumnDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.definition.index.SortOrder;
-import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
/**
* Sorted index builder.
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
index 30cb134ac3..5a616055b4 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilder.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.schema.testutils.builder;
import java.util.List;
import java.util.Map;
-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.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
/**
* Table definition builder.
@@ -67,5 +67,6 @@ public interface TableDefinitionBuilder extends SchemaObjectBuilder {
*
* @return Table definition.
*/
- @Override TableDefinition build();
+ @Override
+ TableDefinition build();
}
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
index 9ed3dcbb86..cf74ed8c3d 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/builder/TableDefinitionBuilderImpl.java
@@ -21,12 +21,11 @@ import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import org.apache.ignite.internal.schema.definition.SchemaValidationUtils;
-import org.apache.ignite.internal.schema.definition.TableDefinitionImpl;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinitionImpl;
import org.apache.ignite.internal.util.IgniteObjectName;
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
-import org.apache.ignite.schema.definition.TableDefinition;
/**
* Table builder.
@@ -104,8 +103,6 @@ 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.";
- SchemaValidationUtils.validatePrimaryKey(primaryKeyDefinition.columns(), columns);
-
return new TableDefinitionImpl(
schemaName,
tableName,
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/AbstractSchemaObject.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/AbstractSchemaObject.java
similarity index 93%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/AbstractSchemaObject.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/AbstractSchemaObject.java
index 980039ee10..4a2700c7f8 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/AbstractSchemaObject.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/AbstractSchemaObject.java
@@ -15,10 +15,9 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.SchemaObject;
/**
* Schema object base class.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinition.java
similarity index 95%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinition.java
index 0d1670a481..b0e85326cc 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
/**
* Table column descriptor.
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/ColumnDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinitionImpl.java
similarity index 90%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/ColumnDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinitionImpl.java
index da154d0864..61df32a099 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/ColumnDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnDefinitionImpl.java
@@ -15,12 +15,9 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.DefaultValueDefinition;
/**
* Table column.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
similarity index 98%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
index 9efc5200cf..9b75d8e738 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/ColumnType.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import java.util.Objects;
@@ -94,7 +94,7 @@ public class ColumnType {
* @return Blob type.
*/
public static VarLenColumnType blobOf(int length) {
- return new VarLenColumnType(ColumnTypeSpec.BLOB, length);
+ return new VarLenColumnType(ColumnTypeSpec.BYTES, length);
}
/**
@@ -258,7 +258,7 @@ public class ColumnType {
private static final VarLenColumnType UNLIMITED_STRING = new VarLenColumnType(ColumnTypeSpec.STRING, 0);
/** Blob varlen type of unlimited length. */
- private static final VarLenColumnType UNLIMITED_BLOB = new VarLenColumnType(ColumnTypeSpec.BLOB, 0);
+ private static final VarLenColumnType UNLIMITED_BLOB = new VarLenColumnType(ColumnTypeSpec.BYTES, 0);
/** Max length. */
private final int length;
@@ -391,7 +391,7 @@ public class ColumnType {
*/
public static class NumberColumnType extends ColumnType {
/** Number type with unlimited precision. */
- public static final NumberColumnType UNLIMITED_NUMBER = new NumberColumnType(ColumnTypeSpec.NUMBER, 0);
+ public static final NumberColumnType UNLIMITED_NUMBER = new NumberColumnType(ColumnTypeSpec.NUMBER, Integer.MAX_VALUE);
/** Max precision of value. If -1, column has no precision restrictions. */
private final int precision;
@@ -570,7 +570,7 @@ public class ColumnType {
STRING,
/** Binary data. */
- BLOB,
+ BYTES,
/** Number. */
NUMBER,
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueDefinition.java
similarity index 98%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueDefinition.java
index 852f68cc10..7229e83f1b 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import java.util.Objects;
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueGenerators.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueGenerators.java
similarity index 94%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueGenerators.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueGenerators.java
index 56add2f3a6..5f04536a55 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/DefaultValueGenerators.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/DefaultValueGenerators.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
/**
* Enumeration of all supported value generators that could be used as a default value provider
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/PrimaryKeyDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/PrimaryKeyDefinition.java
similarity index 95%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/PrimaryKeyDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/PrimaryKeyDefinition.java
index ab98023f16..abf7300b0b 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/PrimaryKeyDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/PrimaryKeyDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import java.util.List;
import java.util.Set;
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaObject.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/SchemaObject.java
similarity index 95%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaObject.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/SchemaObject.java
index ab517286de..fde4656538 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/SchemaObject.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/SchemaObject.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
/**
* Schema object.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinition.java
similarity index 95%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinition.java
index f8f288f17d..683b278f56 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/TableDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import java.util.List;
import java.util.Set;
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinitionImpl.java
similarity index 93%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinitionImpl.java
index 8e8b859915..971edb2f9b 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/TableDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/TableDefinitionImpl.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition;
+package org.apache.ignite.internal.schema.testutils.definition;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@@ -23,9 +23,6 @@ import java.util.List;
import java.util.Set;
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;
/**
* Table.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/ColumnarIndexDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/ColumnarIndexDefinition.java
similarity index 94%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/ColumnarIndexDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/ColumnarIndexDefinition.java
index 8998a170cb..b7ee58fe22 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/ColumnarIndexDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/ColumnarIndexDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import java.util.List;
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinition.java
similarity index 93%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinition.java
index 9d17d582c0..55ee4fe411 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/HashIndexDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
/**
* Hash index descriptor.
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/HashIndexDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinitionImpl.java
similarity index 85%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/HashIndexDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinitionImpl.java
index 5ed2f08b20..1e9223a178 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/HashIndexDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/HashIndexDefinitionImpl.java
@@ -15,15 +15,13 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import java.util.List;
import java.util.stream.Collectors;
-import org.apache.ignite.internal.schema.definition.AbstractSchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.AbstractSchemaObject;
import org.apache.ignite.internal.tostring.IgniteToStringInclude;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.index.HashIndexDefinition;
-import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
/**
* Hash index.
@@ -36,7 +34,7 @@ public class HashIndexDefinitionImpl extends AbstractSchemaObject implements Has
/**
* Constructor.
*
- * @param name Index name.
+ * @param name Index name.
* @param columns Index columns.
*/
public HashIndexDefinitionImpl(String name, List<String> columns) {
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexColumnDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinition.java
similarity index 93%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexColumnDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinition.java
index b7127f5494..e94026a6d9 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexColumnDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
/**
* Index column descriptor.
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/IndexColumnDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinitionImpl.java
similarity index 79%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/IndexColumnDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinitionImpl.java
index e7ef6c07ed..a10ddcd78e 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/IndexColumnDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexColumnDefinitionImpl.java
@@ -15,16 +15,15 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
-import org.apache.ignite.internal.schema.definition.AbstractSchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.AbstractSchemaObject;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.index.IndexColumnDefinition;
/**
* Non-ordered index column.
*/
-class IndexColumnDefinitionImpl extends AbstractSchemaObject implements IndexColumnDefinition {
+public class IndexColumnDefinitionImpl extends AbstractSchemaObject implements IndexColumnDefinition {
/**
* Constructor.
*
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexDefinition.java
similarity index 90%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexDefinition.java
index ad3b095735..7f2880ab17 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/IndexDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/IndexDefinition.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
-import org.apache.ignite.schema.definition.SchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.SchemaObject;
/**
* Index base interface.
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/PrimaryKeyDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/PrimaryKeyDefinitionImpl.java
similarity index 92%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/PrimaryKeyDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/PrimaryKeyDefinitionImpl.java
index eaaddc0584..2111d251e2 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/PrimaryKeyDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/PrimaryKeyDefinitionImpl.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import java.util.List;
import java.util.Set;
-import org.apache.ignite.internal.schema.definition.AbstractSchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.AbstractSchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.PrimaryKeyDefinition;
import org.apache.ignite.internal.tostring.IgniteToStringInclude;
import org.apache.ignite.internal.tostring.S;
import org.apache.ignite.internal.util.CollectionUtils;
-import org.apache.ignite.schema.definition.PrimaryKeyDefinition;
/**
* Primary key index.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortOrder.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortOrder.java
similarity index 93%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortOrder.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortOrder.java
index 1636ee8c20..4c56b08ace 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortOrder.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortOrder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
/**
* Index column sort order.
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexColumnDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinition.java
similarity index 93%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexColumnDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinition.java
index 32837b3015..785a65362e 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexColumnDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
/**
* Sorted index column.
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexColumnDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinitionImpl.java
similarity index 87%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexColumnDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinitionImpl.java
index 6d7c244b4f..67acd4b7c0 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexColumnDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexColumnDefinitionImpl.java
@@ -15,11 +15,9 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.index.SortOrder;
-import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
/**
* Ordered index column.
@@ -34,7 +32,7 @@ public class SortedIndexColumnDefinitionImpl implements SortedIndexColumnDefinit
/**
* Constructor.
*
- * @param name Column name.
+ * @param name Column name.
* @param sortOrder Sort order flag.
*/
public SortedIndexColumnDefinitionImpl(String name, SortOrder sortOrder) {
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinition.java
similarity index 94%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinition.java
index fb7c4ceba1..fc2ef4dad3 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/SortedIndexDefinition.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinition.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.ignite.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import java.util.List;
diff --git a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexDefinitionImpl.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinitionImpl.java
similarity index 85%
rename from modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexDefinitionImpl.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinitionImpl.java
index 2f325117dd..9562a8cfd1 100644
--- a/modules/schema/src/main/java/org/apache/ignite/internal/schema/definition/index/SortedIndexDefinitionImpl.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/SortedIndexDefinitionImpl.java
@@ -15,15 +15,13 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.schema.definition.index;
+package org.apache.ignite.internal.schema.testutils.definition.index;
import java.util.Collections;
import java.util.List;
-import org.apache.ignite.internal.schema.definition.AbstractSchemaObject;
+import org.apache.ignite.internal.schema.testutils.definition.AbstractSchemaObject;
import org.apache.ignite.internal.tostring.IgniteToStringInclude;
import org.apache.ignite.internal.tostring.S;
-import org.apache.ignite.schema.definition.index.SortedIndexColumnDefinition;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
/**
* Sorted index.
@@ -39,8 +37,8 @@ public class SortedIndexDefinitionImpl extends AbstractSchemaObject implements S
/**
* Constructor.
*
- * @param name Index name.
- * @param cols Index columns.
+ * @param name Index name.
+ * @param cols Index columns.
* @param unique Unique flag.
*/
public SortedIndexDefinitionImpl(String name, List<SortedIndexColumnDefinition> cols, boolean unique) {
diff --git a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/package-info.java
similarity index 92%
rename from modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java
rename to modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/package-info.java
index 1f2dd3f4e2..5c5f34a90f 100644
--- a/modules/api/src/main/java/org/apache/ignite/schema/definition/index/package-info.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/index/package-info.java
@@ -19,4 +19,4 @@
* Contains index definition interfaces.
*/
-package org.apache.ignite.schema.definition.index;
\ No newline at end of file
+package org.apache.ignite.internal.schema.testutils.definition.index;
\ No newline at end of file
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 5ff26fa0ec..c90cda813f 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
@@ -19,8 +19,6 @@ package org.apache.ignite.internal.sql.engine.exec.ddl;
import static java.util.concurrent.CompletableFuture.completedFuture;
import static java.util.concurrent.CompletableFuture.failedFuture;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convertDefaultToConfiguration;
import static org.apache.ignite.internal.util.CollectionUtils.nullOrEmpty;
import java.util.HashMap;
@@ -37,6 +35,7 @@ import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.apache.ignite.configuration.NamedListView;
import org.apache.ignite.configuration.schemas.table.ColumnChange;
+import org.apache.ignite.configuration.schemas.table.ColumnTypeChange;
import org.apache.ignite.configuration.schemas.table.ColumnView;
import org.apache.ignite.configuration.schemas.table.ConstantValueDefaultChange;
import org.apache.ignite.configuration.schemas.table.FunctionCallDefaultChange;
@@ -47,7 +46,15 @@ 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.BitmaskNativeType;
+import org.apache.ignite.internal.schema.DecimalNativeType;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypeSpec;
+import org.apache.ignite.internal.schema.NumberNativeType;
import org.apache.ignite.internal.schema.SchemaUtils;
+import org.apache.ignite.internal.schema.TemporalNativeType;
+import org.apache.ignite.internal.schema.VarlenNativeType;
+import org.apache.ignite.internal.schema.configuration.ValueSerializationHelper;
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;
@@ -332,7 +339,7 @@ public class DdlCommandHandler {
}
private void convertColumnDefinition(ColumnDefinition definition, ColumnChange columnChange) {
- var columnType = IgniteTypeFactory.relDataTypeToColumnType(definition.type());
+ NativeType columnType = IgniteTypeFactory.relDataTypeToNative(definition.type());
columnChange.changeType(columnTypeChange -> convert(columnType, columnTypeChange));
columnChange.changeNullable(definition.nullable());
@@ -345,7 +352,7 @@ public class DdlCommandHandler {
if (val != null) {
defaultChange.convert(ConstantValueDefaultChange.class)
- .changeDefaultValue(convertDefaultToConfiguration(val, columnType));
+ .changeDefaultValue(ValueSerializationHelper.toString(val, columnType));
} else {
defaultChange.convert(NullValueDefaultChange.class);
}
@@ -409,6 +416,68 @@ public class DdlCommandHandler {
.thenApply(v -> ret.get());
}
+ private static void convert(NativeType colType, ColumnTypeChange colTypeChg) {
+ NativeTypeSpec spec = colType.spec();
+ String typeName = spec.name().toUpperCase();
+
+ colTypeChg.changeType(typeName);
+
+ switch (spec) {
+ case INT8:
+ case INT16:
+ case INT32:
+ case INT64:
+ case FLOAT:
+ case DOUBLE:
+ case DATE:
+ case UUID:
+ // do nothing
+ break;
+
+ case BITMASK:
+ BitmaskNativeType bitmaskColType = (BitmaskNativeType) colType;
+
+ colTypeChg.changeLength(bitmaskColType.bits());
+
+ break;
+
+ case BYTES:
+ case STRING:
+ VarlenNativeType varLenColType = (VarlenNativeType) colType;
+
+ colTypeChg.changeLength(varLenColType.length());
+
+ break;
+
+ case DECIMAL:
+ DecimalNativeType numColType = (DecimalNativeType) colType;
+
+ colTypeChg.changePrecision(numColType.precision());
+ colTypeChg.changeScale(numColType.scale());
+
+ break;
+
+ case NUMBER:
+ NumberNativeType numType = (NumberNativeType) colType;
+
+ colTypeChg.changePrecision(numType.precision());
+
+ break;
+
+ case TIME:
+ case DATETIME:
+ case TIMESTAMP:
+ TemporalNativeType temporalColType = (TemporalNativeType) colType;
+
+ colTypeChg.changePrecision(temporalColType.precision());
+
+ break;
+
+ default:
+ throw new IllegalArgumentException("Unknown type " + colType.spec().name());
+ }
+ }
+
/** Map column name to order. */
private static Map<String, String> columnOrdersToNames(NamedListView<? extends ColumnView> cols) {
Map<String, String> colNames = new HashMap<>(cols.size());
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DefaultValueDefinition.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DefaultValueDefinition.java
index 0a00cb95bb..c10aa625bd 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DefaultValueDefinition.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/prepare/ddl/DefaultValueDefinition.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.sql.engine.prepare.ddl;
import java.util.Objects;
-import org.apache.ignite.schema.definition.DefaultValueGenerators;
import org.jetbrains.annotations.Nullable;
/**
@@ -31,7 +30,6 @@ public class DefaultValueDefinition {
*
* @param name Name of the function to invoke to generate the value
* @return Default value definition.
- * @see DefaultValueGenerators
*/
public static DefaultValueDefinition functionCall(String name) {
return new FunctionCall(Objects.requireNonNull(name, "name"));
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelper.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelper.java
index b2dcc60517..5d1e5e4847 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelper.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelper.java
@@ -17,11 +17,10 @@
package org.apache.ignite.internal.sql.engine.property;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-import org.apache.ignite.internal.sql.engine.QueryProperty;
+import org.apache.ignite.internal.util.IgniteUtils;
/**
@@ -36,24 +35,14 @@ public final class PropertiesHelper {
* @param cls The class for property lookup.
* @return A mapping name to property itself.
*/
+ @SuppressWarnings("rawtypes")
public static Map<String, Property<?>> createPropsByNameMap(Class<?> cls) {
+ List<Property> properties = IgniteUtils.collectStaticFields(cls, Property.class);
+
Map<String, Property<?>> tmp = new HashMap<>();
- for (Field f : cls.getDeclaredFields()) {
- if (!Property.class.equals(f.getType())
- || !Modifier.isStatic(f.getModifiers())
- || !Modifier.isPublic(f.getModifiers())) {
- continue;
- }
-
- try {
- Property<?> prop = (Property<?>) f.get(QueryProperty.class);
-
- tmp.put(prop.name, prop);
- } catch (IllegalAccessException e) {
- // should not happen
- throw new AssertionError(e);
- }
+ for (Property<?> property : properties) {
+ tmp.put(property.name, property);
}
return Map.copyOf(tmp);
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeFactory.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeFactory.java
index b9055b2e21..703b917e99 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeFactory.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeFactory.java
@@ -44,7 +44,8 @@ import org.apache.calcite.sql.SqlUtil;
import org.apache.calcite.sql.parser.SqlParserPos;
import org.apache.calcite.sql.type.BasicSqlType;
import org.apache.calcite.sql.type.IntervalSqlType;
-import org.apache.ignite.schema.definition.ColumnType;
+import org.apache.ignite.internal.schema.NativeType;
+import org.apache.ignite.internal.schema.NativeTypes;
/**
* Ignite type factory.
@@ -166,7 +167,7 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
* @param relType Rel type.
* @return ColumnType type or null.
*/
- public static ColumnType relDataTypeToColumnType(RelDataType relType) {
+ public static NativeType relDataTypeToNative(RelDataType relType) {
assert relType instanceof BasicSqlType
|| relType instanceof IntervalSqlType : "Not supported.";
@@ -175,34 +176,34 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
//TODO: https://issues.apache.org/jira/browse/IGNITE-17298
throw new IllegalArgumentException("Type is not supported yet.");
case TINYINT:
- return ColumnType.INT8;
+ return NativeTypes.INT8;
case SMALLINT:
- return ColumnType.INT16;
+ return NativeTypes.INT16;
case INTEGER:
- return ColumnType.INT32;
+ return NativeTypes.INT32;
case BIGINT:
- return ColumnType.INT64;
+ return NativeTypes.INT64;
case DECIMAL:
assert relType.getPrecision() != PRECISION_NOT_SPECIFIED;
- return ColumnType.decimalOf(relType.getPrecision(), relType.getScale());
+ return NativeTypes.decimalOf(relType.getPrecision(), relType.getScale());
case FLOAT:
case REAL:
- return ColumnType.FLOAT;
+ return NativeTypes.FLOAT;
case DOUBLE:
- return ColumnType.DOUBLE;
+ return NativeTypes.DOUBLE;
case DATE:
- return ColumnType.DATE;
+ return NativeTypes.DATE;
case TIME:
case TIME_WITH_LOCAL_TIME_ZONE:
- return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? ColumnType.time() :
- ColumnType.time(relType.getPrecision());
+ return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? NativeTypes.time() :
+ NativeTypes.time(relType.getPrecision());
case TIMESTAMP:
- return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? ColumnType.datetime() :
- ColumnType.datetime(relType.getPrecision());
+ return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? NativeTypes.datetime() :
+ NativeTypes.datetime(relType.getPrecision());
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
- return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? ColumnType.timestamp() :
- ColumnType.timestamp(relType.getPrecision());
+ return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? NativeTypes.timestamp() :
+ NativeTypes.timestamp(relType.getPrecision());
case INTERVAL_YEAR:
case INTERVAL_YEAR_MONTH:
case INTERVAL_MONTH:
@@ -222,12 +223,14 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
throw new IllegalArgumentException("Type is not supported yet.");
case VARCHAR:
case CHAR:
- return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? ColumnType.string() :
- ColumnType.stringOf(relType.getPrecision());
+ return relType.getPrecision() == PRECISION_NOT_SPECIFIED
+ ? NativeTypes.stringOf(Integer.MAX_VALUE)
+ : NativeTypes.stringOf(relType.getPrecision());
case BINARY:
case VARBINARY:
- return relType.getPrecision() == PRECISION_NOT_SPECIFIED ? ColumnType.blob() :
- ColumnType.blobOf(relType.getPrecision());
+ return relType.getPrecision() == PRECISION_NOT_SPECIFIED
+ ? NativeTypes.blobOf(Integer.MAX_VALUE)
+ : NativeTypes.blobOf(relType.getPrecision());
default:
throw new IllegalArgumentException("Type is not supported.");
}
diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeSystem.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeSystem.java
index 12ba7258bb..9a86cc4377 100644
--- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeSystem.java
+++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/type/IgniteTypeSystem.java
@@ -25,7 +25,7 @@ import org.apache.calcite.rel.type.RelDataTypeSystem;
import org.apache.calcite.rel.type.RelDataTypeSystemImpl;
import org.apache.calcite.sql.type.BasicSqlType;
import org.apache.calcite.sql.type.SqlTypeName;
-import org.apache.ignite.schema.definition.ColumnType.TemporalColumnType;
+import org.apache.ignite.internal.schema.TemporalNativeType;
/**
* Ignite type system.
@@ -53,7 +53,7 @@ public class IgniteTypeSystem extends RelDataTypeSystemImpl implements Serializa
case TIME_WITH_LOCAL_TIME_ZONE:
case TIMESTAMP:
case TIMESTAMP_WITH_LOCAL_TIME_ZONE:
- return TemporalColumnType.MAX_TIME_PRECISION;
+ return TemporalNativeType.MAX_TIME_PRECISION;
default:
return super.getMaxPrecision(typeName);
}
@@ -65,7 +65,7 @@ public class IgniteTypeSystem extends RelDataTypeSystemImpl implements Serializa
switch (typeName) {
case TIMESTAMP: // DATETIME
case TIMESTAMP_WITH_LOCAL_TIME_ZONE: // TIMESTAMP
- return TemporalColumnType.DEFAULT_TIMESTAMP_PRECISION;
+ return TemporalNativeType.DEFAULT_TIMESTAMP_PRECISION;
default:
return super.getDefaultPrecision(typeName);
}
diff --git a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelperTest.java b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelperTest.java
index 986a76a2bd..5a1e0977a9 100644
--- a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelperTest.java
+++ b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/property/PropertiesHelperTest.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test;
class PropertiesHelperTest {
private static final String NON_STATIC_PROP_NAME = "non_static_prop";
- static class TestProps {
+ public static class TestProps {
public static final Property<Long> LONG_PROP = new Property<>("long_prop", Long.class);
public static final Property<String> STRING_PROP = new Property<>("string_prop", String.class);
private static final Property<String> PRIVATE_PROP = new Property<>("private_prop", String.class);
diff --git a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
index b1bc14a6a5..e3740ccdfd 100644
--- a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
+++ b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexDescriptor.java
@@ -29,8 +29,7 @@ import org.apache.ignite.configuration.schemas.table.TableView;
import org.apache.ignite.configuration.schemas.table.TablesView;
import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.schema.NativeType;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.internal.schema.configuration.SchemaDescriptorConverter;
+import org.apache.ignite.internal.schema.configuration.ConfigurationToSchemaDescriptorConverter;
import org.apache.ignite.internal.storage.StorageException;
import org.apache.ignite.internal.tostring.S;
@@ -52,7 +51,7 @@ public class HashIndexDescriptor {
ColumnDescriptor(ColumnView tableColumnView) {
this.name = tableColumnView.name();
- this.type = SchemaDescriptorConverter.convert(SchemaConfigurationConverter.convert(tableColumnView.type()));
+ this.type = ConfigurationToSchemaDescriptorConverter.convert(tableColumnView.type());
this.nullable = tableColumnView.nullable();
}
diff --git a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexStorage.java b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexStorage.java
index 4438be5423..e6f531fc98 100644
--- a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexStorage.java
+++ b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/HashIndexStorage.java
@@ -29,8 +29,6 @@ import org.apache.ignite.internal.util.Cursor;
*
* <p>This storage serves as an unordered mapping from a subset of a table's columns (a.k.a. index columns) to a set of {@link RowId}s
* from a single {@link org.apache.ignite.internal.storage.MvPartitionStorage} from the same table.
- *
- * @see org.apache.ignite.schema.definition.index.HashIndexDefinition
*/
public interface HashIndexStorage {
/**
diff --git a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
index d59cc1305f..a278f114de 100644
--- a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
+++ b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexDescriptor.java
@@ -32,8 +32,7 @@ import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.schema.BinaryTupleSchema;
import org.apache.ignite.internal.schema.BinaryTupleSchema.Element;
import org.apache.ignite.internal.schema.NativeType;
-import org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter;
-import org.apache.ignite.internal.schema.configuration.SchemaDescriptorConverter;
+import org.apache.ignite.internal.schema.configuration.ConfigurationToSchemaDescriptorConverter;
import org.apache.ignite.internal.storage.StorageException;
import org.apache.ignite.internal.tostring.S;
@@ -78,7 +77,7 @@ public class SortedIndexDescriptor {
*/
public ColumnDescriptor(ColumnView tableColumnView, IndexColumnView indexColumnView) {
this.name = tableColumnView.name();
- this.type = SchemaDescriptorConverter.convert(SchemaConfigurationConverter.convert(tableColumnView.type()));
+ this.type = ConfigurationToSchemaDescriptorConverter.convert(tableColumnView.type());
this.nullable = tableColumnView.nullable();
this.asc = indexColumnView.asc();
}
diff --git a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexStorage.java b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexStorage.java
index 6e615b3729..79ab7a4d89 100644
--- a/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexStorage.java
+++ b/modules/storage-api/src/main/java/org/apache/ignite/internal/storage/index/SortedIndexStorage.java
@@ -28,8 +28,6 @@ import org.jetbrains.annotations.Nullable;
*
* <p>This storage serves as a sorted mapping from a subset of a table's columns (a.k.a. index columns) to a set of {@link RowId}s
* from a single {@link org.apache.ignite.internal.storage.MvPartitionStorage} from the same table.
- *
- * @see org.apache.ignite.schema.definition.index.SortedIndexDefinition
*/
public interface SortedIndexStorage {
/** Exclude lower bound. */
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 605b77619d..dce0ebcc01 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
@@ -19,8 +19,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.addIndex;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.addIndex;
+import static org.apache.ignite.internal.schema.testutils.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.GREATER;
@@ -59,6 +59,11 @@ 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.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.ColumnarIndexDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.SortedIndexDefinition;
import org.apache.ignite.internal.storage.MvPartitionStorage;
import org.apache.ignite.internal.storage.RowId;
import org.apache.ignite.internal.storage.engine.MvTableStorage;
@@ -67,11 +72,6 @@ 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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.index.ColumnarIndexDefinition;
-import org.apache.ignite.schema.definition.index.SortedIndexDefinition;
import org.intellij.lang.annotations.MagicConstant;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.RepeatedTest;
diff --git a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
index ed8df0b8c7..f5b6896c50 100644
--- a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
+++ b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/AbstractMvTableStorageTest.java
@@ -41,15 +41,15 @@ import org.apache.ignite.internal.schema.BinaryTuple;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.IndexDefinition;
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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.index.IndexDefinition;
import org.junit.jupiter.api.Test;
/**
diff --git a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
index 6c7996a851..003aac6d35 100644
--- a/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
+++ b/modules/storage-api/src/testFixtures/java/org/apache/ignite/internal/storage/index/AbstractHashIndexStorageTest.java
@@ -18,8 +18,8 @@
package org.apache.ignite.internal.storage.index;
import static java.util.stream.Collectors.toList;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.addIndex;
-import static org.apache.ignite.internal.schema.configuration.SchemaConfigurationConverter.convert;
+import static org.apache.ignite.internal.schema.testutils.SchemaConfigurationConverter.addIndex;
+import static org.apache.ignite.internal.schema.testutils.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;
@@ -38,15 +38,15 @@ import org.apache.ignite.configuration.schemas.table.TableIndexView;
import org.apache.ignite.configuration.schemas.table.TablesConfiguration;
import org.apache.ignite.internal.configuration.util.ConfigurationUtil;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
+import org.apache.ignite.internal.schema.testutils.definition.index.HashIndexDefinition;
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.definition.ColumnDefinition;
-import org.apache.ignite.schema.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
-import org.apache.ignite.schema.definition.index.HashIndexDefinition;
import org.junit.jupiter.api.Test;
/**
diff --git a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
index 5cae5b7436..05ac2df910 100644
--- a/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
+++ b/modules/table/src/test/java/org/apache/ignite/internal/table/MutableRowTupleAdapterTest.java
@@ -61,9 +61,9 @@ import org.apache.ignite.internal.schema.marshaller.TupleMarshaller;
import org.apache.ignite.internal.schema.marshaller.TupleMarshallerException;
import org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl;
import org.apache.ignite.internal.schema.row.Row;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.apache.ignite.internal.table.impl.DummySchemaManagerImpl;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
-import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.table.Tuple;
import org.jetbrains.annotations.NotNull;
import org.junit.jupiter.api.Test;
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 fc25f6fc97..9f57fa586e 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
@@ -94,9 +94,11 @@ import org.apache.ignite.internal.raft.storage.impl.LocalLogStorageFactory;
import org.apache.ignite.internal.schema.SchemaDescriptor;
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.SchemaConfigurationConverter;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
+import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
+import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.storage.DataStorageManager;
import org.apache.ignite.internal.storage.DataStorageModules;
import org.apache.ignite.internal.storage.rocksdb.RocksDbDataStorageModule;
@@ -125,8 +127,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.definition.ColumnType;
-import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;