You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2023/08/10 11:50:06 UTC
[ignite-3] 01/01: wip
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-20192
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit 9c2a37b81a629d1b700d66522819e874faefb632
Author: amashenkov <an...@gmail.com>
AuthorDate: Thu Aug 10 14:49:57 2023 +0300
wip
---
.../apache/ignite/internal/catalog/commands/CatalogUtils.java | 9 ++++++++-
.../apache/ignite/internal/catalog/CatalogManagerSelfTest.java | 3 ++-
modules/platforms/cpp/tests/odbc-test/meta_queries_test.cpp | 2 +-
.../dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs | 2 +-
modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs | 2 +-
.../ignite/internal/runner/app/PlatformTestNodeRunner.java | 4 ++--
.../ignite/internal/runner/app/client/ItThinClientSqlTest.java | 3 ++-
.../apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java | 3 ++-
.../org/apache/ignite/internal/sql/engine/ItMetadataTest.java | 4 ++--
.../apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java | 4 ++--
modules/schema/build.gradle | 1 +
.../ignite/internal/schema/testutils/definition/ColumnType.java | 7 +++++--
.../ignite/internal/sql/engine/type/IgniteTypeFactory.java | 5 +++--
13 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
index 8353637f9a..63329bc423 100644
--- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
+++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/commands/CatalogUtils.java
@@ -124,6 +124,13 @@ public class CatalogUtils {
*/
public static final int DEFAULT_LENGTH = 1;
+ /**
+ * Max length for VARCHAR and VARBINARY is implementation defined.
+ *
+ * <p>SQL`16 part 2 section 6.1 syntax rule 8
+ */
+ public static final int DEFAULT_VARLEN_LENGTH = 0xffff;
+
private static final Map<ColumnType, Set<ColumnType>> ALTER_COLUMN_TYPE_TRANSITIONS = new EnumMap<>(ColumnType.class);
static {
@@ -257,7 +264,7 @@ public class CatalogUtils {
case BITMASK:
case STRING:
case BYTE_ARRAY:
- return Integer.MAX_VALUE;
+ return DEFAULT_VARLEN_LENGTH;
default:
return Math.max(DEFAULT_LENGTH, defaultPrecision(columnType));
}
diff --git a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
index 8228d1dda9..1aea1c3584 100644
--- a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
+++ b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java
@@ -24,6 +24,7 @@ import static org.apache.ignite.internal.catalog.CatalogService.DEFAULT_ZONE_NAM
import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_FILTER;
import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_PARTITION_COUNT;
import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_REPLICA_COUNT;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_VARLEN_LENGTH;
import static org.apache.ignite.internal.catalog.commands.CatalogUtils.INFINITE_TIMER_VALUE;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureExceptionMatcher.willThrow;
import static org.apache.ignite.internal.testframework.matchers.CompletableFutureExceptionMatcher.willThrowFast;
@@ -363,7 +364,7 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest {
assertEquals(DefaultValue.Type.CONSTANT, column.defaultValue().type());
assertEquals("Ignite!", ((DefaultValue.ConstantValue) column.defaultValue()).value());
- assertEquals(Integer.MAX_VALUE, column.length());
+ assertEquals(DEFAULT_VARLEN_LENGTH, column.length());
assertEquals(0, column.precision());
assertEquals(0, column.scale());
}
diff --git a/modules/platforms/cpp/tests/odbc-test/meta_queries_test.cpp b/modules/platforms/cpp/tests/odbc-test/meta_queries_test.cpp
index 6f0ccc480a..44ce7ed9c0 100644
--- a/modules/platforms/cpp/tests/odbc-test/meta_queries_test.cpp
+++ b/modules/platforms/cpp/tests/odbc-test/meta_queries_test.cpp
@@ -257,7 +257,7 @@ public:
check(m_statement, 5, "CHAR1", SQL_VARCHAR, 3, 0, SQL_NULLABLE);
check(m_statement, 6, "CHAR2", SQL_VARCHAR, 42, 0, SQL_NULLABLE);
check(m_statement, 7, "CHAR3", SQL_VARCHAR, 1, 0, SQL_NO_NULLS);
- check(m_statement, 8, "VCHAR", SQL_VARCHAR, 65536, 0, SQL_NULLABLE);
+ check(m_statement, 8, "VCHAR", SQL_VARCHAR, 65535, 0, SQL_NULLABLE);
}
void insert_test_string() {
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
index 036e93f425..8479df3514 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
@@ -399,7 +399,7 @@ public class IgniteDbDataReaderTests : IgniteTestsBase
Assert.AreEqual(typeof(string), schema[1].DataType);
Assert.AreEqual("varchar", schema[1].DataTypeName);
Assert.IsTrue(schema[1].AllowDBNull);
- Assert.AreEqual(65536, schema[1].NumericPrecision);
+ Assert.AreEqual(65535, schema[1].NumericPrecision);
Assert.IsNull(schema[1].NumericScale);
Assert.IsNotNull((schema[1] as IgniteDbColumn)?.ColumnMetadata);
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
index 1ae7b62c8f..8f5dcf91ab 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
@@ -301,7 +301,7 @@ namespace Apache.Ignite.Tests.Sql
Assert.IsTrue(columns[0].Nullable);
Assert.AreEqual(ColumnType.String, columns[0].Type);
Assert.AreEqual(int.MinValue, columns[0].Scale);
- Assert.AreEqual(65536, columns[0].Precision);
+ Assert.AreEqual(65535, columns[0].Precision);
Assert.AreEqual("ID", columns[1].Name);
Assert.AreEqual("ID", columns[1].Origin!.ColumnName);
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 ca7e03065a..d450bcdd96 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
@@ -39,6 +39,7 @@ import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.JobExecutionContext;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.internal.client.proto.ColumnTypeConverter;
import org.apache.ignite.internal.configuration.BasicAuthenticationProviderChange;
import org.apache.ignite.internal.configuration.SecurityConfiguration;
@@ -51,7 +52,6 @@ import org.apache.ignite.internal.schema.row.Row;
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.ColumnType.TemporalColumnType;
import org.apache.ignite.internal.schema.testutils.definition.TableDefinition;
import org.apache.ignite.internal.table.RecordBinaryViewImpl;
import org.apache.ignite.internal.table.distributed.TableManager;
@@ -271,7 +271,7 @@ public class PlatformTestNodeRunner {
SchemaConfigurationConverter.convert(schTbl, tblCh)
));
- int maxTimePrecision = TemporalColumnType.MAX_TIME_PRECISION;
+ int maxTimePrecision = CatalogUtils.MAX_TIME_PRECISION;
TableDefinition schTblAll = SchemaBuilders.tableBuilder(SCHEMA_NAME, TABLE_NAME_ALL_COLUMNS).columns(
SchemaBuilders.column(keyCol, ColumnType.INT64).build(),
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
index c761752485..339309eb4b 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/client/ItThinClientSqlTest.java
@@ -34,6 +34,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletionException;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.sql.ColumnMetadata;
import org.apache.ignite.sql.ColumnType;
@@ -289,7 +290,7 @@ public class ItThinClientSqlTest extends ItAbstractThinClientTest {
assertEquals(ColumnType.STRING, columns.get(0).type());
assertEquals(ColumnMetadata.UNDEFINED_SCALE, columns.get(0).scale());
- assertEquals(2 << 15, columns.get(0).precision());
+ assertEquals(CatalogUtils.DEFAULT_VARLEN_LENGTH, columns.get(0).precision());
assertEquals("ID", columns.get(1).name());
assertEquals("ID", columns.get(1).origin().columnName());
diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
index 694a28e8af..6f0d9d41c6 100644
--- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
+++ b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
@@ -53,6 +53,7 @@ import java.util.stream.IntStream;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import javax.annotation.Nullable;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
import org.apache.ignite.internal.client.sql.ClientSql;
import org.apache.ignite.internal.sql.api.ColumnMetadataImpl.ColumnOriginImpl;
import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
@@ -499,7 +500,7 @@ public class ItSqlAsynchronousApiTest extends ClusterPerClassIntegrationTest {
checkMetadata(new ColumnMetadataImpl(
"COL1",
ColumnType.STRING,
- 2 << 15,
+ CatalogUtils.DEFAULT_VARLEN_LENGTH,
ColumnMetadata.UNDEFINED_SCALE,
false,
new ColumnOriginImpl("PUBLIC", "TEST", "COL1")),
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 ef6bfcf166..0702740b87 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
@@ -182,13 +182,13 @@ public class ItMetadataTest extends ClusterPerClassIntegrationTest {
// Character string types
new MetadataMatcher().name("CHAR_C").type(ColumnType.STRING).precision(1).scale(UNDEFINED_SCALE),
new MetadataMatcher().name("CHAR_C2").type(ColumnType.STRING).precision(65536).scale(UNDEFINED_SCALE),
- new MetadataMatcher().name("VARCHAR_C").type(ColumnType.STRING).precision(65536).scale(UNDEFINED_SCALE),
+ new MetadataMatcher().name("VARCHAR_C").type(ColumnType.STRING).precision(65535).scale(UNDEFINED_SCALE),
new MetadataMatcher().name("VARCHAR_C2").type(ColumnType.STRING).precision(125).scale(UNDEFINED_SCALE),
// Binary string types
new MetadataMatcher().name("BINARY_C").type(ColumnType.BYTE_ARRAY).precision(1).scale(UNDEFINED_SCALE),
new MetadataMatcher().name("BINARY_C2").type(ColumnType.BYTE_ARRAY).precision(65536).scale(UNDEFINED_SCALE),
- new MetadataMatcher().name("VARBINARY_C").type(ColumnType.BYTE_ARRAY).precision(65536).scale(UNDEFINED_SCALE),
+ new MetadataMatcher().name("VARBINARY_C").type(ColumnType.BYTE_ARRAY).precision(65535).scale(UNDEFINED_SCALE),
new MetadataMatcher().name("VARBINARY_C2").type(ColumnType.BYTE_ARRAY).precision(125).scale(UNDEFINED_SCALE),
// Datetime types
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 8a533f8d47..e18107140b 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
@@ -812,8 +812,8 @@ public class ItSecondaryIndexTest extends ClusterPerClassIntegrationTest {
assertQuery("SELECT id FROM Birthday WHERE name BETWEEN 'B' AND 'D' AND name > ?")
.withParams("Bach")
.matches(containsIndexScan("PUBLIC", "BIRTHDAY", NAME_DATE_IDX))
- .matches(containsString("searchBounds=[[RangeBounds [lowerBound=$GREATEST2(_UTF-8'B':VARCHAR(65536) "
- + "CHARACTER SET \"UTF-8\", ?0), upperBound=_UTF-8'D':VARCHAR(65536) CHARACTER SET \"UTF-8\""))
+ .matches(containsString("searchBounds=[[RangeBounds [lowerBound=$GREATEST2(_UTF-8'B':VARCHAR(65535) "
+ + "CHARACTER SET \"UTF-8\", ?0), upperBound=_UTF-8'D':VARCHAR(65535) CHARACTER SET \"UTF-8\""))
.returns(2)
.returns(6)
.check();
diff --git a/modules/schema/build.gradle b/modules/schema/build.gradle
index 0fd37e6cdd..b97177d6cd 100644
--- a/modules/schema/build.gradle
+++ b/modules/schema/build.gradle
@@ -56,6 +56,7 @@ dependencies {
testFixturesImplementation project(':ignite-api')
testFixturesImplementation project(':ignite-bytecode')
testFixturesImplementation project(':ignite-configuration-api')
+ testFixturesImplementation project(':ignite-catalog')
testFixturesImplementation(testFixtures(project(':ignite-core')))
testFixturesImplementation libs.jetbrains.annotations
testFixturesImplementation libs.junit5.api
diff --git a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
index e7b0cdb1a2..4ef217210f 100644
--- a/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
+++ b/modules/schema/src/testFixtures/java/org/apache/ignite/internal/schema/testutils/definition/ColumnType.java
@@ -17,7 +17,10 @@
package org.apache.ignite.internal.schema.testutils.definition;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_VARLEN_LENGTH;
+
import java.util.Objects;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
/**
* Predefined column types.
@@ -258,10 +261,10 @@ public class ColumnType {
*/
public static class VarLenColumnType extends ColumnType {
/** String varlen type of unlimited length. */
- private static final VarLenColumnType UNLIMITED_STRING = new VarLenColumnType(ColumnTypeSpec.STRING, 0);
+ private static final VarLenColumnType UNLIMITED_STRING = new VarLenColumnType(ColumnTypeSpec.STRING, DEFAULT_VARLEN_LENGTH);
/** Blob varlen type of unlimited length. */
- private static final VarLenColumnType UNLIMITED_BLOB = new VarLenColumnType(ColumnTypeSpec.BYTES, 0);
+ private static final VarLenColumnType UNLIMITED_BLOB = new VarLenColumnType(ColumnTypeSpec.BYTES, DEFAULT_VARLEN_LENGTH);
/** Max length. */
private final int length;
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 e815440d53..83ae1aadf8 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
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.sql.engine.type;
import static org.apache.calcite.rel.type.RelDataType.PRECISION_NOT_SPECIFIED;
+import static org.apache.ignite.internal.catalog.commands.CatalogUtils.DEFAULT_VARLEN_LENGTH;
import static org.apache.ignite.internal.util.CollectionUtils.first;
import java.lang.reflect.Type;
@@ -260,12 +261,12 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
case VARCHAR:
case CHAR:
return relType.getPrecision() == PRECISION_NOT_SPECIFIED
- ? NativeTypes.stringOf(Integer.MAX_VALUE)
+ ? NativeTypes.stringOf(DEFAULT_VARLEN_LENGTH)
: NativeTypes.stringOf(relType.getPrecision());
case BINARY:
case VARBINARY:
return relType.getPrecision() == PRECISION_NOT_SPECIFIED
- ? NativeTypes.blobOf(Integer.MAX_VALUE)
+ ? NativeTypes.blobOf(DEFAULT_VARLEN_LENGTH)
: NativeTypes.blobOf(relType.getPrecision());
case ANY:
if (relType instanceof IgniteCustomType) {