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

alexpl pushed a commit to branch sql-calcite
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/sql-calcite by this push:
     new 2ad9068  IGNITE-15909 Fallback to the UTF-8 when JVM default charset 
is not supported by Calcite - Fixes #9635.
2ad9068 is described below

commit 2ad9068df89ca35ba79f8a201bdc20344908d823
Author: Aleksey Plekhanov <[email protected]>
AuthorDate: Mon Dec 20 09:34:57 2021 +0300

    IGNITE-15909 Fallback to the UTF-8 when JVM default charset is not 
supported by Calcite - Fixes #9635.
    
    Signed-off-by: Aleksey Plekhanov <[email protected]>
---
 .../query/calcite/type/IgniteTypeFactory.java         | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java
 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java
index f523978..e2ac65f 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java
@@ -20,6 +20,7 @@ package 
org.apache.ignite.internal.processors.query.calcite.type;
 import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.sql.Timestamp;
 import java.time.Duration;
 import java.time.LocalDateTime;
@@ -35,6 +36,7 @@ import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeSystem;
 import org.apache.calcite.runtime.Geometries;
 import org.apache.calcite.sql.SqlIntervalQualifier;
+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;
@@ -53,8 +55,11 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
         TimeUnit.SECOND, SqlParserPos.ZERO);
 
     /** */
+    private final Charset charset;
+
+    /** */
     public IgniteTypeFactory() {
-        super(IgniteTypeSystem.INSTANCE);
+        this(IgniteTypeSystem.INSTANCE);
     }
 
     /**
@@ -62,6 +67,15 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
      */
     public IgniteTypeFactory(RelDataTypeSystem typeSystem) {
         super(typeSystem);
+
+        if (SqlUtil.translateCharacterSetName(Charset.defaultCharset().name()) 
!= null) {
+            // Use JVM default charset rather then Calcite default charset 
(ISO-8859-1).
+            charset = Charset.defaultCharset();
+        }
+        else {
+            // If JVM default charset is not supported by Calcite - use UTF-8.
+            charset = StandardCharsets.UTF_8;
+        }
     }
 
     /** {@inheritDoc} */
@@ -233,8 +247,7 @@ public class IgniteTypeFactory extends JavaTypeFactoryImpl {
 
     /** {@inheritDoc} */
     @Override public Charset getDefaultCharset() {
-        // Use JVM default charset rather then Calcite default charset 
(ISO-8859-1).
-        return Charset.defaultCharset();
+        return charset;
     }
 
     /** {@inheritDoc} */

Reply via email to