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