You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2012/08/25 04:44:25 UTC

svn commit: r1377187 [7/8] - in /hive/trunk: common/src/java/org/apache/hadoop/hive/conf/ metastore/if/ metastore/scripts/upgrade/derby/ metastore/scripts/upgrade/mysql/ metastore/scripts/upgrade/oracle/ metastore/scripts/upgrade/postgres/ metastore/sr...

Modified: hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py Sat Aug 25 02:44:22 2012
@@ -4815,10 +4815,10 @@ class get_databases_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype186, _size183) = iprot.readListBegin()
-          for _i187 in xrange(_size183):
-            _elem188 = iprot.readString();
-            self.success.append(_elem188)
+          (_etype223, _size220) = iprot.readListBegin()
+          for _i224 in xrange(_size220):
+            _elem225 = iprot.readString();
+            self.success.append(_elem225)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -4841,8 +4841,8 @@ class get_databases_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter189 in self.success:
-        oprot.writeString(iter189)
+      for iter226 in self.success:
+        oprot.writeString(iter226)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -4937,10 +4937,10 @@ class get_all_databases_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype193, _size190) = iprot.readListBegin()
-          for _i194 in xrange(_size190):
-            _elem195 = iprot.readString();
-            self.success.append(_elem195)
+          (_etype230, _size227) = iprot.readListBegin()
+          for _i231 in xrange(_size227):
+            _elem232 = iprot.readString();
+            self.success.append(_elem232)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -4963,8 +4963,8 @@ class get_all_databases_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter196 in self.success:
-        oprot.writeString(iter196)
+      for iter233 in self.success:
+        oprot.writeString(iter233)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -5674,12 +5674,12 @@ class get_type_all_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype198, _vtype199, _size197 ) = iprot.readMapBegin() 
-          for _i201 in xrange(_size197):
-            _key202 = iprot.readString();
-            _val203 = Type()
-            _val203.read(iprot)
-            self.success[_key202] = _val203
+          (_ktype235, _vtype236, _size234 ) = iprot.readMapBegin() 
+          for _i238 in xrange(_size234):
+            _key239 = iprot.readString();
+            _val240 = Type()
+            _val240.read(iprot)
+            self.success[_key239] = _val240
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -5702,9 +5702,9 @@ class get_type_all_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.success))
-      for kiter204,viter205 in self.success.items():
-        oprot.writeString(kiter204)
-        viter205.write(oprot)
+      for kiter241,viter242 in self.success.items():
+        oprot.writeString(kiter241)
+        viter242.write(oprot)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.o2 is not None:
@@ -5835,11 +5835,11 @@ class get_fields_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype209, _size206) = iprot.readListBegin()
-          for _i210 in xrange(_size206):
-            _elem211 = FieldSchema()
-            _elem211.read(iprot)
-            self.success.append(_elem211)
+          (_etype246, _size243) = iprot.readListBegin()
+          for _i247 in xrange(_size243):
+            _elem248 = FieldSchema()
+            _elem248.read(iprot)
+            self.success.append(_elem248)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -5874,8 +5874,8 @@ class get_fields_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter212 in self.success:
-        iter212.write(oprot)
+      for iter249 in self.success:
+        iter249.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -6014,11 +6014,11 @@ class get_schema_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype216, _size213) = iprot.readListBegin()
-          for _i217 in xrange(_size213):
-            _elem218 = FieldSchema()
-            _elem218.read(iprot)
-            self.success.append(_elem218)
+          (_etype253, _size250) = iprot.readListBegin()
+          for _i254 in xrange(_size250):
+            _elem255 = FieldSchema()
+            _elem255.read(iprot)
+            self.success.append(_elem255)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -6053,8 +6053,8 @@ class get_schema_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter219 in self.success:
-        iter219.write(oprot)
+      for iter256 in self.success:
+        iter256.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -6680,10 +6680,10 @@ class get_tables_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype223, _size220) = iprot.readListBegin()
-          for _i224 in xrange(_size220):
-            _elem225 = iprot.readString();
-            self.success.append(_elem225)
+          (_etype260, _size257) = iprot.readListBegin()
+          for _i261 in xrange(_size257):
+            _elem262 = iprot.readString();
+            self.success.append(_elem262)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -6706,8 +6706,8 @@ class get_tables_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter226 in self.success:
-        oprot.writeString(iter226)
+      for iter263 in self.success:
+        oprot.writeString(iter263)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -6820,10 +6820,10 @@ class get_all_tables_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype230, _size227) = iprot.readListBegin()
-          for _i231 in xrange(_size227):
-            _elem232 = iprot.readString();
-            self.success.append(_elem232)
+          (_etype267, _size264) = iprot.readListBegin()
+          for _i268 in xrange(_size264):
+            _elem269 = iprot.readString();
+            self.success.append(_elem269)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -6846,8 +6846,8 @@ class get_all_tables_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter233 in self.success:
-        oprot.writeString(iter233)
+      for iter270 in self.success:
+        oprot.writeString(iter270)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -7064,10 +7064,10 @@ class get_table_objects_by_name_args:
       elif fid == 2:
         if ftype == TType.LIST:
           self.tbl_names = []
-          (_etype237, _size234) = iprot.readListBegin()
-          for _i238 in xrange(_size234):
-            _elem239 = iprot.readString();
-            self.tbl_names.append(_elem239)
+          (_etype274, _size271) = iprot.readListBegin()
+          for _i275 in xrange(_size271):
+            _elem276 = iprot.readString();
+            self.tbl_names.append(_elem276)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -7088,8 +7088,8 @@ class get_table_objects_by_name_args:
     if self.tbl_names is not None:
       oprot.writeFieldBegin('tbl_names', TType.LIST, 2)
       oprot.writeListBegin(TType.STRING, len(self.tbl_names))
-      for iter240 in self.tbl_names:
-        oprot.writeString(iter240)
+      for iter277 in self.tbl_names:
+        oprot.writeString(iter277)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -7144,11 +7144,11 @@ class get_table_objects_by_name_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype244, _size241) = iprot.readListBegin()
-          for _i245 in xrange(_size241):
-            _elem246 = Table()
-            _elem246.read(iprot)
-            self.success.append(_elem246)
+          (_etype281, _size278) = iprot.readListBegin()
+          for _i282 in xrange(_size278):
+            _elem283 = Table()
+            _elem283.read(iprot)
+            self.success.append(_elem283)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -7183,8 +7183,8 @@ class get_table_objects_by_name_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter247 in self.success:
-        iter247.write(oprot)
+      for iter284 in self.success:
+        iter284.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -7335,10 +7335,10 @@ class get_table_names_by_filter_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype251, _size248) = iprot.readListBegin()
-          for _i252 in xrange(_size248):
-            _elem253 = iprot.readString();
-            self.success.append(_elem253)
+          (_etype288, _size285) = iprot.readListBegin()
+          for _i289 in xrange(_size285):
+            _elem290 = iprot.readString();
+            self.success.append(_elem290)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -7373,8 +7373,8 @@ class get_table_names_by_filter_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter254 in self.success:
-        oprot.writeString(iter254)
+      for iter291 in self.success:
+        oprot.writeString(iter291)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -8097,11 +8097,11 @@ class add_partitions_args:
       if fid == 1:
         if ftype == TType.LIST:
           self.new_parts = []
-          (_etype258, _size255) = iprot.readListBegin()
-          for _i259 in xrange(_size255):
-            _elem260 = Partition()
-            _elem260.read(iprot)
-            self.new_parts.append(_elem260)
+          (_etype295, _size292) = iprot.readListBegin()
+          for _i296 in xrange(_size292):
+            _elem297 = Partition()
+            _elem297.read(iprot)
+            self.new_parts.append(_elem297)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -8118,8 +8118,8 @@ class add_partitions_args:
     if self.new_parts is not None:
       oprot.writeFieldBegin('new_parts', TType.LIST, 1)
       oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
-      for iter261 in self.new_parts:
-        iter261.write(oprot)
+      for iter298 in self.new_parts:
+        iter298.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -8280,10 +8280,10 @@ class append_partition_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype265, _size262) = iprot.readListBegin()
-          for _i266 in xrange(_size262):
-            _elem267 = iprot.readString();
-            self.part_vals.append(_elem267)
+          (_etype302, _size299) = iprot.readListBegin()
+          for _i303 in xrange(_size299):
+            _elem304 = iprot.readString();
+            self.part_vals.append(_elem304)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -8308,8 +8308,8 @@ class append_partition_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter268 in self.part_vals:
-        oprot.writeString(iter268)
+      for iter305 in self.part_vals:
+        oprot.writeString(iter305)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -8657,10 +8657,10 @@ class drop_partition_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype272, _size269) = iprot.readListBegin()
-          for _i273 in xrange(_size269):
-            _elem274 = iprot.readString();
-            self.part_vals.append(_elem274)
+          (_etype309, _size306) = iprot.readListBegin()
+          for _i310 in xrange(_size306):
+            _elem311 = iprot.readString();
+            self.part_vals.append(_elem311)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -8690,8 +8690,8 @@ class drop_partition_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter275 in self.part_vals:
-        oprot.writeString(iter275)
+      for iter312 in self.part_vals:
+        oprot.writeString(iter312)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.deleteData is not None:
@@ -9024,10 +9024,10 @@ class get_partition_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype279, _size276) = iprot.readListBegin()
-          for _i280 in xrange(_size276):
-            _elem281 = iprot.readString();
-            self.part_vals.append(_elem281)
+          (_etype316, _size313) = iprot.readListBegin()
+          for _i317 in xrange(_size313):
+            _elem318 = iprot.readString();
+            self.part_vals.append(_elem318)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9052,8 +9052,8 @@ class get_partition_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter282 in self.part_vals:
-        oprot.writeString(iter282)
+      for iter319 in self.part_vals:
+        oprot.writeString(iter319)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -9208,10 +9208,10 @@ class get_partition_with_auth_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype286, _size283) = iprot.readListBegin()
-          for _i287 in xrange(_size283):
-            _elem288 = iprot.readString();
-            self.part_vals.append(_elem288)
+          (_etype323, _size320) = iprot.readListBegin()
+          for _i324 in xrange(_size320):
+            _elem325 = iprot.readString();
+            self.part_vals.append(_elem325)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9223,10 +9223,10 @@ class get_partition_with_auth_args:
       elif fid == 5:
         if ftype == TType.LIST:
           self.group_names = []
-          (_etype292, _size289) = iprot.readListBegin()
-          for _i293 in xrange(_size289):
-            _elem294 = iprot.readString();
-            self.group_names.append(_elem294)
+          (_etype329, _size326) = iprot.readListBegin()
+          for _i330 in xrange(_size326):
+            _elem331 = iprot.readString();
+            self.group_names.append(_elem331)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9251,8 +9251,8 @@ class get_partition_with_auth_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter295 in self.part_vals:
-        oprot.writeString(iter295)
+      for iter332 in self.part_vals:
+        oprot.writeString(iter332)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.user_name is not None:
@@ -9262,8 +9262,8 @@ class get_partition_with_auth_args:
     if self.group_names is not None:
       oprot.writeFieldBegin('group_names', TType.LIST, 5)
       oprot.writeListBegin(TType.STRING, len(self.group_names))
-      for iter296 in self.group_names:
-        oprot.writeString(iter296)
+      for iter333 in self.group_names:
+        oprot.writeString(iter333)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -9655,11 +9655,11 @@ class get_partitions_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype300, _size297) = iprot.readListBegin()
-          for _i301 in xrange(_size297):
-            _elem302 = Partition()
-            _elem302.read(iprot)
-            self.success.append(_elem302)
+          (_etype337, _size334) = iprot.readListBegin()
+          for _i338 in xrange(_size334):
+            _elem339 = Partition()
+            _elem339.read(iprot)
+            self.success.append(_elem339)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9688,8 +9688,8 @@ class get_partitions_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter303 in self.success:
-        iter303.write(oprot)
+      for iter340 in self.success:
+        iter340.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -9776,10 +9776,10 @@ class get_partitions_with_auth_args:
       elif fid == 5:
         if ftype == TType.LIST:
           self.group_names = []
-          (_etype307, _size304) = iprot.readListBegin()
-          for _i308 in xrange(_size304):
-            _elem309 = iprot.readString();
-            self.group_names.append(_elem309)
+          (_etype344, _size341) = iprot.readListBegin()
+          for _i345 in xrange(_size341):
+            _elem346 = iprot.readString();
+            self.group_names.append(_elem346)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9812,8 +9812,8 @@ class get_partitions_with_auth_args:
     if self.group_names is not None:
       oprot.writeFieldBegin('group_names', TType.LIST, 5)
       oprot.writeListBegin(TType.STRING, len(self.group_names))
-      for iter310 in self.group_names:
-        oprot.writeString(iter310)
+      for iter347 in self.group_names:
+        oprot.writeString(iter347)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -9865,11 +9865,11 @@ class get_partitions_with_auth_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype314, _size311) = iprot.readListBegin()
-          for _i315 in xrange(_size311):
-            _elem316 = Partition()
-            _elem316.read(iprot)
-            self.success.append(_elem316)
+          (_etype351, _size348) = iprot.readListBegin()
+          for _i352 in xrange(_size348):
+            _elem353 = Partition()
+            _elem353.read(iprot)
+            self.success.append(_elem353)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -9898,8 +9898,8 @@ class get_partitions_with_auth_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter317 in self.success:
-        iter317.write(oprot)
+      for iter354 in self.success:
+        iter354.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -10040,10 +10040,10 @@ class get_partition_names_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype321, _size318) = iprot.readListBegin()
-          for _i322 in xrange(_size318):
-            _elem323 = iprot.readString();
-            self.success.append(_elem323)
+          (_etype358, _size355) = iprot.readListBegin()
+          for _i359 in xrange(_size355):
+            _elem360 = iprot.readString();
+            self.success.append(_elem360)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10066,8 +10066,8 @@ class get_partition_names_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter324 in self.success:
-        oprot.writeString(iter324)
+      for iter361 in self.success:
+        oprot.writeString(iter361)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o2 is not None:
@@ -10137,10 +10137,10 @@ class get_partitions_ps_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype328, _size325) = iprot.readListBegin()
-          for _i329 in xrange(_size325):
-            _elem330 = iprot.readString();
-            self.part_vals.append(_elem330)
+          (_etype365, _size362) = iprot.readListBegin()
+          for _i366 in xrange(_size362):
+            _elem367 = iprot.readString();
+            self.part_vals.append(_elem367)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10170,8 +10170,8 @@ class get_partitions_ps_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter331 in self.part_vals:
-        oprot.writeString(iter331)
+      for iter368 in self.part_vals:
+        oprot.writeString(iter368)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.max_parts is not None:
@@ -10227,11 +10227,11 @@ class get_partitions_ps_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype335, _size332) = iprot.readListBegin()
-          for _i336 in xrange(_size332):
-            _elem337 = Partition()
-            _elem337.read(iprot)
-            self.success.append(_elem337)
+          (_etype372, _size369) = iprot.readListBegin()
+          for _i373 in xrange(_size369):
+            _elem374 = Partition()
+            _elem374.read(iprot)
+            self.success.append(_elem374)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10260,8 +10260,8 @@ class get_partitions_ps_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter338 in self.success:
-        iter338.write(oprot)
+      for iter375 in self.success:
+        iter375.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -10341,10 +10341,10 @@ class get_partitions_ps_with_auth_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype342, _size339) = iprot.readListBegin()
-          for _i343 in xrange(_size339):
-            _elem344 = iprot.readString();
-            self.part_vals.append(_elem344)
+          (_etype379, _size376) = iprot.readListBegin()
+          for _i380 in xrange(_size376):
+            _elem381 = iprot.readString();
+            self.part_vals.append(_elem381)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10361,10 +10361,10 @@ class get_partitions_ps_with_auth_args:
       elif fid == 6:
         if ftype == TType.LIST:
           self.group_names = []
-          (_etype348, _size345) = iprot.readListBegin()
-          for _i349 in xrange(_size345):
-            _elem350 = iprot.readString();
-            self.group_names.append(_elem350)
+          (_etype385, _size382) = iprot.readListBegin()
+          for _i386 in xrange(_size382):
+            _elem387 = iprot.readString();
+            self.group_names.append(_elem387)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10389,8 +10389,8 @@ class get_partitions_ps_with_auth_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter351 in self.part_vals:
-        oprot.writeString(iter351)
+      for iter388 in self.part_vals:
+        oprot.writeString(iter388)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.max_parts is not None:
@@ -10404,8 +10404,8 @@ class get_partitions_ps_with_auth_args:
     if self.group_names is not None:
       oprot.writeFieldBegin('group_names', TType.LIST, 6)
       oprot.writeListBegin(TType.STRING, len(self.group_names))
-      for iter352 in self.group_names:
-        oprot.writeString(iter352)
+      for iter389 in self.group_names:
+        oprot.writeString(iter389)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -10457,11 +10457,11 @@ class get_partitions_ps_with_auth_result
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype356, _size353) = iprot.readListBegin()
-          for _i357 in xrange(_size353):
-            _elem358 = Partition()
-            _elem358.read(iprot)
-            self.success.append(_elem358)
+          (_etype393, _size390) = iprot.readListBegin()
+          for _i394 in xrange(_size390):
+            _elem395 = Partition()
+            _elem395.read(iprot)
+            self.success.append(_elem395)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10490,8 +10490,8 @@ class get_partitions_ps_with_auth_result
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter359 in self.success:
-        iter359.write(oprot)
+      for iter396 in self.success:
+        iter396.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -10565,10 +10565,10 @@ class get_partition_names_ps_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype363, _size360) = iprot.readListBegin()
-          for _i364 in xrange(_size360):
-            _elem365 = iprot.readString();
-            self.part_vals.append(_elem365)
+          (_etype400, _size397) = iprot.readListBegin()
+          for _i401 in xrange(_size397):
+            _elem402 = iprot.readString();
+            self.part_vals.append(_elem402)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10598,8 +10598,8 @@ class get_partition_names_ps_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter366 in self.part_vals:
-        oprot.writeString(iter366)
+      for iter403 in self.part_vals:
+        oprot.writeString(iter403)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.max_parts is not None:
@@ -10655,10 +10655,10 @@ class get_partition_names_ps_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype370, _size367) = iprot.readListBegin()
-          for _i371 in xrange(_size367):
-            _elem372 = iprot.readString();
-            self.success.append(_elem372)
+          (_etype407, _size404) = iprot.readListBegin()
+          for _i408 in xrange(_size404):
+            _elem409 = iprot.readString();
+            self.success.append(_elem409)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10687,8 +10687,8 @@ class get_partition_names_ps_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter373 in self.success:
-        oprot.writeString(iter373)
+      for iter410 in self.success:
+        oprot.writeString(iter410)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -10844,11 +10844,11 @@ class get_partitions_by_filter_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype377, _size374) = iprot.readListBegin()
-          for _i378 in xrange(_size374):
-            _elem379 = Partition()
-            _elem379.read(iprot)
-            self.success.append(_elem379)
+          (_etype414, _size411) = iprot.readListBegin()
+          for _i415 in xrange(_size411):
+            _elem416 = Partition()
+            _elem416.read(iprot)
+            self.success.append(_elem416)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10877,8 +10877,8 @@ class get_partitions_by_filter_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter380 in self.success:
-        iter380.write(oprot)
+      for iter417 in self.success:
+        iter417.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -10949,10 +10949,10 @@ class get_partitions_by_names_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.names = []
-          (_etype384, _size381) = iprot.readListBegin()
-          for _i385 in xrange(_size381):
-            _elem386 = iprot.readString();
-            self.names.append(_elem386)
+          (_etype421, _size418) = iprot.readListBegin()
+          for _i422 in xrange(_size418):
+            _elem423 = iprot.readString();
+            self.names.append(_elem423)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -10977,8 +10977,8 @@ class get_partitions_by_names_args:
     if self.names is not None:
       oprot.writeFieldBegin('names', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.names))
-      for iter387 in self.names:
-        oprot.writeString(iter387)
+      for iter424 in self.names:
+        oprot.writeString(iter424)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -11030,11 +11030,11 @@ class get_partitions_by_names_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype391, _size388) = iprot.readListBegin()
-          for _i392 in xrange(_size388):
-            _elem393 = Partition()
-            _elem393.read(iprot)
-            self.success.append(_elem393)
+          (_etype428, _size425) = iprot.readListBegin()
+          for _i429 in xrange(_size425):
+            _elem430 = Partition()
+            _elem430.read(iprot)
+            self.success.append(_elem430)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -11063,8 +11063,8 @@ class get_partitions_by_names_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter394 in self.success:
-        iter394.write(oprot)
+      for iter431 in self.success:
+        iter431.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -11469,10 +11469,10 @@ class rename_partition_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.part_vals = []
-          (_etype398, _size395) = iprot.readListBegin()
-          for _i399 in xrange(_size395):
-            _elem400 = iprot.readString();
-            self.part_vals.append(_elem400)
+          (_etype435, _size432) = iprot.readListBegin()
+          for _i436 in xrange(_size432):
+            _elem437 = iprot.readString();
+            self.part_vals.append(_elem437)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -11503,8 +11503,8 @@ class rename_partition_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.part_vals))
-      for iter401 in self.part_vals:
-        oprot.writeString(iter401)
+      for iter438 in self.part_vals:
+        oprot.writeString(iter438)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.new_part is not None:
@@ -11835,10 +11835,10 @@ class partition_name_to_vals_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype405, _size402) = iprot.readListBegin()
-          for _i406 in xrange(_size402):
-            _elem407 = iprot.readString();
-            self.success.append(_elem407)
+          (_etype442, _size439) = iprot.readListBegin()
+          for _i443 in xrange(_size439):
+            _elem444 = iprot.readString();
+            self.success.append(_elem444)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -11861,8 +11861,8 @@ class partition_name_to_vals_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter408 in self.success:
-        oprot.writeString(iter408)
+      for iter445 in self.success:
+        oprot.writeString(iter445)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -11975,11 +11975,11 @@ class partition_name_to_spec_result:
       if fid == 0:
         if ftype == TType.MAP:
           self.success = {}
-          (_ktype410, _vtype411, _size409 ) = iprot.readMapBegin() 
-          for _i413 in xrange(_size409):
-            _key414 = iprot.readString();
-            _val415 = iprot.readString();
-            self.success[_key414] = _val415
+          (_ktype447, _vtype448, _size446 ) = iprot.readMapBegin() 
+          for _i450 in xrange(_size446):
+            _key451 = iprot.readString();
+            _val452 = iprot.readString();
+            self.success[_key451] = _val452
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -12002,9 +12002,9 @@ class partition_name_to_spec_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-      for kiter416,viter417 in self.success.items():
-        oprot.writeString(kiter416)
-        oprot.writeString(viter417)
+      for kiter453,viter454 in self.success.items():
+        oprot.writeString(kiter453)
+        oprot.writeString(viter454)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -12074,11 +12074,11 @@ class markPartitionForEvent_args:
       elif fid == 3:
         if ftype == TType.MAP:
           self.part_vals = {}
-          (_ktype419, _vtype420, _size418 ) = iprot.readMapBegin() 
-          for _i422 in xrange(_size418):
-            _key423 = iprot.readString();
-            _val424 = iprot.readString();
-            self.part_vals[_key423] = _val424
+          (_ktype456, _vtype457, _size455 ) = iprot.readMapBegin() 
+          for _i459 in xrange(_size455):
+            _key460 = iprot.readString();
+            _val461 = iprot.readString();
+            self.part_vals[_key460] = _val461
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -12108,9 +12108,9 @@ class markPartitionForEvent_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.MAP, 3)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.part_vals))
-      for kiter425,viter426 in self.part_vals.items():
-        oprot.writeString(kiter425)
-        oprot.writeString(viter426)
+      for kiter462,viter463 in self.part_vals.items():
+        oprot.writeString(kiter462)
+        oprot.writeString(viter463)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.eventType is not None:
@@ -12306,11 +12306,11 @@ class isPartitionMarkedForEvent_args:
       elif fid == 3:
         if ftype == TType.MAP:
           self.part_vals = {}
-          (_ktype428, _vtype429, _size427 ) = iprot.readMapBegin() 
-          for _i431 in xrange(_size427):
-            _key432 = iprot.readString();
-            _val433 = iprot.readString();
-            self.part_vals[_key432] = _val433
+          (_ktype465, _vtype466, _size464 ) = iprot.readMapBegin() 
+          for _i468 in xrange(_size464):
+            _key469 = iprot.readString();
+            _val470 = iprot.readString();
+            self.part_vals[_key469] = _val470
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -12340,9 +12340,9 @@ class isPartitionMarkedForEvent_args:
     if self.part_vals is not None:
       oprot.writeFieldBegin('part_vals', TType.MAP, 3)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.part_vals))
-      for kiter434,viter435 in self.part_vals.items():
-        oprot.writeString(kiter434)
-        oprot.writeString(viter435)
+      for kiter471,viter472 in self.part_vals.items():
+        oprot.writeString(kiter471)
+        oprot.writeString(viter472)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.eventType is not None:
@@ -13314,11 +13314,11 @@ class get_indexes_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype439, _size436) = iprot.readListBegin()
-          for _i440 in xrange(_size436):
-            _elem441 = Index()
-            _elem441.read(iprot)
-            self.success.append(_elem441)
+          (_etype476, _size473) = iprot.readListBegin()
+          for _i477 in xrange(_size473):
+            _elem478 = Index()
+            _elem478.read(iprot)
+            self.success.append(_elem478)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -13347,8 +13347,8 @@ class get_indexes_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter442 in self.success:
-        iter442.write(oprot)
+      for iter479 in self.success:
+        iter479.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -13489,10 +13489,10 @@ class get_index_names_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype446, _size443) = iprot.readListBegin()
-          for _i447 in xrange(_size443):
-            _elem448 = iprot.readString();
-            self.success.append(_elem448)
+          (_etype483, _size480) = iprot.readListBegin()
+          for _i484 in xrange(_size480):
+            _elem485 = iprot.readString();
+            self.success.append(_elem485)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -13515,8 +13515,8 @@ class get_index_names_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter449 in self.success:
-        oprot.writeString(iter449)
+      for iter486 in self.success:
+        oprot.writeString(iter486)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o2 is not None:
@@ -13876,10 +13876,10 @@ class get_role_names_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype453, _size450) = iprot.readListBegin()
-          for _i454 in xrange(_size450):
-            _elem455 = iprot.readString();
-            self.success.append(_elem455)
+          (_etype490, _size487) = iprot.readListBegin()
+          for _i491 in xrange(_size487):
+            _elem492 = iprot.readString();
+            self.success.append(_elem492)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -13902,8 +13902,8 @@ class get_role_names_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter456 in self.success:
-        oprot.writeString(iter456)
+      for iter493 in self.success:
+        oprot.writeString(iter493)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -14376,11 +14376,11 @@ class list_roles_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype460, _size457) = iprot.readListBegin()
-          for _i461 in xrange(_size457):
-            _elem462 = Role()
-            _elem462.read(iprot)
-            self.success.append(_elem462)
+          (_etype497, _size494) = iprot.readListBegin()
+          for _i498 in xrange(_size494):
+            _elem499 = Role()
+            _elem499.read(iprot)
+            self.success.append(_elem499)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -14403,8 +14403,8 @@ class list_roles_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter463 in self.success:
-        iter463.write(oprot)
+      for iter500 in self.success:
+        iter500.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -14472,10 +14472,10 @@ class get_privilege_set_args:
       elif fid == 3:
         if ftype == TType.LIST:
           self.group_names = []
-          (_etype467, _size464) = iprot.readListBegin()
-          for _i468 in xrange(_size464):
-            _elem469 = iprot.readString();
-            self.group_names.append(_elem469)
+          (_etype504, _size501) = iprot.readListBegin()
+          for _i505 in xrange(_size501):
+            _elem506 = iprot.readString();
+            self.group_names.append(_elem506)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -14500,8 +14500,8 @@ class get_privilege_set_args:
     if self.group_names is not None:
       oprot.writeFieldBegin('group_names', TType.LIST, 3)
       oprot.writeListBegin(TType.STRING, len(self.group_names))
-      for iter470 in self.group_names:
-        oprot.writeString(iter470)
+      for iter507 in self.group_names:
+        oprot.writeString(iter507)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -14708,11 +14708,11 @@ class list_privileges_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype474, _size471) = iprot.readListBegin()
-          for _i475 in xrange(_size471):
-            _elem476 = HiveObjectPrivilege()
-            _elem476.read(iprot)
-            self.success.append(_elem476)
+          (_etype511, _size508) = iprot.readListBegin()
+          for _i512 in xrange(_size508):
+            _elem513 = HiveObjectPrivilege()
+            _elem513.read(iprot)
+            self.success.append(_elem513)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -14735,8 +14735,8 @@ class list_privileges_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRUCT, len(self.success))
-      for iter477 in self.success:
-        iter477.write(oprot)
+      for iter514 in self.success:
+        iter514.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:
@@ -15061,10 +15061,10 @@ class set_ugi_args:
       elif fid == 2:
         if ftype == TType.LIST:
           self.group_names = []
-          (_etype481, _size478) = iprot.readListBegin()
-          for _i482 in xrange(_size478):
-            _elem483 = iprot.readString();
-            self.group_names.append(_elem483)
+          (_etype518, _size515) = iprot.readListBegin()
+          for _i519 in xrange(_size515):
+            _elem520 = iprot.readString();
+            self.group_names.append(_elem520)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -15085,8 +15085,8 @@ class set_ugi_args:
     if self.group_names is not None:
       oprot.writeFieldBegin('group_names', TType.LIST, 2)
       oprot.writeListBegin(TType.STRING, len(self.group_names))
-      for iter484 in self.group_names:
-        oprot.writeString(iter484)
+      for iter521 in self.group_names:
+        oprot.writeString(iter521)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -15135,10 +15135,10 @@ class set_ugi_result:
       if fid == 0:
         if ftype == TType.LIST:
           self.success = []
-          (_etype488, _size485) = iprot.readListBegin()
-          for _i489 in xrange(_size485):
-            _elem490 = iprot.readString();
-            self.success.append(_elem490)
+          (_etype525, _size522) = iprot.readListBegin()
+          for _i526 in xrange(_size522):
+            _elem527 = iprot.readString();
+            self.success.append(_elem527)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -15161,8 +15161,8 @@ class set_ugi_result:
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.LIST, 0)
       oprot.writeListBegin(TType.STRING, len(self.success))
-      for iter491 in self.success:
-        oprot.writeString(iter491)
+      for iter528 in self.success:
+        oprot.writeString(iter528)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.o1 is not None:

Modified: hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py Sat Aug 25 02:44:22 2012
@@ -1230,6 +1230,132 @@ class Order:
   def __ne__(self, other):
     return not (self == other)
 
+class SkewedInfo:
+  """
+  Attributes:
+   - skewedColNames
+   - skewedColValues
+   - skewedColValueLocationMaps
+  """
+
+  thrift_spec = (
+    None, # 0
+    (1, TType.LIST, 'skewedColNames', (TType.STRING,None), None, ), # 1
+    (2, TType.LIST, 'skewedColValues', (TType.LIST,(TType.STRING,None)), None, ), # 2
+    (3, TType.MAP, 'skewedColValueLocationMaps', (TType.LIST,(TType.STRING,None),TType.STRING,None), None, ), # 3
+  )
+
+  def __init__(self, skewedColNames=None, skewedColValues=None, skewedColValueLocationMaps=None,):
+    self.skewedColNames = skewedColNames
+    self.skewedColValues = skewedColValues
+    self.skewedColValueLocationMaps = skewedColValueLocationMaps
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
+        if ftype == TType.LIST:
+          self.skewedColNames = []
+          (_etype90, _size87) = iprot.readListBegin()
+          for _i91 in xrange(_size87):
+            _elem92 = iprot.readString();
+            self.skewedColNames.append(_elem92)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.LIST:
+          self.skewedColValues = []
+          (_etype96, _size93) = iprot.readListBegin()
+          for _i97 in xrange(_size93):
+            _elem98 = []
+            (_etype102, _size99) = iprot.readListBegin()
+            for _i103 in xrange(_size99):
+              _elem104 = iprot.readString();
+              _elem98.append(_elem104)
+            iprot.readListEnd()
+            self.skewedColValues.append(_elem98)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.MAP:
+          self.skewedColValueLocationMaps = {}
+          (_ktype106, _vtype107, _size105 ) = iprot.readMapBegin() 
+          for _i109 in xrange(_size105):
+            _key110 = []
+            (_etype115, _size112) = iprot.readListBegin()
+            for _i116 in xrange(_size112):
+              _elem117 = iprot.readString();
+              _key110.append(_elem117)
+            iprot.readListEnd()
+            _val111 = iprot.readString();
+            self.skewedColValueLocationMaps[_key110] = _val111
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      else:
+        iprot.skip(ftype)
+      iprot.readFieldEnd()
+    iprot.readStructEnd()
+
+  def write(self, oprot):
+    if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
+      oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
+      return
+    oprot.writeStructBegin('SkewedInfo')
+    if self.skewedColNames is not None:
+      oprot.writeFieldBegin('skewedColNames', TType.LIST, 1)
+      oprot.writeListBegin(TType.STRING, len(self.skewedColNames))
+      for iter118 in self.skewedColNames:
+        oprot.writeString(iter118)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.skewedColValues is not None:
+      oprot.writeFieldBegin('skewedColValues', TType.LIST, 2)
+      oprot.writeListBegin(TType.LIST, len(self.skewedColValues))
+      for iter119 in self.skewedColValues:
+        oprot.writeListBegin(TType.STRING, len(iter119))
+        for iter120 in iter119:
+          oprot.writeString(iter120)
+        oprot.writeListEnd()
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.skewedColValueLocationMaps is not None:
+      oprot.writeFieldBegin('skewedColValueLocationMaps', TType.MAP, 3)
+      oprot.writeMapBegin(TType.LIST, TType.STRING, len(self.skewedColValueLocationMaps))
+      for kiter121,viter122 in self.skewedColValueLocationMaps.items():
+        oprot.writeListBegin(TType.STRING, len(kiter121))
+        for iter123 in kiter121:
+          oprot.writeString(iter123)
+        oprot.writeListEnd()
+        oprot.writeString(viter122)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    oprot.writeFieldStop()
+    oprot.writeStructEnd()
+
+  def validate(self):
+    return
+
+
+  def __repr__(self):
+    L = ['%s=%r' % (key, value)
+      for key, value in self.__dict__.iteritems()]
+    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+  def __eq__(self, other):
+    return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
+
+  def __ne__(self, other):
+    return not (self == other)
+
 class StorageDescriptor:
   """
   Attributes:
@@ -1243,6 +1369,7 @@ class StorageDescriptor:
    - bucketCols
    - sortCols
    - parameters
+   - skewedInfo
   """
 
   thrift_spec = (
@@ -1257,9 +1384,10 @@ class StorageDescriptor:
     (8, TType.LIST, 'bucketCols', (TType.STRING,None), None, ), # 8
     (9, TType.LIST, 'sortCols', (TType.STRUCT,(Order, Order.thrift_spec)), None, ), # 9
     (10, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 10
+    (11, TType.STRUCT, 'skewedInfo', (SkewedInfo, SkewedInfo.thrift_spec), None, ), # 11
   )
 
-  def __init__(self, cols=None, location=None, inputFormat=None, outputFormat=None, compressed=None, numBuckets=None, serdeInfo=None, bucketCols=None, sortCols=None, parameters=None,):
+  def __init__(self, cols=None, location=None, inputFormat=None, outputFormat=None, compressed=None, numBuckets=None, serdeInfo=None, bucketCols=None, sortCols=None, parameters=None, skewedInfo=None,):
     self.cols = cols
     self.location = location
     self.inputFormat = inputFormat
@@ -1270,6 +1398,7 @@ class StorageDescriptor:
     self.bucketCols = bucketCols
     self.sortCols = sortCols
     self.parameters = parameters
+    self.skewedInfo = skewedInfo
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -1283,11 +1412,11 @@ class StorageDescriptor:
       if fid == 1:
         if ftype == TType.LIST:
           self.cols = []
-          (_etype90, _size87) = iprot.readListBegin()
-          for _i91 in xrange(_size87):
-            _elem92 = FieldSchema()
-            _elem92.read(iprot)
-            self.cols.append(_elem92)
+          (_etype127, _size124) = iprot.readListBegin()
+          for _i128 in xrange(_size124):
+            _elem129 = FieldSchema()
+            _elem129.read(iprot)
+            self.cols.append(_elem129)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -1325,35 +1454,41 @@ class StorageDescriptor:
       elif fid == 8:
         if ftype == TType.LIST:
           self.bucketCols = []
-          (_etype96, _size93) = iprot.readListBegin()
-          for _i97 in xrange(_size93):
-            _elem98 = iprot.readString();
-            self.bucketCols.append(_elem98)
+          (_etype133, _size130) = iprot.readListBegin()
+          for _i134 in xrange(_size130):
+            _elem135 = iprot.readString();
+            self.bucketCols.append(_elem135)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 9:
         if ftype == TType.LIST:
           self.sortCols = []
-          (_etype102, _size99) = iprot.readListBegin()
-          for _i103 in xrange(_size99):
-            _elem104 = Order()
-            _elem104.read(iprot)
-            self.sortCols.append(_elem104)
+          (_etype139, _size136) = iprot.readListBegin()
+          for _i140 in xrange(_size136):
+            _elem141 = Order()
+            _elem141.read(iprot)
+            self.sortCols.append(_elem141)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 10:
         if ftype == TType.MAP:
           self.parameters = {}
-          (_ktype106, _vtype107, _size105 ) = iprot.readMapBegin() 
-          for _i109 in xrange(_size105):
-            _key110 = iprot.readString();
-            _val111 = iprot.readString();
-            self.parameters[_key110] = _val111
+          (_ktype143, _vtype144, _size142 ) = iprot.readMapBegin() 
+          for _i146 in xrange(_size142):
+            _key147 = iprot.readString();
+            _val148 = iprot.readString();
+            self.parameters[_key147] = _val148
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRUCT:
+          self.skewedInfo = SkewedInfo()
+          self.skewedInfo.read(iprot)
+        else:
+          iprot.skip(ftype)
       else:
         iprot.skip(ftype)
       iprot.readFieldEnd()
@@ -1367,8 +1502,8 @@ class StorageDescriptor:
     if self.cols is not None:
       oprot.writeFieldBegin('cols', TType.LIST, 1)
       oprot.writeListBegin(TType.STRUCT, len(self.cols))
-      for iter112 in self.cols:
-        iter112.write(oprot)
+      for iter149 in self.cols:
+        iter149.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.location is not None:
@@ -1398,25 +1533,29 @@ class StorageDescriptor:
     if self.bucketCols is not None:
       oprot.writeFieldBegin('bucketCols', TType.LIST, 8)
       oprot.writeListBegin(TType.STRING, len(self.bucketCols))
-      for iter113 in self.bucketCols:
-        oprot.writeString(iter113)
+      for iter150 in self.bucketCols:
+        oprot.writeString(iter150)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.sortCols is not None:
       oprot.writeFieldBegin('sortCols', TType.LIST, 9)
       oprot.writeListBegin(TType.STRUCT, len(self.sortCols))
-      for iter114 in self.sortCols:
-        iter114.write(oprot)
+      for iter151 in self.sortCols:
+        iter151.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.parameters is not None:
       oprot.writeFieldBegin('parameters', TType.MAP, 10)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter115,viter116 in self.parameters.items():
-        oprot.writeString(kiter115)
-        oprot.writeString(viter116)
+      for kiter152,viter153 in self.parameters.items():
+        oprot.writeString(kiter152)
+        oprot.writeString(viter153)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
+    if self.skewedInfo is not None:
+      oprot.writeFieldBegin('skewedInfo', TType.STRUCT, 11)
+      self.skewedInfo.write(oprot)
+      oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
@@ -1533,22 +1672,22 @@ class Table:
       elif fid == 8:
         if ftype == TType.LIST:
           self.partitionKeys = []
-          (_etype120, _size117) = iprot.readListBegin()
-          for _i121 in xrange(_size117):
-            _elem122 = FieldSchema()
-            _elem122.read(iprot)
-            self.partitionKeys.append(_elem122)
+          (_etype157, _size154) = iprot.readListBegin()
+          for _i158 in xrange(_size154):
+            _elem159 = FieldSchema()
+            _elem159.read(iprot)
+            self.partitionKeys.append(_elem159)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 9:
         if ftype == TType.MAP:
           self.parameters = {}
-          (_ktype124, _vtype125, _size123 ) = iprot.readMapBegin() 
-          for _i127 in xrange(_size123):
-            _key128 = iprot.readString();
-            _val129 = iprot.readString();
-            self.parameters[_key128] = _val129
+          (_ktype161, _vtype162, _size160 ) = iprot.readMapBegin() 
+          for _i164 in xrange(_size160):
+            _key165 = iprot.readString();
+            _val166 = iprot.readString();
+            self.parameters[_key165] = _val166
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -1614,16 +1753,16 @@ class Table:
     if self.partitionKeys is not None:
       oprot.writeFieldBegin('partitionKeys', TType.LIST, 8)
       oprot.writeListBegin(TType.STRUCT, len(self.partitionKeys))
-      for iter130 in self.partitionKeys:
-        iter130.write(oprot)
+      for iter167 in self.partitionKeys:
+        iter167.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.parameters is not None:
       oprot.writeFieldBegin('parameters', TType.MAP, 9)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter131,viter132 in self.parameters.items():
-        oprot.writeString(kiter131)
-        oprot.writeString(viter132)
+      for kiter168,viter169 in self.parameters.items():
+        oprot.writeString(kiter168)
+        oprot.writeString(viter169)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.viewOriginalText is not None:
@@ -1707,10 +1846,10 @@ class Partition:
       if fid == 1:
         if ftype == TType.LIST:
           self.values = []
-          (_etype136, _size133) = iprot.readListBegin()
-          for _i137 in xrange(_size133):
-            _elem138 = iprot.readString();
-            self.values.append(_elem138)
+          (_etype173, _size170) = iprot.readListBegin()
+          for _i174 in xrange(_size170):
+            _elem175 = iprot.readString();
+            self.values.append(_elem175)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -1743,11 +1882,11 @@ class Partition:
       elif fid == 7:
         if ftype == TType.MAP:
           self.parameters = {}
-          (_ktype140, _vtype141, _size139 ) = iprot.readMapBegin() 
-          for _i143 in xrange(_size139):
-            _key144 = iprot.readString();
-            _val145 = iprot.readString();
-            self.parameters[_key144] = _val145
+          (_ktype177, _vtype178, _size176 ) = iprot.readMapBegin() 
+          for _i180 in xrange(_size176):
+            _key181 = iprot.readString();
+            _val182 = iprot.readString();
+            self.parameters[_key181] = _val182
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -1770,8 +1909,8 @@ class Partition:
     if self.values is not None:
       oprot.writeFieldBegin('values', TType.LIST, 1)
       oprot.writeListBegin(TType.STRING, len(self.values))
-      for iter146 in self.values:
-        oprot.writeString(iter146)
+      for iter183 in self.values:
+        oprot.writeString(iter183)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.dbName is not None:
@@ -1797,9 +1936,9 @@ class Partition:
     if self.parameters is not None:
       oprot.writeFieldBegin('parameters', TType.MAP, 7)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter147,viter148 in self.parameters.items():
-        oprot.writeString(kiter147)
-        oprot.writeString(viter148)
+      for kiter184,viter185 in self.parameters.items():
+        oprot.writeString(kiter184)
+        oprot.writeString(viter185)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.privileges is not None:
@@ -1918,11 +2057,11 @@ class Index:
       elif fid == 9:
         if ftype == TType.MAP:
           self.parameters = {}
-          (_ktype150, _vtype151, _size149 ) = iprot.readMapBegin() 
-          for _i153 in xrange(_size149):
-            _key154 = iprot.readString();
-            _val155 = iprot.readString();
-            self.parameters[_key154] = _val155
+          (_ktype187, _vtype188, _size186 ) = iprot.readMapBegin() 
+          for _i190 in xrange(_size186):
+            _key191 = iprot.readString();
+            _val192 = iprot.readString();
+            self.parameters[_key191] = _val192
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -1976,9 +2115,9 @@ class Index:
     if self.parameters is not None:
       oprot.writeFieldBegin('parameters', TType.MAP, 9)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter156,viter157 in self.parameters.items():
-        oprot.writeString(kiter156)
-        oprot.writeString(viter157)
+      for kiter193,viter194 in self.parameters.items():
+        oprot.writeString(kiter193)
+        oprot.writeString(viter194)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     if self.deferredRebuild is not None:
@@ -2032,22 +2171,22 @@ class Schema:
       if fid == 1:
         if ftype == TType.LIST:
           self.fieldSchemas = []
-          (_etype161, _size158) = iprot.readListBegin()
-          for _i162 in xrange(_size158):
-            _elem163 = FieldSchema()
-            _elem163.read(iprot)
-            self.fieldSchemas.append(_elem163)
+          (_etype198, _size195) = iprot.readListBegin()
+          for _i199 in xrange(_size195):
+            _elem200 = FieldSchema()
+            _elem200.read(iprot)
+            self.fieldSchemas.append(_elem200)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.MAP:
           self.properties = {}
-          (_ktype165, _vtype166, _size164 ) = iprot.readMapBegin() 
-          for _i168 in xrange(_size164):
-            _key169 = iprot.readString();
-            _val170 = iprot.readString();
-            self.properties[_key169] = _val170
+          (_ktype202, _vtype203, _size201 ) = iprot.readMapBegin() 
+          for _i205 in xrange(_size201):
+            _key206 = iprot.readString();
+            _val207 = iprot.readString();
+            self.properties[_key206] = _val207
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -2064,16 +2203,16 @@ class Schema:
     if self.fieldSchemas is not None:
       oprot.writeFieldBegin('fieldSchemas', TType.LIST, 1)
       oprot.writeListBegin(TType.STRUCT, len(self.fieldSchemas))
-      for iter171 in self.fieldSchemas:
-        iter171.write(oprot)
+      for iter208 in self.fieldSchemas:
+        iter208.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.properties is not None:
       oprot.writeFieldBegin('properties', TType.MAP, 2)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.properties))
-      for kiter172,viter173 in self.properties.items():
-        oprot.writeString(kiter172)
-        oprot.writeString(viter173)
+      for kiter209,viter210 in self.properties.items():
+        oprot.writeString(kiter209)
+        oprot.writeString(viter210)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
@@ -2120,11 +2259,11 @@ class EnvironmentContext:
       if fid == 1:
         if ftype == TType.MAP:
           self.properties = {}
-          (_ktype175, _vtype176, _size174 ) = iprot.readMapBegin() 
-          for _i178 in xrange(_size174):
-            _key179 = iprot.readString();
-            _val180 = iprot.readString();
-            self.properties[_key179] = _val180
+          (_ktype212, _vtype213, _size211 ) = iprot.readMapBegin() 
+          for _i215 in xrange(_size211):
+            _key216 = iprot.readString();
+            _val217 = iprot.readString();
+            self.properties[_key216] = _val217
           iprot.readMapEnd()
         else:
           iprot.skip(ftype)
@@ -2141,9 +2280,9 @@ class EnvironmentContext:
     if self.properties is not None:
       oprot.writeFieldBegin('properties', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.properties))
-      for kiter181,viter182 in self.properties.items():
-        oprot.writeString(kiter181)
-        oprot.writeString(viter182)
+      for kiter218,viter219 in self.properties.items():
+        oprot.writeString(kiter218)
+        oprot.writeString(viter219)
       oprot.writeMapEnd()
       oprot.writeFieldEnd()
     oprot.writeFieldStop()

Modified: hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb (original)
+++ hive/trunk/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb Sat Aug 25 02:44:22 2012
@@ -288,6 +288,26 @@ class Order
   ::Thrift::Struct.generate_accessors self
 end
 
+class SkewedInfo
+  include ::Thrift::Struct, ::Thrift::Struct_Union
+  SKEWEDCOLNAMES = 1
+  SKEWEDCOLVALUES = 2
+  SKEWEDCOLVALUELOCATIONMAPS = 3
+
+  FIELDS = {
+    SKEWEDCOLNAMES => {:type => ::Thrift::Types::LIST, :name => 'skewedColNames', :element => {:type => ::Thrift::Types::STRING}},
+    SKEWEDCOLVALUES => {:type => ::Thrift::Types::LIST, :name => 'skewedColValues', :element => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRING}}},
+    SKEWEDCOLVALUELOCATIONMAPS => {:type => ::Thrift::Types::MAP, :name => 'skewedColValueLocationMaps', :key => {:type => ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRING}}, :value => {:type => ::Thrift::Types::STRING}}
+  }
+
+  def struct_fields; FIELDS; end
+
+  def validate
+  end
+
+  ::Thrift::Struct.generate_accessors self
+end
+
 class StorageDescriptor
   include ::Thrift::Struct, ::Thrift::Struct_Union
   COLS = 1
@@ -300,6 +320,7 @@ class StorageDescriptor
   BUCKETCOLS = 8
   SORTCOLS = 9
   PARAMETERS = 10
+  SKEWEDINFO = 11
 
   FIELDS = {
     COLS => {:type => ::Thrift::Types::LIST, :name => 'cols', :element => {:type => ::Thrift::Types::STRUCT, :class => FieldSchema}},
@@ -311,7 +332,8 @@ class StorageDescriptor
     SERDEINFO => {:type => ::Thrift::Types::STRUCT, :name => 'serdeInfo', :class => SerDeInfo},
     BUCKETCOLS => {:type => ::Thrift::Types::LIST, :name => 'bucketCols', :element => {:type => ::Thrift::Types::STRING}},
     SORTCOLS => {:type => ::Thrift::Types::LIST, :name => 'sortCols', :element => {:type => ::Thrift::Types::STRUCT, :class => Order}},
-    PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}
+    PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
+    SKEWEDINFO => {:type => ::Thrift::Types::STRUCT, :name => 'skewedInfo', :class => SkewedInfo, :optional => true}
   }
 
   def struct_fields; FIELDS; end

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java Sat Aug 25 02:44:22 2012
@@ -868,7 +868,14 @@ public class HiveMetaStore extends Thrif
       if (!MetaStoreUtils.validateName(tbl.getTableName())
           || !MetaStoreUtils.validateColNames(tbl.getSd().getCols())
           || (tbl.getPartitionKeys() != null && !MetaStoreUtils
-              .validateColNames(tbl.getPartitionKeys()))) {
+              .validateColNames(tbl.getPartitionKeys()))
+          || !MetaStoreUtils.validateSkewedColNames(
+              (null == tbl.getSd().getSkewedInfo()) ?
+                  null : tbl.getSd().getSkewedInfo().getSkewedColNames())
+          || !MetaStoreUtils.validateSkewedColNamesSubsetCol(
+              (null == tbl.getSd().getSkewedInfo()) ?
+              null : tbl.getSd().getSkewedInfo().getSkewedColNames(),
+              tbl.getSd().getCols())) {
         throw new InvalidObjectException(tbl.getTableName()
             + " is not a valid object name");
       }

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java Sat Aug 25 02:44:22 2012
@@ -322,6 +322,34 @@ public class MetaStoreUtils {
     return true;
   }
 
+  public static  boolean validateSkewedColNames(List<String> cols) {
+    if (null == cols) {
+      return true;
+    }
+    for (String col : cols) {
+      if (!validateName(col)) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  public static boolean validateSkewedColNamesSubsetCol(List<String> skewedColNames,
+      List<FieldSchema> cols) {
+    if (null == skewedColNames) {
+      return true;
+    }
+    List<String> colNames = new ArrayList<String>();
+    for (FieldSchema fieldSchema : cols) {
+      colNames.add(fieldSchema.getName());
+    }
+    // make a copy
+    List<String> copySkewedColNames = new ArrayList<String>(skewedColNames);
+    // remove valid columns
+    copySkewedColNames.removeAll(colNames);
+    return (copySkewedColNames.size() > 0) ? false : true;
+  }
+
   public static String getListType(String t) {
     return "array<" + t + ">";
   }

Modified: hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java (original)
+++ hive/trunk/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java Sat Aug 25 02:44:22 2012
@@ -73,6 +73,7 @@ import org.apache.hadoop.hive.metastore.
 import org.apache.hadoop.hive.metastore.api.PrivilegeGrantInfo;
 import org.apache.hadoop.hive.metastore.api.Role;
 import org.apache.hadoop.hive.metastore.api.SerDeInfo;
+import org.apache.hadoop.hive.metastore.api.SkewedInfo;
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.metastore.api.Table;
 import org.apache.hadoop.hive.metastore.api.Type;
@@ -94,6 +95,7 @@ import org.apache.hadoop.hive.metastore.
 import org.apache.hadoop.hive.metastore.model.MRoleMap;
 import org.apache.hadoop.hive.metastore.model.MSerDeInfo;
 import org.apache.hadoop.hive.metastore.model.MStorageDescriptor;
+import org.apache.hadoop.hive.metastore.model.MStringList;
 import org.apache.hadoop.hive.metastore.model.MTable;
 import org.apache.hadoop.hive.metastore.model.MTableColumnPrivilege;
 import org.apache.hadoop.hive.metastore.model.MTablePrivilege;
@@ -974,11 +976,17 @@ public class ObjectStore implements RawS
       return null;
     }
     List<MFieldSchema> mFieldSchemas = msd.getCD() == null ? null : msd.getCD().getCols();
-    return new StorageDescriptor(noFS ? null: convertToFieldSchemas(mFieldSchemas),
+
+    StorageDescriptor sd = new StorageDescriptor(noFS ? null : convertToFieldSchemas(mFieldSchemas),
         msd.getLocation(), msd.getInputFormat(), msd.getOutputFormat(), msd
         .isCompressed(), msd.getNumBuckets(), converToSerDeInfo(msd
         .getSerDeInfo()), msd.getBucketCols(), convertToOrders(msd
         .getSortCols()), msd.getParameters());
+    SkewedInfo skewedInfo = new SkewedInfo(msd.getSkewedColNames(),
+        convertToSkewedValues(msd.getSkewedColValues()),
+        covertToSkewedMap(msd.getSkewedColValueLocationMaps()));
+    sd.setSkewedInfo(skewedInfo);
+    return sd;
   }
 
   private StorageDescriptor convertToStorageDescriptor(MStorageDescriptor msd)
@@ -987,6 +995,70 @@ public class ObjectStore implements RawS
   }
 
   /**
+   * Convert a list of MStringList to a list of list string
+   *
+   * @param mLists
+   * @return
+   */
+  private List<List<String>> convertToSkewedValues(List<MStringList> mLists) {
+    List<List<String>> lists = null;
+    if (mLists != null) {
+      lists = new ArrayList<List<String>>(mLists.size());
+      for (MStringList element : mLists) {
+        lists.add(new ArrayList<String>(element.getInternalList()));
+      }
+    }
+    return lists;
+  }
+
+  private List<MStringList> convertToMStringLists(List<List<String>> mLists) {
+    List<MStringList> lists = null ;
+    if (null != mLists) {
+      lists = new ArrayList<MStringList>();
+      for (List<String> mList : mLists) {
+        lists.add(new MStringList(mList));
+      }
+    }
+    return lists;
+  }
+
+  /**
+   * Convert a MStringList Map to a Map
+   * @param mMap
+   * @return
+   */
+  private Map<List<String>, String> covertToSkewedMap(Map<MStringList, String> mMap) {
+    Map<List<String>, String> map = null;
+    if (mMap != null) {
+      map = new HashMap<List<String>, String>(mMap.size());
+      Set<MStringList> keys = mMap.keySet();
+      for (MStringList key : keys) {
+        map.put(new ArrayList<String>(key.getInternalList()), mMap.get(key));
+      }
+    }
+    return map;
+  }
+
+  /**
+   * Covert a Map to a MStringList Map
+   * @param mMap
+   * @return
+   */
+  private Map<MStringList, String> covertToMapMStringList(Map<List<String>, String> mMap) {
+    Map<MStringList, String> map = null;
+    if (mMap != null) {
+      map = new HashMap<MStringList, String>(mMap.size());
+      Set<List<String>> keys = mMap.keySet();
+      for (List<String> key : keys) {
+        map.put(new MStringList(key), mMap.get(key));
+      }
+    }
+    return map;
+  }
+
+
+
+  /**
    * Converts a storage descriptor to a db-backed storage descriptor.  Creates a
    *   new db-backed column descriptor object for this SD.
    * @param sd the storage descriptor to wrap in a db-backed object
@@ -1020,7 +1092,13 @@ public class ObjectStore implements RawS
         .getLocation(), sd.getInputFormat(), sd.getOutputFormat(), sd
         .isCompressed(), sd.getNumBuckets(), converToMSerDeInfo(sd
         .getSerdeInfo()), sd.getBucketCols(),
-        convertToMOrders(sd.getSortCols()), sd.getParameters());
+        convertToMOrders(sd.getSortCols()), sd.getParameters(),
+        (null == sd.getSkewedInfo()) ? null
+            : sd.getSkewedInfo().getSkewedColNames(),
+        convertToMStringLists((null == sd.getSkewedInfo()) ? null : sd.getSkewedInfo()
+            .getSkewedColValues()),
+        covertToMapMStringList((null == sd.getSkewedInfo()) ? null : sd.getSkewedInfo()
+            .getSkewedColValueLocationMaps()));
   }
 
   public boolean addPartition(Partition part) throws InvalidObjectException,
@@ -1958,6 +2036,9 @@ public class ObjectStore implements RawS
     oldSd.getSerDeInfo().setSerializationLib(
         newSd.getSerDeInfo().getSerializationLib());
     oldSd.getSerDeInfo().setParameters(newSd.getSerDeInfo().getParameters());
+    oldSd.setSkewedColNames(newSd.getSkewedColNames());
+    oldSd.setSkewedColValues(newSd.getSkewedColValues());
+    oldSd.setSkewedColValueLocationMaps(newSd.getSkewedColValueLocationMaps());
   }
 
   /**

Modified: hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java (original)
+++ hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStorageDescriptor.java Sat Aug 25 02:44:22 2012
@@ -32,6 +32,9 @@ public class MStorageDescriptor {
   private List<String> bucketCols;
   private List<MOrder> sortCols;
   private Map<String, String> parameters;
+  private List<String> skewedColNames;
+  private List<MStringList> skewedColValues;
+  private Map<MStringList, String> skewedColValueLocationMaps;
 
   public MStorageDescriptor() {}
 
@@ -50,7 +53,9 @@ public class MStorageDescriptor {
    */
   public MStorageDescriptor(MColumnDescriptor cd, String location, String inputFormat,
       String outputFormat, boolean isCompressed, int numBuckets, MSerDeInfo serDeInfo,
-      List<String> bucketCols, List<MOrder> sortOrder, Map<String, String> parameters) {
+      List<String> bucketCols, List<MOrder> sortOrder, Map<String, String> parameters,
+      List<String> skewedColNames, List<MStringList> skewedColValues,
+      Map<MStringList, String> skewedColValueLocationMaps) {
     this.cd = cd;
     this.location = location;
     this.inputFormat = inputFormat;
@@ -61,6 +66,9 @@ public class MStorageDescriptor {
     this.bucketCols = bucketCols;
     this.sortCols = sortOrder;
     this.parameters = parameters;
+    this.skewedColNames = skewedColNames;
+    this.skewedColValues = skewedColValues;
+    this.skewedColValueLocationMaps = skewedColValueLocationMaps;
   }
 
 
@@ -205,4 +213,47 @@ public class MStorageDescriptor {
   public List<MOrder> getSortCols() {
     return sortCols;
   }
+
+  /**
+   * @return the skewedColNames
+   */
+  public List<String> getSkewedColNames() {
+    return skewedColNames;
+  }
+
+  /**
+   * @param skewedColNames the skewedColNames to set
+   */
+  public void setSkewedColNames(List<String> skewedColNames) {
+    this.skewedColNames = skewedColNames;
+  }
+
+  /**
+   * @return the skewedColValues
+   */
+  public List<MStringList> getSkewedColValues() {
+    return skewedColValues;
+  }
+
+  /**
+   * @param skewedColValues the skewedColValues to set
+   */
+  public void setSkewedColValues(List<MStringList> skewedColValues) {
+    this.skewedColValues = skewedColValues;
+  }
+
+  /**
+   * @return the skewedColValueLocationMaps
+   */
+  public Map<MStringList, String> getSkewedColValueLocationMaps() {
+    return skewedColValueLocationMaps;
+  }
+
+  /**
+   * @param skewedColValueLocationMaps the skewedColValueLocationMaps to set
+   */
+  public void setSkewedColValueLocationMaps(Map<MStringList, String> listBucketColValuesMapping) {
+    this.skewedColValueLocationMaps = listBucketColValuesMapping;
+  }
+
 }

Added: hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStringList.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStringList.java?rev=1377187&view=auto
==============================================================================
--- hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStringList.java (added)
+++ hive/trunk/metastore/src/model/org/apache/hadoop/hive/metastore/model/MStringList.java Sat Aug 25 02:44:22 2012
@@ -0,0 +1,62 @@
+/**
+ * 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.
+ */
+package org.apache.hadoop.hive.metastore.model;
+
+import java.util.List;
+
+/**
+ *
+ * It represents data structure of string list.
+ *
+ * workaround JDO limitation: no support for collection of collection.
+ *
+ */
+public class MStringList {
+  private List<String> internalList;
+
+  /**
+   *
+   * @param list
+   */
+  public MStringList(List<String> list) {
+    this.internalList = list;
+  }
+
+  /**
+   * @return the internalList
+   */
+  public List<String> getInternalList() {
+    return internalList;
+  }
+
+  /**
+   * @param internalList the internalList to set
+   */
+  public void setInternalList(List<String> internalList) {
+    this.internalList = internalList;
+  }
+
+  /* (non-Javadoc)
+   * @see java.lang.Object#toString()
+   */
+  @Override
+  public String toString() {
+    return  internalList.toString();
+  }
+
+}

Modified: hive/trunk/metastore/src/model/package.jdo
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/model/package.jdo?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/model/package.jdo (original)
+++ hive/trunk/metastore/src/model/package.jdo Sat Aug 25 02:44:22 2012
@@ -233,6 +233,19 @@
       </field>
 	</class>
 
+   <class name="MStringList" identity-type="datastore" table="Skewed_STRING_LIST" detachable="true">
+     <datastore-identity>
+       <column name="STRING_LIST_ID"/>
+     </datastore-identity>
+     <field name="internalList" table="Skewed_STRING_LIST_VALUES">
+       <collection element-type="java.lang.String"/>
+       <join>
+         <column name="STRING_LIST_ID"/>
+       </join>
+       <element column="STRING_LIST_VALUE"/>
+     </field>
+   </class>
+
     <class name="MStorageDescriptor" identity-type="datastore" table="SDS" detachable="true">
       <datastore-identity>
         <column name="SD_ID"/>
@@ -291,6 +304,26 @@
            <column name="PARAM_VALUE" length="4000" jdbc-type="VARCHAR"/>
         </value>
       </field>
+      <field name="skewedColNames" table="SKEWED_COL_NAMES">
+        <collection element-type="java.lang.String"/>
+        <join>
+          <column name="SD_ID"/>
+        </join>
+        <element column="SKEWED_COL_NAME"/>
+      </field>
+      <field name="skewedColValues" table="SKEWED_VALUES">
+        <collection element-type="MStringList"/>
+        <join/>
+      </field>
+      <field name="skewedColValueLocationMaps" table="SKEWED_COL_VALUE_LOCATION_MAPPING">
+        <map key-type="MStringList" value-type="java.lang.String"/>
+        <join>
+          <column name="SD_ID"/>
+        </join>
+        <value>
+          <column name="location" length="4000" jdbc-type="VARCHAR"/>
+        </value>
+      </field>
     </class>
 
     <class name="MPartition" table="PARTITIONS" identity-type="datastore" detachable="true">

Modified: hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
URL: http://svn.apache.org/viewvc/hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java (original)
+++ hive/trunk/metastore/src/test/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java Sat Aug 25 02:44:22 2012
@@ -47,6 +47,7 @@ import org.apache.hadoop.hive.metastore.
 import org.apache.hadoop.hive.metastore.api.Order;
 import org.apache.hadoop.hive.metastore.api.Partition;
 import org.apache.hadoop.hive.metastore.api.SerDeInfo;
+import org.apache.hadoop.hive.metastore.api.SkewedInfo;
 import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
 import org.apache.hadoop.hive.metastore.api.Table;
 import org.apache.hadoop.hive.metastore.api.Type;
@@ -172,6 +173,16 @@ public abstract class TestHiveMetaStore 
           .put(Constants.SERIALIZATION_FORMAT, "1");
       sd.setSortCols(new ArrayList<Order>());
 
+      //skewed information
+      SkewedInfo skewInfor = new SkewedInfo();
+      skewInfor.setSkewedColNames(Arrays.asList("name"));
+      List<String> skv = Arrays.asList("1");
+      skewInfor.setSkewedColValues(Arrays.asList(skv));
+      Map<List<String>, String> scvlm = new HashMap<List<String>, String>();
+      scvlm.put(skv, "location1");
+      skewInfor.setSkewedColValueLocationMaps(scvlm);
+      sd.setSkewedInfo(skewInfor);
+
       tbl.setPartitionKeys(new ArrayList<FieldSchema>(2));
       tbl.getPartitionKeys().add(
           new FieldSchema("ds", Constants.STRING_TYPE_NAME, ""));

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java?rev=1377187&r1=1377186&r2=1377187&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java Sat Aug 25 02:44:22 2012
@@ -228,7 +228,6 @@ public enum ErrorMsg {
       "If you really want to perform the operation, either set " +
       "hive.optimize.bucketmapjoin.sortedmerge=false, or set " +
       "hive.enforce.sortmergebucketmapjoin=false."),
-
   BUCKET_MAPJOIN_NOT_POSSIBLE(10136,
     "Bucketed mapjoin cannot be performed. " +
     "This can be due to multiple reasons: " +
@@ -251,6 +250,24 @@ public enum ErrorMsg {
     "Fix the metadata or don't use bucketed mapjoin, by setting " +
     "hive.enforce.bucketmapjoin to false."),
 
+  CREATE_SKEWED_TABLE_NO_COLUMN_NAME(10200, "No skewed column name."),
+  CREATE_SKEWED_TABLE_NO_COLUMN_VALUE(10201, "No skewed values."),
+  CREATE_SKEWED_TABLE_DUPLICATE_COLUMN_NAMES(10202,
+      "Duplicate skewed column name:"),
+  CREATE_SKEWED_TABLE_INVALID_COLUMN(10203,
+      "Invalid skewed column name:"),
+  CREATE_SKEWED_TABLE_SKEWED_COL_NAME_VALUE_MISMATCH_1(10204,
+      "Skewed column name is empty but skewed value is not."),
+  CREATE_SKEWED_TABLE_SKEWED_COL_NAME_VALUE_MISMATCH_2(10205,
+      "Skewed column value is empty but skewed name is not."),
+  CREATE_SKEWED_TABLE_SKEWED_COL_NAME_VALUE_MISMATCH_3(10206,
+      "The number of skewed column names and the number of " +
+      "skewed column values are different: "),
+  ALTER_TABLE_NOT_ALLOWED_RENAME_SKEWED_COLUMN(10207,
+          " is a skewed column. It's not allowed to rename skewed column."),
+  HIVE_INTERNAL_DDL_LIST_BUCKETING_DISABLED(10208,
+              "List Bucketing DDL is not allowed to use since feature is not completed yet."),
+
   SCRIPT_INIT_ERROR(20000, "Unable to initialize custom script."),
   SCRIPT_IO_ERROR(20001, "An error occurred while reading or writing to your custom script. "
       + "It may have crashed with an error."),