From d1c6476f83895f14e84de109b896caa3e52a457a Mon Sep 17 00:00:00 2001 From: nareshpr Date: Wed, 13 Dec 2017 12:06:49 +0530 Subject: [PATCH] [HIVE-18112] show create for view having special char in where clause is not showing properly --- .../java/org/apache/hadoop/hive/ql/exec/DDLTask.java | 9 +++++---- ql/src/test/queries/clientpositive/showcreateview.q | 2 ++ .../test/results/clientpositive/showcreateview.q.out | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 ql/src/test/queries/clientpositive/showcreateview.q create mode 100644 ql/src/test/results/clientpositive/showcreateview.q.out diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 76abc62..5f0065a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -31,6 +31,7 @@ import java.io.Writer; import java.net.URI; import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; import java.sql.SQLException; import java.util.AbstractList; import java.util.ArrayList; @@ -2136,7 +2137,7 @@ private int showCreateDatabase(Hive db, DataOutputStream outStream, String datab createDb_str.append(propertiesToString).append(")\n"); } - outStream.write(createDb_str.toString().getBytes("UTF-8")); + outStream.write(createDb_str.toString().getBytes(StandardCharsets.UTF_8)); return 0; } @@ -2186,7 +2187,7 @@ private int showCreateTable(Hive db, DataOutputStream outStream, String tableNam if (tbl.isView()) { String createTab_stmt = "CREATE VIEW `" + tableName + "` AS " + tbl.getViewExpandedText(); - outStream.writeBytes(createTab_stmt.toString()); + outStream.write(createTab_stmt.getBytes(StandardCharsets.UTF_8)); return 0; } @@ -2352,7 +2353,7 @@ else if (sortCol.getOrder() == BaseSemanticAnalyzer.HIVE_COLUMN_ORDER_DESC) { } createTab_stmt.add(TBL_PROPERTIES, tbl_properties); - outStream.writeBytes(createTab_stmt.render()); + outStream.write(createTab_stmt.render().getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { LOG.info("show create table: " + stringifyException(e)); return 1; @@ -3189,7 +3190,7 @@ private void writeToFile(String data, String file) throws IOException { FSDataOutputStream out = fs.create(resFile); try { if (data != null && !data.isEmpty()) { - OutputStreamWriter writer = new OutputStreamWriter(out, "UTF-8"); + OutputStreamWriter writer = new OutputStreamWriter(out, StandardCharsets.UTF_8); writer.write(data); writer.write((char) terminator); writer.flush(); diff --git a/ql/src/test/queries/clientpositive/showcreateview.q b/ql/src/test/queries/clientpositive/showcreateview.q new file mode 100644 index 0000000..bfe6914 --- /dev/null +++ b/ql/src/test/queries/clientpositive/showcreateview.q @@ -0,0 +1,2 @@ +CREATE VIEW ViewWithSpecialChars AS SELECT key FROM src where key = 'abcÖdefÖgh'; +SHOW CREATE TABLE ViewWithSpecialChars; diff --git a/ql/src/test/results/clientpositive/showcreateview.q.out b/ql/src/test/results/clientpositive/showcreateview.q.out new file mode 100644 index 0000000..e4d7d62 --- /dev/null +++ b/ql/src/test/results/clientpositive/showcreateview.q.out @@ -0,0 +1,18 @@ +PREHOOK: query: CREATE VIEW ViewWithSpecialChars AS SELECT key FROM src where key = 'abcÖdefÖgh' +PREHOOK: type: CREATEVIEW +PREHOOK: Input: default@src +PREHOOK: Output: database:default +PREHOOK: Output: default@ViewWithSpecialChars +POSTHOOK: query: CREATE VIEW ViewWithSpecialChars AS SELECT key FROM src where key = 'abcÖdefÖgh' +POSTHOOK: type: CREATEVIEW +POSTHOOK: Input: default@src +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ViewWithSpecialChars +POSTHOOK: Lineage: ViewWithSpecialChars.key SIMPLE [] +PREHOOK: query: SHOW CREATE TABLE ViewWithSpecialChars +PREHOOK: type: SHOW_CREATETABLE +PREHOOK: Input: default@viewwithspecialchars +POSTHOOK: query: SHOW CREATE TABLE ViewWithSpecialChars +POSTHOOK: type: SHOW_CREATETABLE +POSTHOOK: Input: default@viewwithspecialchars +CREATE VIEW `ViewWithSpecialChars` AS SELECT `src`.`key` FROM `default`.`src` where `src`.`key` = 'abcÖdefÖgh' -- 2.10.1