You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by we...@apache.org on 2017/05/08 22:18:00 UTC

[43/50] [abbrv] hive git commit: HIVE-14671 : merge master into hive-14535 (Wei Zheng)

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
----------------------------------------------------------------------
diff --cc metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
index f547651,8ee84af..1de9056
--- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
+++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
@@@ -14947,6 -14782,171 +15014,171 @@@ class drop_table_with_environment_conte
    def __ne__(self, other):
      return not (self == other)
  
+ class truncate_table_args:
+   """
+   Attributes:
+    - dbName
+    - tableName
+    - partNames
+   """
+ 
+   thrift_spec = (
+     None, # 0
+     (1, TType.STRING, 'dbName', None, None, ), # 1
+     (2, TType.STRING, 'tableName', None, None, ), # 2
+     (3, TType.LIST, 'partNames', (TType.STRING,None), None, ), # 3
+   )
+ 
+   def __init__(self, dbName=None, tableName=None, partNames=None,):
+     self.dbName = dbName
+     self.tableName = tableName
+     self.partNames = partNames
+ 
+   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.STRING:
+           self.dbName = iprot.readString()
+         else:
+           iprot.skip(ftype)
+       elif fid == 2:
+         if ftype == TType.STRING:
+           self.tableName = iprot.readString()
+         else:
+           iprot.skip(ftype)
+       elif fid == 3:
+         if ftype == TType.LIST:
+           self.partNames = []
 -          (_etype662, _size659) = iprot.readListBegin()
 -          for _i663 in xrange(_size659):
 -            _elem664 = iprot.readString()
 -            self.partNames.append(_elem664)
++          (_etype669, _size666) = iprot.readListBegin()
++          for _i670 in xrange(_size666):
++            _elem671 = iprot.readString()
++            self.partNames.append(_elem671)
+           iprot.readListEnd()
+         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('truncate_table_args')
+     if self.dbName is not None:
+       oprot.writeFieldBegin('dbName', TType.STRING, 1)
+       oprot.writeString(self.dbName)
+       oprot.writeFieldEnd()
+     if self.tableName is not None:
+       oprot.writeFieldBegin('tableName', TType.STRING, 2)
+       oprot.writeString(self.tableName)
+       oprot.writeFieldEnd()
+     if self.partNames is not None:
+       oprot.writeFieldBegin('partNames', TType.LIST, 3)
+       oprot.writeListBegin(TType.STRING, len(self.partNames))
 -      for iter665 in self.partNames:
 -        oprot.writeString(iter665)
++      for iter672 in self.partNames:
++        oprot.writeString(iter672)
+       oprot.writeListEnd()
+       oprot.writeFieldEnd()
+     oprot.writeFieldStop()
+     oprot.writeStructEnd()
+ 
+   def validate(self):
+     return
+ 
+ 
+   def __hash__(self):
+     value = 17
+     value = (value * 31) ^ hash(self.dbName)
+     value = (value * 31) ^ hash(self.tableName)
+     value = (value * 31) ^ hash(self.partNames)
+     return value
+ 
+   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 truncate_table_result:
+   """
+   Attributes:
+    - o1
+   """
+ 
+   thrift_spec = (
+     None, # 0
+     (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1
+   )
+ 
+   def __init__(self, o1=None,):
+     self.o1 = o1
+ 
+   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.STRUCT:
+           self.o1 = MetaException()
+           self.o1.read(iprot)
+         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('truncate_table_result')
+     if self.o1 is not None:
+       oprot.writeFieldBegin('o1', TType.STRUCT, 1)
+       self.o1.write(oprot)
+       oprot.writeFieldEnd()
+     oprot.writeFieldStop()
+     oprot.writeStructEnd()
+ 
+   def validate(self):
+     return
+ 
+ 
+   def __hash__(self):
+     value = 17
+     value = (value * 31) ^ hash(self.o1)
+     return value
+ 
+   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 get_tables_args:
    """
    Attributes:
@@@ -15053,10 -15053,10 +15285,10 @@@ class get_tables_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype669, _size666) = iprot.readListBegin()
--          for _i670 in xrange(_size666):
--            _elem671 = iprot.readString()
--            self.success.append(_elem671)
++          (_etype676, _size673) = iprot.readListBegin()
++          for _i677 in xrange(_size673):
++            _elem678 = iprot.readString()
++            self.success.append(_elem678)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15079,8 -15079,8 +15311,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter672 in self.success:
--        oprot.writeString(iter672)
++      for iter679 in self.success:
++        oprot.writeString(iter679)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -15230,10 -15230,10 +15462,10 @@@ class get_tables_by_type_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype676, _size673) = iprot.readListBegin()
--          for _i677 in xrange(_size673):
--            _elem678 = iprot.readString()
--            self.success.append(_elem678)
++          (_etype683, _size680) = iprot.readListBegin()
++          for _i684 in xrange(_size680):
++            _elem685 = iprot.readString()
++            self.success.append(_elem685)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15256,8 -15256,8 +15488,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter679 in self.success:
--        oprot.writeString(iter679)
++      for iter686 in self.success:
++        oprot.writeString(iter686)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -15330,10 -15330,10 +15562,10 @@@ class get_table_meta_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.tbl_types = []
--          (_etype683, _size680) = iprot.readListBegin()
--          for _i684 in xrange(_size680):
--            _elem685 = iprot.readString()
--            self.tbl_types.append(_elem685)
++          (_etype690, _size687) = iprot.readListBegin()
++          for _i691 in xrange(_size687):
++            _elem692 = iprot.readString()
++            self.tbl_types.append(_elem692)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15358,8 -15358,8 +15590,8 @@@
      if self.tbl_types is not None:
        oprot.writeFieldBegin('tbl_types', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.tbl_types))
--      for iter686 in self.tbl_types:
--        oprot.writeString(iter686)
++      for iter693 in self.tbl_types:
++        oprot.writeString(iter693)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -15415,11 -15415,11 +15647,11 @@@ class get_table_meta_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype690, _size687) = iprot.readListBegin()
--          for _i691 in xrange(_size687):
--            _elem692 = TableMeta()
--            _elem692.read(iprot)
--            self.success.append(_elem692)
++          (_etype697, _size694) = iprot.readListBegin()
++          for _i698 in xrange(_size694):
++            _elem699 = TableMeta()
++            _elem699.read(iprot)
++            self.success.append(_elem699)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15442,8 -15442,8 +15674,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter693 in self.success:
--        iter693.write(oprot)
++      for iter700 in self.success:
++        iter700.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -15567,10 -15567,10 +15799,10 @@@ class get_all_tables_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype697, _size694) = iprot.readListBegin()
--          for _i698 in xrange(_size694):
--            _elem699 = iprot.readString()
--            self.success.append(_elem699)
++          (_etype704, _size701) = iprot.readListBegin()
++          for _i705 in xrange(_size701):
++            _elem706 = iprot.readString()
++            self.success.append(_elem706)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15593,8 -15593,8 +15825,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter700 in self.success:
--        oprot.writeString(iter700)
++      for iter707 in self.success:
++        oprot.writeString(iter707)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -15830,10 -15830,10 +16062,10 @@@ class get_table_objects_by_name_args
        elif fid == 2:
          if ftype == TType.LIST:
            self.tbl_names = []
--          (_etype704, _size701) = iprot.readListBegin()
--          for _i705 in xrange(_size701):
--            _elem706 = iprot.readString()
--            self.tbl_names.append(_elem706)
++          (_etype711, _size708) = iprot.readListBegin()
++          for _i712 in xrange(_size708):
++            _elem713 = iprot.readString()
++            self.tbl_names.append(_elem713)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15854,8 -15854,8 +16086,8 @@@
      if self.tbl_names is not None:
        oprot.writeFieldBegin('tbl_names', TType.LIST, 2)
        oprot.writeListBegin(TType.STRING, len(self.tbl_names))
--      for iter707 in self.tbl_names:
--        oprot.writeString(iter707)
++      for iter714 in self.tbl_names:
++        oprot.writeString(iter714)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -15907,11 -15907,11 +16139,11 @@@ class get_table_objects_by_name_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype711, _size708) = iprot.readListBegin()
--          for _i712 in xrange(_size708):
--            _elem713 = Table()
--            _elem713.read(iprot)
--            self.success.append(_elem713)
++          (_etype718, _size715) = iprot.readListBegin()
++          for _i719 in xrange(_size715):
++            _elem720 = Table()
++            _elem720.read(iprot)
++            self.success.append(_elem720)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -15928,8 -15928,8 +16160,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter714 in self.success:
--        iter714.write(oprot)
++      for iter721 in self.success:
++        iter721.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -16412,10 -16412,10 +16644,10 @@@ class get_table_names_by_filter_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype718, _size715) = iprot.readListBegin()
--          for _i719 in xrange(_size715):
--            _elem720 = iprot.readString()
--            self.success.append(_elem720)
++          (_etype725, _size722) = iprot.readListBegin()
++          for _i726 in xrange(_size722):
++            _elem727 = iprot.readString()
++            self.success.append(_elem727)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -16450,8 -16450,8 +16682,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter721 in self.success:
--        oprot.writeString(iter721)
++      for iter728 in self.success:
++        oprot.writeString(iter728)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -17421,11 -17421,11 +17653,11 @@@ class add_partitions_args
        if fid == 1:
          if ftype == TType.LIST:
            self.new_parts = []
--          (_etype725, _size722) = iprot.readListBegin()
--          for _i726 in xrange(_size722):
--            _elem727 = Partition()
--            _elem727.read(iprot)
--            self.new_parts.append(_elem727)
++          (_etype732, _size729) = iprot.readListBegin()
++          for _i733 in xrange(_size729):
++            _elem734 = Partition()
++            _elem734.read(iprot)
++            self.new_parts.append(_elem734)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -17442,8 -17442,8 +17674,8 @@@
      if self.new_parts is not None:
        oprot.writeFieldBegin('new_parts', TType.LIST, 1)
        oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
--      for iter728 in self.new_parts:
--        iter728.write(oprot)
++      for iter735 in self.new_parts:
++        iter735.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -17601,11 -17601,11 +17833,11 @@@ class add_partitions_pspec_args
        if fid == 1:
          if ftype == TType.LIST:
            self.new_parts = []
--          (_etype732, _size729) = iprot.readListBegin()
--          for _i733 in xrange(_size729):
--            _elem734 = PartitionSpec()
--            _elem734.read(iprot)
--            self.new_parts.append(_elem734)
++          (_etype739, _size736) = iprot.readListBegin()
++          for _i740 in xrange(_size736):
++            _elem741 = PartitionSpec()
++            _elem741.read(iprot)
++            self.new_parts.append(_elem741)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -17622,8 -17622,8 +17854,8 @@@
      if self.new_parts is not None:
        oprot.writeFieldBegin('new_parts', TType.LIST, 1)
        oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
--      for iter735 in self.new_parts:
--        iter735.write(oprot)
++      for iter742 in self.new_parts:
++        iter742.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -17797,10 -17797,10 +18029,10 @@@ class append_partition_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype739, _size736) = iprot.readListBegin()
--          for _i740 in xrange(_size736):
--            _elem741 = iprot.readString()
--            self.part_vals.append(_elem741)
++          (_etype746, _size743) = iprot.readListBegin()
++          for _i747 in xrange(_size743):
++            _elem748 = iprot.readString()
++            self.part_vals.append(_elem748)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -17825,8 -17825,8 +18057,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter742 in self.part_vals:
--        oprot.writeString(iter742)
++      for iter749 in self.part_vals:
++        oprot.writeString(iter749)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -18179,10 -18179,10 +18411,10 @@@ class append_partition_with_environment
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype746, _size743) = iprot.readListBegin()
--          for _i747 in xrange(_size743):
--            _elem748 = iprot.readString()
--            self.part_vals.append(_elem748)
++          (_etype753, _size750) = iprot.readListBegin()
++          for _i754 in xrange(_size750):
++            _elem755 = iprot.readString()
++            self.part_vals.append(_elem755)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -18213,8 -18213,8 +18445,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter749 in self.part_vals:
--        oprot.writeString(iter749)
++      for iter756 in self.part_vals:
++        oprot.writeString(iter756)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.environment_context is not None:
@@@ -18809,10 -18809,10 +19041,10 @@@ class drop_partition_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype753, _size750) = iprot.readListBegin()
--          for _i754 in xrange(_size750):
--            _elem755 = iprot.readString()
--            self.part_vals.append(_elem755)
++          (_etype760, _size757) = iprot.readListBegin()
++          for _i761 in xrange(_size757):
++            _elem762 = iprot.readString()
++            self.part_vals.append(_elem762)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -18842,8 -18842,8 +19074,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter756 in self.part_vals:
--        oprot.writeString(iter756)
++      for iter763 in self.part_vals:
++        oprot.writeString(iter763)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.deleteData is not None:
@@@ -19016,10 -19016,10 +19248,10 @@@ class drop_partition_with_environment_c
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype760, _size757) = iprot.readListBegin()
--          for _i761 in xrange(_size757):
--            _elem762 = iprot.readString()
--            self.part_vals.append(_elem762)
++          (_etype767, _size764) = iprot.readListBegin()
++          for _i768 in xrange(_size764):
++            _elem769 = iprot.readString()
++            self.part_vals.append(_elem769)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -19055,8 -19055,8 +19287,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter763 in self.part_vals:
--        oprot.writeString(iter763)
++      for iter770 in self.part_vals:
++        oprot.writeString(iter770)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.deleteData is not None:
@@@ -19793,10 -19793,10 +20025,10 @@@ class get_partition_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype767, _size764) = iprot.readListBegin()
--          for _i768 in xrange(_size764):
--            _elem769 = iprot.readString()
--            self.part_vals.append(_elem769)
++          (_etype774, _size771) = iprot.readListBegin()
++          for _i775 in xrange(_size771):
++            _elem776 = iprot.readString()
++            self.part_vals.append(_elem776)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -19821,8 -19821,8 +20053,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter770 in self.part_vals:
--        oprot.writeString(iter770)
++      for iter777 in self.part_vals:
++        oprot.writeString(iter777)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -19981,11 -19981,11 +20213,11 @@@ class exchange_partition_args
        if fid == 1:
          if ftype == TType.MAP:
            self.partitionSpecs = {}
--          (_ktype772, _vtype773, _size771 ) = iprot.readMapBegin()
--          for _i775 in xrange(_size771):
--            _key776 = iprot.readString()
--            _val777 = iprot.readString()
--            self.partitionSpecs[_key776] = _val777
++          (_ktype779, _vtype780, _size778 ) = iprot.readMapBegin()
++          for _i782 in xrange(_size778):
++            _key783 = iprot.readString()
++            _val784 = iprot.readString()
++            self.partitionSpecs[_key783] = _val784
            iprot.readMapEnd()
          else:
            iprot.skip(ftype)
@@@ -20022,9 -20022,9 +20254,9 @@@
      if self.partitionSpecs is not None:
        oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1)
        oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs))
--      for kiter778,viter779 in self.partitionSpecs.items():
--        oprot.writeString(kiter778)
--        oprot.writeString(viter779)
++      for kiter785,viter786 in self.partitionSpecs.items():
++        oprot.writeString(kiter785)
++        oprot.writeString(viter786)
        oprot.writeMapEnd()
        oprot.writeFieldEnd()
      if self.source_db is not None:
@@@ -20229,11 -20229,11 +20461,11 @@@ class exchange_partitions_args
        if fid == 1:
          if ftype == TType.MAP:
            self.partitionSpecs = {}
--          (_ktype781, _vtype782, _size780 ) = iprot.readMapBegin()
--          for _i784 in xrange(_size780):
--            _key785 = iprot.readString()
--            _val786 = iprot.readString()
--            self.partitionSpecs[_key785] = _val786
++          (_ktype788, _vtype789, _size787 ) = iprot.readMapBegin()
++          for _i791 in xrange(_size787):
++            _key792 = iprot.readString()
++            _val793 = iprot.readString()
++            self.partitionSpecs[_key792] = _val793
            iprot.readMapEnd()
          else:
            iprot.skip(ftype)
@@@ -20270,9 -20270,9 +20502,9 @@@
      if self.partitionSpecs is not None:
        oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1)
        oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs))
--      for kiter787,viter788 in self.partitionSpecs.items():
--        oprot.writeString(kiter787)
--        oprot.writeString(viter788)
++      for kiter794,viter795 in self.partitionSpecs.items():
++        oprot.writeString(kiter794)
++        oprot.writeString(viter795)
        oprot.writeMapEnd()
        oprot.writeFieldEnd()
      if self.source_db is not None:
@@@ -20355,11 -20355,11 +20587,11 @@@ class exchange_partitions_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype792, _size789) = iprot.readListBegin()
--          for _i793 in xrange(_size789):
--            _elem794 = Partition()
--            _elem794.read(iprot)
--            self.success.append(_elem794)
++          (_etype799, _size796) = iprot.readListBegin()
++          for _i800 in xrange(_size796):
++            _elem801 = Partition()
++            _elem801.read(iprot)
++            self.success.append(_elem801)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -20400,8 -20400,8 +20632,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter795 in self.success:
--        iter795.write(oprot)
++      for iter802 in self.success:
++        iter802.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -20495,10 -20495,10 +20727,10 @@@ class get_partition_with_auth_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype799, _size796) = iprot.readListBegin()
--          for _i800 in xrange(_size796):
--            _elem801 = iprot.readString()
--            self.part_vals.append(_elem801)
++          (_etype806, _size803) = iprot.readListBegin()
++          for _i807 in xrange(_size803):
++            _elem808 = iprot.readString()
++            self.part_vals.append(_elem808)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -20510,10 -20510,10 +20742,10 @@@
        elif fid == 5:
          if ftype == TType.LIST:
            self.group_names = []
--          (_etype805, _size802) = iprot.readListBegin()
--          for _i806 in xrange(_size802):
--            _elem807 = iprot.readString()
--            self.group_names.append(_elem807)
++          (_etype812, _size809) = iprot.readListBegin()
++          for _i813 in xrange(_size809):
++            _elem814 = iprot.readString()
++            self.group_names.append(_elem814)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -20538,8 -20538,8 +20770,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter808 in self.part_vals:
--        oprot.writeString(iter808)
++      for iter815 in self.part_vals:
++        oprot.writeString(iter815)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.user_name is not None:
@@@ -20549,8 -20549,8 +20781,8 @@@
      if self.group_names is not None:
        oprot.writeFieldBegin('group_names', TType.LIST, 5)
        oprot.writeListBegin(TType.STRING, len(self.group_names))
--      for iter809 in self.group_names:
--        oprot.writeString(iter809)
++      for iter816 in self.group_names:
++        oprot.writeString(iter816)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -20979,11 -20979,11 +21211,11 @@@ class get_partitions_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype813, _size810) = iprot.readListBegin()
--          for _i814 in xrange(_size810):
--            _elem815 = Partition()
--            _elem815.read(iprot)
--            self.success.append(_elem815)
++          (_etype820, _size817) = iprot.readListBegin()
++          for _i821 in xrange(_size817):
++            _elem822 = Partition()
++            _elem822.read(iprot)
++            self.success.append(_elem822)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21012,8 -21012,8 +21244,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter816 in self.success:
--        iter816.write(oprot)
++      for iter823 in self.success:
++        iter823.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -21107,10 -21107,10 +21339,10 @@@ class get_partitions_with_auth_args
        elif fid == 5:
          if ftype == TType.LIST:
            self.group_names = []
--          (_etype820, _size817) = iprot.readListBegin()
--          for _i821 in xrange(_size817):
--            _elem822 = iprot.readString()
--            self.group_names.append(_elem822)
++          (_etype827, _size824) = iprot.readListBegin()
++          for _i828 in xrange(_size824):
++            _elem829 = iprot.readString()
++            self.group_names.append(_elem829)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21143,8 -21143,8 +21375,8 @@@
      if self.group_names is not None:
        oprot.writeFieldBegin('group_names', TType.LIST, 5)
        oprot.writeListBegin(TType.STRING, len(self.group_names))
--      for iter823 in self.group_names:
--        oprot.writeString(iter823)
++      for iter830 in self.group_names:
++        oprot.writeString(iter830)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -21205,11 -21205,11 +21437,11 @@@ class get_partitions_with_auth_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype827, _size824) = iprot.readListBegin()
--          for _i828 in xrange(_size824):
--            _elem829 = Partition()
--            _elem829.read(iprot)
--            self.success.append(_elem829)
++          (_etype834, _size831) = iprot.readListBegin()
++          for _i835 in xrange(_size831):
++            _elem836 = Partition()
++            _elem836.read(iprot)
++            self.success.append(_elem836)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21238,8 -21238,8 +21470,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter830 in self.success:
--        iter830.write(oprot)
++      for iter837 in self.success:
++        iter837.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -21397,11 -21397,11 +21629,11 @@@ class get_partitions_pspec_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype834, _size831) = iprot.readListBegin()
--          for _i835 in xrange(_size831):
--            _elem836 = PartitionSpec()
--            _elem836.read(iprot)
--            self.success.append(_elem836)
++          (_etype841, _size838) = iprot.readListBegin()
++          for _i842 in xrange(_size838):
++            _elem843 = PartitionSpec()
++            _elem843.read(iprot)
++            self.success.append(_elem843)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21430,8 -21430,8 +21662,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter837 in self.success:
--        iter837.write(oprot)
++      for iter844 in self.success:
++        iter844.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -21586,10 -21586,10 +21818,10 @@@ class get_partition_names_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype841, _size838) = iprot.readListBegin()
--          for _i842 in xrange(_size838):
--            _elem843 = iprot.readString()
--            self.success.append(_elem843)
++          (_etype848, _size845) = iprot.readListBegin()
++          for _i849 in xrange(_size845):
++            _elem850 = iprot.readString()
++            self.success.append(_elem850)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21612,8 -21612,8 +21844,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter844 in self.success:
--        oprot.writeString(iter844)
++      for iter851 in self.success:
++        oprot.writeString(iter851)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o2 is not None:
@@@ -21689,10 -21689,10 +21921,10 @@@ class get_partitions_ps_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype848, _size845) = iprot.readListBegin()
--          for _i849 in xrange(_size845):
--            _elem850 = iprot.readString()
--            self.part_vals.append(_elem850)
++          (_etype855, _size852) = iprot.readListBegin()
++          for _i856 in xrange(_size852):
++            _elem857 = iprot.readString()
++            self.part_vals.append(_elem857)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21722,8 -21722,8 +21954,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter851 in self.part_vals:
--        oprot.writeString(iter851)
++      for iter858 in self.part_vals:
++        oprot.writeString(iter858)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.max_parts is not None:
@@@ -21787,11 -21787,11 +22019,11 @@@ class get_partitions_ps_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype855, _size852) = iprot.readListBegin()
--          for _i856 in xrange(_size852):
--            _elem857 = Partition()
--            _elem857.read(iprot)
--            self.success.append(_elem857)
++          (_etype862, _size859) = iprot.readListBegin()
++          for _i863 in xrange(_size859):
++            _elem864 = Partition()
++            _elem864.read(iprot)
++            self.success.append(_elem864)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21820,8 -21820,8 +22052,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter858 in self.success:
--        iter858.write(oprot)
++      for iter865 in self.success:
++        iter865.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -21908,10 -21908,10 +22140,10 @@@ class get_partitions_ps_with_auth_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype862, _size859) = iprot.readListBegin()
--          for _i863 in xrange(_size859):
--            _elem864 = iprot.readString()
--            self.part_vals.append(_elem864)
++          (_etype869, _size866) = iprot.readListBegin()
++          for _i870 in xrange(_size866):
++            _elem871 = iprot.readString()
++            self.part_vals.append(_elem871)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21928,10 -21928,10 +22160,10 @@@
        elif fid == 6:
          if ftype == TType.LIST:
            self.group_names = []
--          (_etype868, _size865) = iprot.readListBegin()
--          for _i869 in xrange(_size865):
--            _elem870 = iprot.readString()
--            self.group_names.append(_elem870)
++          (_etype875, _size872) = iprot.readListBegin()
++          for _i876 in xrange(_size872):
++            _elem877 = iprot.readString()
++            self.group_names.append(_elem877)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -21956,8 -21956,8 +22188,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter871 in self.part_vals:
--        oprot.writeString(iter871)
++      for iter878 in self.part_vals:
++        oprot.writeString(iter878)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.max_parts is not None:
@@@ -21971,8 -21971,8 +22203,8 @@@
      if self.group_names is not None:
        oprot.writeFieldBegin('group_names', TType.LIST, 6)
        oprot.writeListBegin(TType.STRING, len(self.group_names))
--      for iter872 in self.group_names:
--        oprot.writeString(iter872)
++      for iter879 in self.group_names:
++        oprot.writeString(iter879)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -22034,11 -22034,11 +22266,11 @@@ class get_partitions_ps_with_auth_resul
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype876, _size873) = iprot.readListBegin()
--          for _i877 in xrange(_size873):
--            _elem878 = Partition()
--            _elem878.read(iprot)
--            self.success.append(_elem878)
++          (_etype883, _size880) = iprot.readListBegin()
++          for _i884 in xrange(_size880):
++            _elem885 = Partition()
++            _elem885.read(iprot)
++            self.success.append(_elem885)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -22067,8 -22067,8 +22299,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter879 in self.success:
--        iter879.write(oprot)
++      for iter886 in self.success:
++        iter886.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -22149,10 -22149,10 +22381,10 @@@ class get_partition_names_ps_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype883, _size880) = iprot.readListBegin()
--          for _i884 in xrange(_size880):
--            _elem885 = iprot.readString()
--            self.part_vals.append(_elem885)
++          (_etype890, _size887) = iprot.readListBegin()
++          for _i891 in xrange(_size887):
++            _elem892 = iprot.readString()
++            self.part_vals.append(_elem892)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -22182,8 -22182,8 +22414,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter886 in self.part_vals:
--        oprot.writeString(iter886)
++      for iter893 in self.part_vals:
++        oprot.writeString(iter893)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.max_parts is not None:
@@@ -22247,10 -22247,10 +22479,10 @@@ class get_partition_names_ps_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype890, _size887) = iprot.readListBegin()
--          for _i891 in xrange(_size887):
--            _elem892 = iprot.readString()
--            self.success.append(_elem892)
++          (_etype897, _size894) = iprot.readListBegin()
++          for _i898 in xrange(_size894):
++            _elem899 = iprot.readString()
++            self.success.append(_elem899)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -22279,8 -22279,8 +22511,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter893 in self.success:
--        oprot.writeString(iter893)
++      for iter900 in self.success:
++        oprot.writeString(iter900)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -22451,11 -22451,11 +22683,11 @@@ class get_partitions_by_filter_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype897, _size894) = iprot.readListBegin()
--          for _i898 in xrange(_size894):
--            _elem899 = Partition()
--            _elem899.read(iprot)
--            self.success.append(_elem899)
++          (_etype904, _size901) = iprot.readListBegin()
++          for _i905 in xrange(_size901):
++            _elem906 = Partition()
++            _elem906.read(iprot)
++            self.success.append(_elem906)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -22484,8 -22484,8 +22716,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter900 in self.success:
--        iter900.write(oprot)
++      for iter907 in self.success:
++        iter907.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -22656,11 -22656,11 +22888,11 @@@ class get_part_specs_by_filter_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype904, _size901) = iprot.readListBegin()
--          for _i905 in xrange(_size901):
--            _elem906 = PartitionSpec()
--            _elem906.read(iprot)
--            self.success.append(_elem906)
++          (_etype911, _size908) = iprot.readListBegin()
++          for _i912 in xrange(_size908):
++            _elem913 = PartitionSpec()
++            _elem913.read(iprot)
++            self.success.append(_elem913)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -22689,8 -22689,8 +22921,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter907 in self.success:
--        iter907.write(oprot)
++      for iter914 in self.success:
++        iter914.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -23110,10 -23110,10 +23342,10 @@@ class get_partitions_by_names_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.names = []
--          (_etype911, _size908) = iprot.readListBegin()
--          for _i912 in xrange(_size908):
--            _elem913 = iprot.readString()
--            self.names.append(_elem913)
++          (_etype918, _size915) = iprot.readListBegin()
++          for _i919 in xrange(_size915):
++            _elem920 = iprot.readString()
++            self.names.append(_elem920)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -23138,8 -23138,8 +23370,8 @@@
      if self.names is not None:
        oprot.writeFieldBegin('names', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.names))
--      for iter914 in self.names:
--        oprot.writeString(iter914)
++      for iter921 in self.names:
++        oprot.writeString(iter921)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -23198,11 -23198,11 +23430,11 @@@ class get_partitions_by_names_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype918, _size915) = iprot.readListBegin()
--          for _i919 in xrange(_size915):
--            _elem920 = Partition()
--            _elem920.read(iprot)
--            self.success.append(_elem920)
++          (_etype925, _size922) = iprot.readListBegin()
++          for _i926 in xrange(_size922):
++            _elem927 = Partition()
++            _elem927.read(iprot)
++            self.success.append(_elem927)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -23231,8 -23231,8 +23463,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter921 in self.success:
--        iter921.write(oprot)
++      for iter928 in self.success:
++        iter928.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -23482,11 -23482,11 +23714,11 @@@ class alter_partitions_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.new_parts = []
--          (_etype925, _size922) = iprot.readListBegin()
--          for _i926 in xrange(_size922):
--            _elem927 = Partition()
--            _elem927.read(iprot)
--            self.new_parts.append(_elem927)
++          (_etype932, _size929) = iprot.readListBegin()
++          for _i933 in xrange(_size929):
++            _elem934 = Partition()
++            _elem934.read(iprot)
++            self.new_parts.append(_elem934)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -23511,8 -23511,8 +23743,8 @@@
      if self.new_parts is not None:
        oprot.writeFieldBegin('new_parts', TType.LIST, 3)
        oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
--      for iter928 in self.new_parts:
--        iter928.write(oprot)
++      for iter935 in self.new_parts:
++        iter935.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -23665,11 -23665,11 +23897,11 @@@ class alter_partitions_with_environment
        elif fid == 3:
          if ftype == TType.LIST:
            self.new_parts = []
--          (_etype932, _size929) = iprot.readListBegin()
--          for _i933 in xrange(_size929):
--            _elem934 = Partition()
--            _elem934.read(iprot)
--            self.new_parts.append(_elem934)
++          (_etype939, _size936) = iprot.readListBegin()
++          for _i940 in xrange(_size936):
++            _elem941 = Partition()
++            _elem941.read(iprot)
++            self.new_parts.append(_elem941)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -23700,8 -23700,8 +23932,8 @@@
      if self.new_parts is not None:
        oprot.writeFieldBegin('new_parts', TType.LIST, 3)
        oprot.writeListBegin(TType.STRUCT, len(self.new_parts))
--      for iter935 in self.new_parts:
--        iter935.write(oprot)
++      for iter942 in self.new_parts:
++        iter942.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.environment_context is not None:
@@@ -24045,10 -24045,10 +24277,10 @@@ class rename_partition_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype939, _size936) = iprot.readListBegin()
--          for _i940 in xrange(_size936):
--            _elem941 = iprot.readString()
--            self.part_vals.append(_elem941)
++          (_etype946, _size943) = iprot.readListBegin()
++          for _i947 in xrange(_size943):
++            _elem948 = iprot.readString()
++            self.part_vals.append(_elem948)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -24079,8 -24079,8 +24311,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter942 in self.part_vals:
--        oprot.writeString(iter942)
++      for iter949 in self.part_vals:
++        oprot.writeString(iter949)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.new_part is not None:
@@@ -24222,10 -24222,10 +24454,10 @@@ class partition_name_has_valid_characte
        if fid == 1:
          if ftype == TType.LIST:
            self.part_vals = []
--          (_etype946, _size943) = iprot.readListBegin()
--          for _i947 in xrange(_size943):
--            _elem948 = iprot.readString()
--            self.part_vals.append(_elem948)
++          (_etype953, _size950) = iprot.readListBegin()
++          for _i954 in xrange(_size950):
++            _elem955 = iprot.readString()
++            self.part_vals.append(_elem955)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -24247,8 -24247,8 +24479,8 @@@
      if self.part_vals is not None:
        oprot.writeFieldBegin('part_vals', TType.LIST, 1)
        oprot.writeListBegin(TType.STRING, len(self.part_vals))
--      for iter949 in self.part_vals:
--        oprot.writeString(iter949)
++      for iter956 in self.part_vals:
++        oprot.writeString(iter956)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.throw_exception is not None:
@@@ -24606,10 -24606,10 +24838,10 @@@ class partition_name_to_vals_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype953, _size950) = iprot.readListBegin()
--          for _i954 in xrange(_size950):
--            _elem955 = iprot.readString()
--            self.success.append(_elem955)
++          (_etype960, _size957) = iprot.readListBegin()
++          for _i961 in xrange(_size957):
++            _elem962 = iprot.readString()
++            self.success.append(_elem962)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -24632,8 -24632,8 +24864,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter956 in self.success:
--        oprot.writeString(iter956)
++      for iter963 in self.success:
++        oprot.writeString(iter963)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -24757,11 -24757,11 +24989,11 @@@ class partition_name_to_spec_result
        if fid == 0:
          if ftype == TType.MAP:
            self.success = {}
--          (_ktype958, _vtype959, _size957 ) = iprot.readMapBegin()
--          for _i961 in xrange(_size957):
--            _key962 = iprot.readString()
--            _val963 = iprot.readString()
--            self.success[_key962] = _val963
++          (_ktype965, _vtype966, _size964 ) = iprot.readMapBegin()
++          for _i968 in xrange(_size964):
++            _key969 = iprot.readString()
++            _val970 = iprot.readString()
++            self.success[_key969] = _val970
            iprot.readMapEnd()
          else:
            iprot.skip(ftype)
@@@ -24784,9 -24784,9 +25016,9 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.MAP, 0)
        oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
--      for kiter964,viter965 in self.success.items():
--        oprot.writeString(kiter964)
--        oprot.writeString(viter965)
++      for kiter971,viter972 in self.success.items():
++        oprot.writeString(kiter971)
++        oprot.writeString(viter972)
        oprot.writeMapEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -24862,11 -24862,11 +25094,11 @@@ class markPartitionForEvent_args
        elif fid == 3:
          if ftype == TType.MAP:
            self.part_vals = {}
--          (_ktype967, _vtype968, _size966 ) = iprot.readMapBegin()
--          for _i970 in xrange(_size966):
--            _key971 = iprot.readString()
--            _val972 = iprot.readString()
--            self.part_vals[_key971] = _val972
++          (_ktype974, _vtype975, _size973 ) = iprot.readMapBegin()
++          for _i977 in xrange(_size973):
++            _key978 = iprot.readString()
++            _val979 = iprot.readString()
++            self.part_vals[_key978] = _val979
            iprot.readMapEnd()
          else:
            iprot.skip(ftype)
@@@ -24896,9 -24896,9 +25128,9 @@@
      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 kiter973,viter974 in self.part_vals.items():
--        oprot.writeString(kiter973)
--        oprot.writeString(viter974)
++      for kiter980,viter981 in self.part_vals.items():
++        oprot.writeString(kiter980)
++        oprot.writeString(viter981)
        oprot.writeMapEnd()
        oprot.writeFieldEnd()
      if self.eventType is not None:
@@@ -25112,11 -25112,11 +25344,11 @@@ class isPartitionMarkedForEvent_args
        elif fid == 3:
          if ftype == TType.MAP:
            self.part_vals = {}
--          (_ktype976, _vtype977, _size975 ) = iprot.readMapBegin()
--          for _i979 in xrange(_size975):
--            _key980 = iprot.readString()
--            _val981 = iprot.readString()
--            self.part_vals[_key980] = _val981
++          (_ktype983, _vtype984, _size982 ) = iprot.readMapBegin()
++          for _i986 in xrange(_size982):
++            _key987 = iprot.readString()
++            _val988 = iprot.readString()
++            self.part_vals[_key987] = _val988
            iprot.readMapEnd()
          else:
            iprot.skip(ftype)
@@@ -25146,9 -25146,9 +25378,9 @@@
      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 kiter982,viter983 in self.part_vals.items():
--        oprot.writeString(kiter982)
--        oprot.writeString(viter983)
++      for kiter989,viter990 in self.part_vals.items():
++        oprot.writeString(kiter989)
++        oprot.writeString(viter990)
        oprot.writeMapEnd()
        oprot.writeFieldEnd()
      if self.eventType is not None:
@@@ -26203,11 -26203,11 +26435,11 @@@ class get_indexes_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype987, _size984) = iprot.readListBegin()
--          for _i988 in xrange(_size984):
--            _elem989 = Index()
--            _elem989.read(iprot)
--            self.success.append(_elem989)
++          (_etype994, _size991) = iprot.readListBegin()
++          for _i995 in xrange(_size991):
++            _elem996 = Index()
++            _elem996.read(iprot)
++            self.success.append(_elem996)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -26236,8 -26236,8 +26468,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter990 in self.success:
--        iter990.write(oprot)
++      for iter997 in self.success:
++        iter997.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -26392,10 -26392,10 +26624,10 @@@ class get_index_names_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype994, _size991) = iprot.readListBegin()
--          for _i995 in xrange(_size991):
--            _elem996 = iprot.readString()
--            self.success.append(_elem996)
++          (_etype1001, _size998) = iprot.readListBegin()
++          for _i1002 in xrange(_size998):
++            _elem1003 = iprot.readString()
++            self.success.append(_elem1003)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -26418,8 -26418,8 +26650,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter997 in self.success:
--        oprot.writeString(iter997)
++      for iter1004 in self.success:
++        oprot.writeString(iter1004)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o2 is not None:
@@@ -29285,10 -29285,10 +29517,10 @@@ class get_functions_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1001, _size998) = iprot.readListBegin()
--          for _i1002 in xrange(_size998):
--            _elem1003 = iprot.readString()
--            self.success.append(_elem1003)
++          (_etype1008, _size1005) = iprot.readListBegin()
++          for _i1009 in xrange(_size1005):
++            _elem1010 = iprot.readString()
++            self.success.append(_elem1010)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -29311,8 -29311,8 +29543,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter1004 in self.success:
--        oprot.writeString(iter1004)
++      for iter1011 in self.success:
++        oprot.writeString(iter1011)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -30000,10 -30000,10 +30232,10 @@@ class get_role_names_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1008, _size1005) = iprot.readListBegin()
--          for _i1009 in xrange(_size1005):
--            _elem1010 = iprot.readString()
--            self.success.append(_elem1010)
++          (_etype1015, _size1012) = iprot.readListBegin()
++          for _i1016 in xrange(_size1012):
++            _elem1017 = iprot.readString()
++            self.success.append(_elem1017)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -30026,8 -30026,8 +30258,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter1011 in self.success:
--        oprot.writeString(iter1011)
++      for iter1018 in self.success:
++        oprot.writeString(iter1018)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -30541,11 -30541,11 +30773,11 @@@ class list_roles_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1015, _size1012) = iprot.readListBegin()
--          for _i1016 in xrange(_size1012):
--            _elem1017 = Role()
--            _elem1017.read(iprot)
--            self.success.append(_elem1017)
++          (_etype1022, _size1019) = iprot.readListBegin()
++          for _i1023 in xrange(_size1019):
++            _elem1024 = Role()
++            _elem1024.read(iprot)
++            self.success.append(_elem1024)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -30568,8 -30568,8 +30800,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter1018 in self.success:
--        iter1018.write(oprot)
++      for iter1025 in self.success:
++        iter1025.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -31078,10 -31078,10 +31310,10 @@@ class get_privilege_set_args
        elif fid == 3:
          if ftype == TType.LIST:
            self.group_names = []
--          (_etype1022, _size1019) = iprot.readListBegin()
--          for _i1023 in xrange(_size1019):
--            _elem1024 = iprot.readString()
--            self.group_names.append(_elem1024)
++          (_etype1029, _size1026) = iprot.readListBegin()
++          for _i1030 in xrange(_size1026):
++            _elem1031 = iprot.readString()
++            self.group_names.append(_elem1031)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -31106,8 -31106,8 +31338,8 @@@
      if self.group_names is not None:
        oprot.writeFieldBegin('group_names', TType.LIST, 3)
        oprot.writeListBegin(TType.STRING, len(self.group_names))
--      for iter1025 in self.group_names:
--        oprot.writeString(iter1025)
++      for iter1032 in self.group_names:
++        oprot.writeString(iter1032)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -31334,11 -31334,11 +31566,11 @@@ class list_privileges_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1029, _size1026) = iprot.readListBegin()
--          for _i1030 in xrange(_size1026):
--            _elem1031 = HiveObjectPrivilege()
--            _elem1031.read(iprot)
--            self.success.append(_elem1031)
++          (_etype1036, _size1033) = iprot.readListBegin()
++          for _i1037 in xrange(_size1033):
++            _elem1038 = HiveObjectPrivilege()
++            _elem1038.read(iprot)
++            self.success.append(_elem1038)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -31361,8 -31361,8 +31593,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRUCT, len(self.success))
--      for iter1032 in self.success:
--        iter1032.write(oprot)
++      for iter1039 in self.success:
++        iter1039.write(oprot)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -31860,10 -31860,10 +32092,10 @@@ class set_ugi_args
        elif fid == 2:
          if ftype == TType.LIST:
            self.group_names = []
--          (_etype1036, _size1033) = iprot.readListBegin()
--          for _i1037 in xrange(_size1033):
--            _elem1038 = iprot.readString()
--            self.group_names.append(_elem1038)
++          (_etype1043, _size1040) = iprot.readListBegin()
++          for _i1044 in xrange(_size1040):
++            _elem1045 = iprot.readString()
++            self.group_names.append(_elem1045)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -31884,8 -31884,8 +32116,8 @@@
      if self.group_names is not None:
        oprot.writeFieldBegin('group_names', TType.LIST, 2)
        oprot.writeListBegin(TType.STRING, len(self.group_names))
--      for iter1039 in self.group_names:
--        oprot.writeString(iter1039)
++      for iter1046 in self.group_names:
++        oprot.writeString(iter1046)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -31940,10 -31940,10 +32172,10 @@@ class set_ugi_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1043, _size1040) = iprot.readListBegin()
--          for _i1044 in xrange(_size1040):
--            _elem1045 = iprot.readString()
--            self.success.append(_elem1045)
++          (_etype1050, _size1047) = iprot.readListBegin()
++          for _i1051 in xrange(_size1047):
++            _elem1052 = iprot.readString()
++            self.success.append(_elem1052)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -31966,8 -31966,8 +32198,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter1046 in self.success:
--        oprot.writeString(iter1046)
++      for iter1053 in self.success:
++        oprot.writeString(iter1053)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      if self.o1 is not None:
@@@ -32899,10 -32899,10 +33131,10 @@@ class get_all_token_identifiers_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1050, _size1047) = iprot.readListBegin()
--          for _i1051 in xrange(_size1047):
--            _elem1052 = iprot.readString()
--            self.success.append(_elem1052)
++          (_etype1057, _size1054) = iprot.readListBegin()
++          for _i1058 in xrange(_size1054):
++            _elem1059 = iprot.readString()
++            self.success.append(_elem1059)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -32919,8 -32919,8 +33151,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter1053 in self.success:
--        oprot.writeString(iter1053)
++      for iter1060 in self.success:
++        oprot.writeString(iter1060)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()
@@@ -33447,10 -33447,10 +33679,10 @@@ class get_master_keys_result
        if fid == 0:
          if ftype == TType.LIST:
            self.success = []
--          (_etype1057, _size1054) = iprot.readListBegin()
--          for _i1058 in xrange(_size1054):
--            _elem1059 = iprot.readString()
--            self.success.append(_elem1059)
++          (_etype1064, _size1061) = iprot.readListBegin()
++          for _i1065 in xrange(_size1061):
++            _elem1066 = iprot.readString()
++            self.success.append(_elem1066)
            iprot.readListEnd()
          else:
            iprot.skip(ftype)
@@@ -33467,8 -33467,8 +33699,8 @@@
      if self.success is not None:
        oprot.writeFieldBegin('success', TType.LIST, 0)
        oprot.writeListBegin(TType.STRING, len(self.success))
--      for iter1060 in self.success:
--        oprot.writeString(iter1060)
++      for iter1067 in self.success:
++        oprot.writeString(iter1067)
        oprot.writeListEnd()
        oprot.writeFieldEnd()
      oprot.writeFieldStop()

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
index 915bce3,cbcfc72..ff3505a
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
@@@ -78,7 -81,7 +82,8 @@@ import org.apache.hadoop.hive.common.me
  import org.apache.hadoop.hive.common.metrics.common.MetricsVariable;
  import org.apache.hadoop.hive.conf.HiveConf;
  import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+ import org.apache.hadoop.hive.io.HdfsUtils;
 +import org.apache.hadoop.hive.metastore.TableType;
  import org.apache.hadoop.hive.metastore.api.*;
  import org.apache.hadoop.hive.metastore.events.AddIndexEvent;
  import org.apache.hadoop.hive.metastore.events.AddPartitionEvent;
@@@ -114,7 -117,7 +119,8 @@@ import org.apache.hadoop.hive.metastore
  import org.apache.hadoop.hive.metastore.events.PreReadDatabaseEvent;
  import org.apache.hadoop.hive.metastore.events.PreReadTableEvent;
  import org.apache.hadoop.hive.metastore.filemeta.OrcFileMetadataHandler;
+ import org.apache.hadoop.hive.metastore.messaging.EventMessage.EventType;
 +import org.apache.hadoop.hive.metastore.model.MTableWrite;
  import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy;
  import org.apache.hadoop.hive.metastore.txn.TxnStore;
  import org.apache.hadoop.hive.metastore.txn.TxnUtils;
@@@ -7535,4 -7541,4 +7708,4 @@@ public class HiveMetaStore extends Thri
      }
      return fmHandlers;
    }
--}
++}

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
index 6259cda,870896c..e1c59ec
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
@@@ -1933,59 -1930,27 +1933,82 @@@ public class MetaStoreUtils 
      csNew.setStatsObj(list);
    }
  
+   /**
+    * convert Exception to MetaException, which sets the cause to such exception
+    * @param e cause of the exception
+    * @return  the MetaException with the specified exception as the cause
+    */
+   public static MetaException newMetaException(Exception e) {
+     return newMetaException(e != null ? e.getMessage() : null, e);
+   }
+ 
+   /**
+    * convert Exception to MetaException, which sets the cause to such exception
+    * @param errorMessage  the error message for this MetaException
+    * @param e             cause of the exception
+    * @return  the MetaException with the specified exception as the cause
+    */
+   public static MetaException newMetaException(String errorMessage, Exception e) {
+     MetaException metaException = new MetaException(errorMessage);
+     if (e != null) {
+       metaException.initCause(e);
+     }
+     return metaException;
+   }
+ 
 +  // TODO The following two utility methods can be moved to AcidUtils once no class in metastore is relying on them,
 +  // right now ObjectStore.getAllMmTablesForCleanup is calling these method
 +  /**
 +   * Checks if a table is an ACID table that only supports INSERT, but not UPDATE/DELETE
 +   * @param params table properties
 +   * @return true if table is an INSERT_ONLY table, false otherwise
 +   */
 +  // TODO# also check that transactional is true
 +  public static boolean isInsertOnlyTable(Map<String, String> params) {
 +    return isInsertOnlyTable(params, false);
 +  }
 +
 +  public static boolean isInsertOnlyTable(Map<String, String> params, boolean isCtas) {
 +    String transactionalProp = params.get(hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES);
 +    return (transactionalProp != null && "insert_only".equalsIgnoreCase(transactionalProp));
 +  }
 +
 +   public static boolean isInsertOnlyTable(Properties params) {
 +    // TODO#  redirect for now - fix before merge
 +    HashMap<String, String> testMap = new HashMap<String, String>();
 +    for (String n  : params.stringPropertyNames()) {
 +      testMap.put(n, params.getProperty(n));
 +    }
 +    return isInsertOnlyTable(testMap);
 +  }
 +
 +   /** The method for altering table props; may set the table to MM, non-MM, or not affect MM. */
 +  public static Boolean isToInsertOnlyTable(Map<String, String> props) {
 +    // TODO# Setting these separately is a very hairy issue in certain combinations, since we
 +    //       cannot decide what type of table this becomes without taking both into account, and
 +    //       in many cases the conversion might be illegal.
 +    //       The only thing we allow is tx = true w/o tx-props, for backward compat.
 +    String transactional = props.get(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL);
 +    String transactionalProp = props.get(hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES);
 +    if (transactional == null && transactionalProp == null) return null; // Not affected.
 +    boolean isSetToTxn = "true".equalsIgnoreCase(transactional);
 +    if (transactionalProp == null) {
 +      if (isSetToTxn) return false; // Assume the full ACID table.
 +      throw new RuntimeException("Cannot change '" + hive_metastoreConstants.TABLE_IS_TRANSACTIONAL
 +          + "' without '" + hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES + "'");
 +    }
 +    if (!"insert_only".equalsIgnoreCase(transactionalProp)) return false; // Not MM.
 +    if (!isSetToTxn) {
 +      throw new RuntimeException("Cannot set '"
 +          + hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES + "' to 'insert_only' without "
 +          + "setting '" + hive_metastoreConstants.TABLE_IS_TRANSACTIONAL + "' to 'true'");
 +    }
 +    return true;
 +  }
 +
 +  public static boolean isRemovedInsertOnlyTable(Set<String> removedSet) {
 +    boolean hasTxn = removedSet.contains(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL),
 +        hasProps = removedSet.contains(hive_metastoreConstants.TABLE_TRANSACTIONAL_PROPERTIES);
 +    return hasTxn || hasProps;
 +  }
  }

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --cc metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index 51bc6d0,a83e12e..c351ffd
--- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@@ -8790,192 -8460,43 +8556,232 @@@ public class ObjectStore implements Raw
      }
    }
  
+   /**
+    * This is a cleanup method which is used to rollback a active transaction
+    * if the success flag is false and close the associated Query object. This method is used
+    * internally and visible for testing purposes only
+    * @param success Rollback the current active transaction if false
+    * @param query Query object which needs to be closed
+    */
+   @VisibleForTesting
+   void rollbackAndCleanup(boolean success, Query query) {
+     try {
 -      if(!success) {
++      if (!success) {
+         rollbackTransaction();
+       }
+     } finally {
+       if (query != null) {
+         query.closeAll();
+       }
+     }
+   }
+ 
+   /**
+    * This is a cleanup method which is used to rollback a active transaction
+    * if the success flag is false and close the associated QueryWrapper object. This method is used
+    * internally and visible for testing purposes only
+    * @param success Rollback the current active transaction if false
+    * @param queryWrapper QueryWrapper object which needs to be closed
+    */
+   @VisibleForTesting
+   void rollbackAndCleanup(boolean success, QueryWrapper queryWrapper) {
+     try {
 -      if(!success) {
++      if (!success) {
+         rollbackTransaction();
+       }
+     } finally {
+       if (queryWrapper != null) {
+         queryWrapper.close();
+       }
+     }
+   }
++
 +  @Override
 +  public void createTableWrite(Table tbl, long writeId, char state, long heartbeat) {
 +    boolean success = false;
 +    openTransaction();
 +    try {
 +      MTable mtbl = getMTable(tbl.getDbName(), tbl.getTableName());
 +      MTableWrite tw = new MTableWrite(mtbl, writeId, String.valueOf(state), heartbeat, heartbeat);
 +      pm.makePersistent(tw);
 +      success = true;
 +    } finally {
 +      if (success) {
 +        commitTransaction();
 +      } else {
 +        rollbackTransaction();
 +      }
 +    }
 +  }
 +
 +  @Override
 +  public void updateTableWrite(MTableWrite tw) {
 +    boolean success = false;
 +    openTransaction();
 +    try {
 +      pm.makePersistent(tw);
 +      success = true;
 +    } finally {
 +      if (success) {
 +        commitTransaction();
 +      } else {
 +        rollbackTransaction();
 +      }
 +    }
 +  }
 +
 +  @Override
 +  public MTableWrite getTableWrite(
 +      String dbName, String tblName, long writeId) throws MetaException {
 +    boolean success = false;
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      query = pm.newQuery(MTableWrite.class,
 +              "table.tableName == t1 && table.database.name == t2 && writeId == t3");
 +      query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.Long t3");
 +      @SuppressWarnings("unchecked")
 +      List<MTableWrite> writes = (List<MTableWrite>) query.execute(tblName, dbName, writeId);
 +      pm.retrieveAll(writes);
 +      success = true;
 +      if (writes == null || writes.isEmpty()) return null;
 +      if (writes.size() > 1) {
 +        throw new MetaException(
 +            "More than one TableWrite for " + dbName + "." + tblName + " and " + writeId);
 +      }
 +      return writes.get(0);
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +  @Override
 +  public List<Long> getTableWriteIds(String dbName, String tblName,
 +      long watermarkId, long nextWriteId, char state) throws MetaException {
 +    boolean success = false;
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      boolean hasState = (state != '\0');
 +      query = pm.newQuery("select writeId from org.apache.hadoop.hive.metastore.model.MTableWrite"
 +          + " where table.tableName == t1 && table.database.name == t2 && writeId > t3"
 +          + " && writeId < t4" + (hasState ? " && state == t5" : ""));
 +      query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.Long t3, "
 +          + "java.lang.Long t4" + (hasState ? ", java.lang.String t5" : ""));
 +      query.setResult("writeId");
 +      query.setOrdering("writeId asc");
 +      @SuppressWarnings("unchecked")
 +      List<Long> writes = (List<Long>) (hasState
 +          ? query.executeWithArray(tblName, dbName, watermarkId, nextWriteId, String.valueOf(state))
 +          : query.executeWithArray(tblName, dbName, watermarkId, nextWriteId));
 +      success = true;
 +      return (writes == null) ? new ArrayList<Long>() : new ArrayList<>(writes);
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +  @Override
 +  public List<MTableWrite> getTableWrites(
 +      String dbName, String tblName, long from, long to) throws MetaException {
 +    boolean success = false;
 +    dbName = HiveStringUtils.normalizeIdentifier(dbName);
 +    tblName = HiveStringUtils.normalizeIdentifier(tblName);
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      String queryStr = "table.tableName == t1 && table.database.name == t2 && writeId > t3",
 +          argStr = "java.lang.String t1, java.lang.String t2, java.lang.Long t3";
 +      if (to >= 0) {
 +        queryStr += " && writeId < t4";
 +        argStr += ", java.lang.Long t4";
 +      }
 +      query = pm.newQuery(MTableWrite.class, queryStr);
 +      query.declareParameters(argStr);
 +      query.setOrdering("writeId asc");
 +      @SuppressWarnings("unchecked")
 +      List<MTableWrite> writes = (List<MTableWrite>)(to >= 0
 +         ? query.executeWithArray(tblName, dbName, from, to)
 +         : query.executeWithArray(tblName, dbName, from));
 +      pm.retrieveAll(writes);
 +      success = true;
 +      return (writes == null || writes.isEmpty()) ? null : new ArrayList<>(writes);
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +
 +  @Override
 +  public void deleteTableWrites(
 +      String dbName, String tblName, long from, long to) throws MetaException {
 +    boolean success = false;
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      query = pm.newQuery(MTableWrite.class,
 +          "table.tableName == t1 && table.database.name == t2 && writeId > t3 && writeId < t4");
 +      query.declareParameters(
 +          "java.lang.String t1, java.lang.String t2, java.lang.Long t3, java.lang.Long t4");
 +      query.deletePersistentAll(tblName, dbName, from, to);
 +      success = true;
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +  @Override
 +  public List<FullTableName > getAllMmTablesForCleanup() throws MetaException {
 +    boolean success = false;
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      // If the table had no MM writes, there's nothing to clean up
 +      query = pm.newQuery(MTable.class, "mmNextWriteId > 0");
 +      @SuppressWarnings("unchecked")
 +      List<MTable> tables = (List<MTable>) query.execute();
 +      pm.retrieveAll(tables);
 +      ArrayList<FullTableName> result = new ArrayList<>(tables.size());
 +      for (MTable table : tables) {
 +        if (MetaStoreUtils.isInsertOnlyTable(table.getParameters())) {
 +          result.add(new FullTableName(table.getDatabase().getName(), table.getTableName()));
 +        }
 +      }
 +      success = true;
 +      return result;
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +  @Override
 +  public Collection<String> getAllPartitionLocations(String dbName, String tblName) {
 +    boolean success = false;
 +    Query query = null;
 +    openTransaction();
 +    try {
 +      String q = "select sd.location from org.apache.hadoop.hive.metastore.model.MPartition"
 +          + " where table.tableName == t1 && table.database.name == t2";
 +      query = pm.newQuery();
 +      query.declareParameters("java.lang.String t1, java.lang.String t2");
 +      @SuppressWarnings("unchecked")
 +      List<String> tables = (List<String>) query.execute();
 +      pm.retrieveAll(tables);
 +      success = true;
 +      return new ArrayList<>(tables);
 +    } finally {
 +      closeTransaction(success, query);
 +    }
 +  }
 +
 +  private void closeTransaction(boolean success, Query query) {
 +    if (success) {
 +      commitTransaction();
 +    } else {
 +      rollbackTransaction();
 +    }
 +    if (query != null) {
 +      query.closeAll();
 +    }
 +  }
  }

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/hive/blob/1ceaf357/metastore/src/java/org/apache/hadoop/hive/metastore/Warehouse.java
----------------------------------------------------------------------