You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/06/30 19:44:26 UTC
svn commit: r1498164 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
test/queries/clientpositive/unicode_notation.q
test/results/clientpositive/unicode_notation.q.out
Author: hashutosh
Date: Sun Jun 30 17:44:26 2013
New Revision: 1498164
URL: http://svn.apache.org/r1498164
Log:
HIVE-4618 : show create table creating unusable DDL when field delimiter is \001 (Navis via Ashutosh Chauhan)
Added:
hive/trunk/ql/src/test/queries/clientpositive/unicode_notation.q
hive/trunk/ql/src/test/results/clientpositive/unicode_notation.q.out
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java?rev=1498164&r1=1498163&r2=1498164&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java Sun Jun 30 17:44:26 2013
@@ -427,6 +427,8 @@ public abstract class BaseSemanticAnalyz
}
}
+ private static final int[] multiplier = new int[] {1000, 100, 10, 1};
+
@SuppressWarnings("nls")
public static String unescapeSQLString(String b) {
@@ -452,6 +454,18 @@ public abstract class BaseSemanticAnalyz
continue;
}
+ if (currentChar == '\\' && (i + 6 < b.length()) && b.charAt(i + 1) == 'u') {
+ int code = 0;
+ int base = i + 2;
+ for (int j = 0; j < 4; j++) {
+ int digit = Character.digit(b.charAt(j + base), 16);
+ code += digit * multiplier[j];
+ }
+ sb.append((char)code);
+ i += 5;
+ continue;
+ }
+
if (currentChar == '\\' && (i + 4 < b.length())) {
char i1 = b.charAt(i + 1);
char i2 = b.charAt(i + 2);
Added: hive/trunk/ql/src/test/queries/clientpositive/unicode_notation.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/unicode_notation.q?rev=1498164&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/unicode_notation.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/unicode_notation.q Sun Jun 30 17:44:26 2013
@@ -0,0 +1,13 @@
+-- HIVE-4618 hive should accept unicode notation like \uxxxx
+
+CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001';
+desc formatted k1;
+drop table k1;
+
+CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001';
+desc formatted k1;
+drop table k1;
+
+CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';
+desc formatted k1;
+drop table k1;
Added: hive/trunk/ql/src/test/results/clientpositive/unicode_notation.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/unicode_notation.q.out?rev=1498164&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/unicode_notation.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/unicode_notation.q.out Sun Jun 30 17:44:26 2013
@@ -0,0 +1,130 @@
+PREHOOK: query: -- HIVE-4618 hive should accept unicode notation like \uxxxx
+
+CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001'
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- HIVE-4618 hive should accept unicode notation like \uxxxx
+
+CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@k1
+PREHOOK: query: desc formatted k1
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: desc formatted k1
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+a string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ field.delim \u0001
+ serialization.format \u0001
+PREHOOK: query: drop table k1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@k1
+PREHOOK: Output: default@k1
+POSTHOOK: query: drop table k1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@k1
+POSTHOOK: Output: default@k1
+PREHOOK: query: CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@k1
+PREHOOK: query: desc formatted k1
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: desc formatted k1
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+a string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ field.delim \u0001
+ serialization.format \u0001
+PREHOOK: query: drop table k1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@k1
+PREHOOK: Output: default@k1
+POSTHOOK: query: drop table k1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@k1
+POSTHOOK: Output: default@k1
+PREHOOK: query: CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE k1( a string)ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@k1
+PREHOOK: query: desc formatted k1
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: desc formatted k1
+POSTHOOK: type: DESCTABLE
+# col_name data_type comment
+
+a string None
+
+# Detailed Table Information
+Database: default
+#### A masked pattern was here ####
+Protect Mode: None
+Retention: 0
+#### A masked pattern was here ####
+Table Type: MANAGED_TABLE
+Table Parameters:
+#### A masked pattern was here ####
+
+# Storage Information
+SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+InputFormat: org.apache.hadoop.mapred.TextInputFormat
+OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
+Compressed: No
+Num Buckets: -1
+Bucket Columns: []
+Sort Columns: []
+Storage Desc Params:
+ field.delim |
+ serialization.format |
+PREHOOK: query: drop table k1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@k1
+PREHOOK: Output: default@k1
+POSTHOOK: query: drop table k1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@k1
+POSTHOOK: Output: default@k1