This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-20105
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/ignite-20105 by this push:
     new c95e9d3651 NativeTypes use precision and scale from Catalog.
c95e9d3651 is described below

commit c95e9d36516351abc189b12623e2f0febe3a024e
Author: amashenkov <[email protected]>
AuthorDate: Fri Aug 4 12:57:13 2023 +0300

    NativeTypes use precision and scale from Catalog.
---
 .../internal/catalog/commands/CatalogUtils.java    | 10 +++++++--
 .../internal/table/ItThinClientColocationTest.java |  4 ++--
 .../ignite/internal/schema/DecimalNativeType.java  |  6 ------
 .../apache/ignite/internal/schema/NativeTypes.java |  7 ++++---
 .../ignite/internal/schema/TemporalNativeType.java | 24 ++--------------------
 .../schema/AbstractSchemaConverterTest.java        |  3 ++-
 .../schema/serializer/AbstractSerializerTest.java  |  6 +++---
 7 files changed, 21 insertions(+), 39 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 f26ab62b65..00868794e7 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
@@ -59,6 +59,13 @@ public class CatalogUtils {
      */
     public static final int DEFAULT_DECIMAL_PRECISION = 19;
 
+    /**
+     * Default scale is 0.
+     *
+     * <p>SQL`16 part 2 section 6.1 syntax rule 22
+     */
+    public static final int DEFAULT_SCALE = 0;
+
     /**
      * Maximum TIME and TIMESTAMP precision is implementation-defined.
      *
@@ -169,8 +176,7 @@ public class CatalogUtils {
      */
     public static CatalogTableColumnDescriptor fromParams(ColumnParams params) 
{
         int precision = params.precision() != null ? params.precision() : 
defaultPrecision(params.type());
-        /* Default scale is 0. SQL`16 part 2 section 6.1 syntax rule 22 */
-        int scale = params.scale() != null ? params.scale() : 0;
+        int scale = params.scale() != null ? params.scale() : DEFAULT_SCALE;
         int length = params.length() != null ? params.length() : 
defaultLength(params.type());
 
         DefaultValue defaultValue = params.defaultValueDefinition();
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
index a79567d88c..c59fe675ac 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
@@ -27,6 +27,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.stream.Stream;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.client.handler.requests.table.ClientTableCommon;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
 import org.apache.ignite.internal.client.table.ClientColumn;
 import org.apache.ignite.internal.client.table.ClientSchema;
 import org.apache.ignite.internal.client.table.ClientTupleSerializer;
@@ -34,7 +35,6 @@ import org.apache.ignite.internal.schema.Column;
 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.schema.TemporalNativeType;
 import org.apache.ignite.internal.schema.marshaller.TupleMarshaller;
 import org.apache.ignite.internal.schema.marshaller.TupleMarshallerException;
 import org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl;
@@ -145,7 +145,7 @@ public class ItThinClientColocationTest extends 
ClusterPerClassIntegrationTest {
 
         var types2 = new ArrayList<NativeType>();
 
-        for (int i = 0; i <= TemporalNativeType.MAX_TIME_PRECISION; i++) {
+        for (int i = 0; i <= CatalogUtils.MAX_TIME_PRECISION; i++) {
             types2.add(NativeTypes.time(i));
             types2.add(NativeTypes.datetime(i));
             types2.add(NativeTypes.timestamp(i));
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 45949c98e3..cb642ba90f 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,12 +24,6 @@ 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 0a3415395a..0b0572c336 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,6 +20,7 @@ package org.apache.ignite.internal.schema;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.BitSet;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
 import org.jetbrains.annotations.Contract;
 
 /**
@@ -151,7 +152,7 @@ public class NativeTypes {
      * @see #time(int)
      */
     public static NativeType time() {
-        return 
TemporalNativeType.time(TemporalNativeType.DEFAULT_TIME_PRECISION);
+        return TemporalNativeType.time(CatalogUtils.DEFAULT_TIME_PRECISION);
     }
 
     /**
@@ -171,7 +172,7 @@ public class NativeTypes {
      * @see #datetime(int)
      */
     public static NativeType datetime() {
-        return 
TemporalNativeType.datetime(TemporalNativeType.DEFAULT_TIMESTAMP_PRECISION);
+        return 
TemporalNativeType.datetime(CatalogUtils.DEFAULT_TIMESTAMP_PRECISION);
     }
 
     /**
@@ -191,7 +192,7 @@ public class NativeTypes {
      * @see #timestamp(int)
      */
     public static NativeType timestamp() {
-        return 
TemporalNativeType.timestamp(TemporalNativeType.DEFAULT_TIMESTAMP_PRECISION);
+        return 
TemporalNativeType.timestamp(CatalogUtils.DEFAULT_TIMESTAMP_PRECISION);
     }
 
     /**
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 91164870c8..af7a9bb82d 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
@@ -17,33 +17,13 @@
 
 package org.apache.ignite.internal.schema;
 
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
 import org.apache.ignite.internal.tostring.S;
 
 /**
  * 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.
      *
@@ -92,7 +72,7 @@ public class TemporalNativeType extends NativeType {
     private TemporalNativeType(NativeTypeSpec typeSpec, int size, int 
precision) {
         super(typeSpec, size);
 
-        if (precision < 0 || precision > MAX_TIME_PRECISION) {
+        if (precision < 0 || precision > CatalogUtils.MAX_TIME_PRECISION) {
             throw new IllegalArgumentException("Unsupported fractional seconds 
precision: " + precision);
         }
 
diff --git 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/AbstractSchemaConverterTest.java
 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/AbstractSchemaConverterTest.java
index 81b7a67055..f405601fca 100644
--- 
a/modules/schema/src/test/java/org/apache/ignite/internal/schema/AbstractSchemaConverterTest.java
+++ 
b/modules/schema/src/test/java/org/apache/ignite/internal/schema/AbstractSchemaConverterTest.java
@@ -35,6 +35,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
 import 
org.apache.ignite.internal.schema.testutils.definition.ColumnType.DecimalColumnType;
 import org.apache.ignite.internal.util.ArrayUtils;
 
@@ -144,7 +145,7 @@ public class AbstractSchemaConverterTest {
             case TIMESTAMP:
                 return NativeTypes.timestamp();
             case NUMBER:
-                return 
NativeTypes.numberOf(DecimalNativeType.DEFAULT_PRECISION);
+                return 
NativeTypes.numberOf(CatalogUtils.DEFAULT_DECIMAL_PRECISION);
             case STRING:
                 return NativeTypes.stringOf(8);
             case UUID:
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 bcd6a78f74..3e5a08fa73 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
@@ -45,8 +45,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import org.apache.ignite.internal.catalog.commands.CatalogUtils;
 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;
@@ -338,7 +338,7 @@ public class AbstractSerializerTest {
             case DOUBLE:
                 return NativeTypes.DOUBLE;
             case DECIMAL:
-                return 
NativeTypes.decimalOf(DecimalNativeType.DEFAULT_PRECISION, 
DecimalNativeType.DEFAULT_SCALE);
+                return 
NativeTypes.decimalOf(CatalogUtils.DEFAULT_DECIMAL_PRECISION, 
CatalogUtils.DEFAULT_SCALE);
             case DATE:
                 return NativeTypes.DATE;
             case TIME:
@@ -348,7 +348,7 @@ public class AbstractSerializerTest {
             case TIMESTAMP:
                 return NativeTypes.timestamp();
             case NUMBER:
-                return 
NativeTypes.numberOf(DecimalNativeType.DEFAULT_PRECISION);
+                return 
NativeTypes.numberOf(CatalogUtils.DEFAULT_DECIMAL_PRECISION);
             case STRING:
                 return NativeTypes.stringOf(Byte.MAX_VALUE);
             case UUID:

Reply via email to