From fe0f45146724ce68b757d90e693c7e6d860f8971 Mon Sep 17 00:00:00 2001 From: liyun Liu Date: Thu, 4 May 2017 12:46:58 +0800 Subject: [PATCH] DRILL-4039:Query fails when non-ascii characters are used in string literals --- .../apache/drill/exec/store/hive/schema/DrillHiveTable.java | 5 +++-- .../drill/exec/planner/sql/parser/DrillParserUtil.java | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java index af02c0aad2b..1e65ee052e1 100644 --- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java +++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java @@ -18,6 +18,7 @@ package org.apache.drill.exec.store.hive.schema; import java.nio.charset.Charset; +import org.apache.drill.exec.planner.sql.parser.DrillParserUtil; import java.util.ArrayList; import java.util.List; @@ -117,7 +118,7 @@ private RelDataType getRelDataTypeFromHivePrimitiveType(RelDataTypeFactory typeF int maxLen = TypeInfoUtils.getCharacterLengthForType(pTypeInfo); return typeFactory.createTypeWithCharsetAndCollation( typeFactory.createSqlType(SqlTypeName.VARCHAR, maxLen), /*input type*/ - Charset.forName("ISO-8859-1"), /*unicode char set*/ + Charset.forName(DrillParserUtil.CHARSET), SqlCollation.IMPLICIT /* TODO: need to decide if implicit is the correct one */ ); } @@ -126,7 +127,7 @@ private RelDataType getRelDataTypeFromHivePrimitiveType(RelDataTypeFactory typeF int maxLen = TypeInfoUtils.getCharacterLengthForType(pTypeInfo); return typeFactory.createTypeWithCharsetAndCollation( typeFactory.createSqlType(SqlTypeName.CHAR, maxLen), /*input type*/ - Charset.forName("ISO-8859-1"), /*unicode char set*/ + Charset.forName(DrillParserUtil.CHARSET), SqlCollation.IMPLICIT ); } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java index b6eb31afc37..39656e43542 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/DrillParserUtil.java @@ -24,6 +24,7 @@ import org.apache.calcite.sql.SqlOperator; import org.apache.calcite.sql.parser.SqlParserPos; import org.apache.calcite.sql.parser.SqlParserUtil; +import org.apache.calcite.util.Util; import com.google.common.collect.Lists; @@ -32,7 +33,7 @@ */ public class DrillParserUtil { - public static final String CHARSET = "ISO-8859-1"; + public static final String CHARSET = Util.getDefaultCharset().name(); public static SqlNode createCondition(SqlNode left, SqlOperator op, SqlNode right) {