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 2012/09/08 01:50:38 UTC

svn commit: r1382211 [1/3] - in /hive/trunk: ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/ serde/if/test/ serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/ serde/src/java/org/apache/hadoop/hive/serde...

Author: hashutosh
Date: Fri Sep  7 23:50:38 2012
New Revision: 1382211

URL: http://svn.apache.org/viewvc?rev=1382211&view=rev
Log:
HIVE-3323 : enum to string conversions (Travis Crawford via Ashutosh Chauhan)

Added:
    hive/trunk/ql/src/test/queries/clientpositive/convert_enum_to_string.q
    hive/trunk/ql/src/test/results/clientpositive/convert_enum_to_string.q.out
    hive/trunk/serde/if/test/megastruct.thrift
    hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MegaStruct.java
    hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MiniStruct.java
    hive/trunk/serde/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/serde2/thrift/test/MyEnum.java
Modified:
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java

Added: hive/trunk/ql/src/test/queries/clientpositive/convert_enum_to_string.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/convert_enum_to_string.q?rev=1382211&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/convert_enum_to_string.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/convert_enum_to_string.q Fri Sep  7 23:50:38 2012
@@ -0,0 +1,10 @@
+-- Ensure Enum fields are converted to strings (instead of struct<value:int>)
+
+create table convert_enum_to_string
+  partitioned by (b string)
+  row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer"
+    with serdeproperties (
+      "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.MegaStruct",
+      "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol");
+
+describe convert_enum_to_string;

Added: hive/trunk/ql/src/test/results/clientpositive/convert_enum_to_string.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/convert_enum_to_string.q.out?rev=1382211&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/convert_enum_to_string.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/convert_enum_to_string.q.out Fri Sep  7 23:50:38 2012
@@ -0,0 +1,44 @@
+PREHOOK: query: -- Ensure Enum fields are converted to strings (instead of struct<value:int>)
+
+create table convert_enum_to_string
+  partitioned by (b string)
+  row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer"
+    with serdeproperties (
+      "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.MegaStruct",
+      "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol")
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- Ensure Enum fields are converted to strings (instead of struct<value:int>)
+
+create table convert_enum_to_string
+  partitioned by (b string)
+  row format serde "org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer"
+    with serdeproperties (
+      "serialization.class"="org.apache.hadoop.hive.serde2.thrift.test.MegaStruct",
+      "serialization.format"="org.apache.thrift.protocol.TBinaryProtocol")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@convert_enum_to_string
+PREHOOK: query: describe convert_enum_to_string
+PREHOOK: type: DESCTABLE
+POSTHOOK: query: describe convert_enum_to_string
+POSTHOOK: type: DESCTABLE
+my_bool	boolean	from deserializer
+my_byte	tinyint	from deserializer
+my_16bit_int	smallint	from deserializer
+my_32bit_int	int	from deserializer
+my_64bit_int	bigint	from deserializer
+my_double	double	from deserializer
+my_string	string	from deserializer
+my_binary	struct<hb:binary,offset:int,isreadonly:boolean,bigendian:boolean,nativebyteorder:boolean>	from deserializer
+my_string_string_map	map<string,string>	from deserializer
+my_string_enum_map	map<string,string>	from deserializer
+my_enum_string_map	map<string,string>	from deserializer
+my_enum_struct_map	map<string,struct<my_string:string,my_enum:string>>	from deserializer
+my_enum_stringlist_map	map<string,array<string>>	from deserializer
+my_enum_structlist_map	map<string,array<struct<my_string:string,my_enum:string>>>	from deserializer
+my_stringlist	array<string>	from deserializer
+my_structlist	array<struct<my_string:string,my_enum:string>>	from deserializer
+my_enumlist	array<string>	from deserializer
+my_stringset	struct<>	from deserializer
+my_enumset	struct<>	from deserializer
+my_structset	struct<>	from deserializer
+b	string	

Added: hive/trunk/serde/if/test/megastruct.thrift
URL: http://svn.apache.org/viewvc/hive/trunk/serde/if/test/megastruct.thrift?rev=1382211&view=auto
==============================================================================
--- hive/trunk/serde/if/test/megastruct.thrift (added)
+++ hive/trunk/serde/if/test/megastruct.thrift Fri Sep  7 23:50:38 2012
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ */
+
+/**
+ * MetaStruct intends to stress test Hive's thrift support by having all
+ * sorts of crazy but valid field types. Please add new fields if you find
+ * a case that's not handled correctly.
+ */
+
+namespace java org.apache.hadoop.hive.serde2.thrift.test
+
+enum MyEnum {
+  LLAMA = 1,
+  ALPACA = 2
+}
+
+struct MiniStruct {
+  1: optional string my_string,
+  2: optional MyEnum my_enum
+}
+
+struct MegaStruct {
+   1: optional bool my_bool,
+   2: optional byte my_byte,
+   3: optional i16 my_16bit_int,
+   4: optional i32 my_32bit_int,
+   5: optional i64 my_64bit_int,
+   6: optional double my_double,
+   7: optional string my_string,
+   8: optional binary my_binary,
+   9: optional map<string, string> my_string_string_map,
+  10: optional map<string, MyEnum> my_string_enum_map,
+  11: optional map<MyEnum, string> my_enum_string_map,
+  12: optional map<MyEnum, MiniStruct> my_enum_struct_map,
+  13: optional map<MyEnum, list<string>> my_enum_stringlist_map,
+  14: optional map<MyEnum, list<MiniStruct>> my_enum_structlist_map,
+  15: optional list<string> my_stringlist,
+  16: optional list<MiniStruct> my_structlist,
+  17: optional list<MyEnum> my_enumlist,
+  18: optional set<string> my_stringset,
+  19: optional set<MyEnum> my_enumset,
+  20: optional set<MiniStruct> my_structset
+}