http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py ---------------------------------------------------------------------- diff --git a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py index 9873810..5c72a27 100644 --- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py +++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py @@ -183,6 +183,15 @@ class Iface(fb303.FacebookService.Iface): """ pass + def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): + """ + Parameters: + - db_patterns + - tbl_patterns + - tbl_types + """ + pass + def get_all_tables(self, db_name): """ Parameters: @@ -1830,6 +1839,43 @@ class Client(fb303.FacebookService.Client, Iface): raise result.o1 raise TApplicationException(TApplicationException.MISSING_RESULT, "get_tables failed: unknown result") + def get_table_meta(self, db_patterns, tbl_patterns, tbl_types): + """ + Parameters: + - db_patterns + - tbl_patterns + - tbl_types + """ + self.send_get_table_meta(db_patterns, tbl_patterns, tbl_types) + return self.recv_get_table_meta() + + def send_get_table_meta(self, db_patterns, tbl_patterns, tbl_types): + self._oprot.writeMessageBegin('get_table_meta', TMessageType.CALL, self._seqid) + args = get_table_meta_args() + args.db_patterns = db_patterns + args.tbl_patterns = tbl_patterns + args.tbl_types = tbl_types + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_get_table_meta(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = get_table_meta_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.o1 is not None: + raise result.o1 + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_table_meta failed: unknown result") + def get_all_tables(self, db_name): """ Parameters: @@ -5852,6 +5898,7 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor): self._processMap["drop_table"] = Processor.process_drop_table self._processMap["drop_table_with_environment_context"] = Processor.process_drop_table_with_environment_context self._processMap["get_tables"] = Processor.process_get_tables + self._processMap["get_table_meta"] = Processor.process_get_table_meta self._processMap["get_all_tables"] = Processor.process_get_all_tables self._processMap["get_table"] = Processor.process_get_table self._processMap["get_table_objects_by_name"] = Processor.process_get_table_objects_by_name @@ -6517,6 +6564,28 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_get_table_meta(self, seqid, iprot, oprot): + args = get_table_meta_args() + args.read(iprot) + iprot.readMessageEnd() + result = get_table_meta_result() + try: + result.success = self._handler.get_table_meta(args.db_patterns, args.tbl_patterns, args.tbl_types) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except MetaException as o1: + msg_type = TMessageType.REPLY + result.o1 = o1 + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("get_table_meta", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_get_all_tables(self, seqid, iprot, oprot): args = get_all_tables_args() args.read(iprot) @@ -12752,6 +12821,192 @@ class get_tables_result: def __ne__(self, other): return not (self == other) +class get_table_meta_args: + """ + Attributes: + - db_patterns + - tbl_patterns + - tbl_types + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRING, 'db_patterns', None, None, ), # 1 + (2, TType.STRING, 'tbl_patterns', None, None, ), # 2 + (3, TType.LIST, 'tbl_types', (TType.STRING,None), None, ), # 3 + ) + + def __init__(self, db_patterns=None, tbl_patterns=None, tbl_types=None,): + self.db_patterns = db_patterns + self.tbl_patterns = tbl_patterns + self.tbl_types = tbl_types + + 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.db_patterns = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.tbl_patterns = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.LIST: + self.tbl_types = [] + (_etype583, _size580) = iprot.readListBegin() + for _i584 in xrange(_size580): + _elem585 = iprot.readString() + self.tbl_types.append(_elem585) + 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('get_table_meta_args') + if self.db_patterns is not None: + oprot.writeFieldBegin('db_patterns', TType.STRING, 1) + oprot.writeString(self.db_patterns) + oprot.writeFieldEnd() + if self.tbl_patterns is not None: + oprot.writeFieldBegin('tbl_patterns', TType.STRING, 2) + oprot.writeString(self.tbl_patterns) + oprot.writeFieldEnd() + if self.tbl_types is not None: + oprot.writeFieldBegin('tbl_types', TType.LIST, 3) + oprot.writeListBegin(TType.STRING, len(self.tbl_types)) + for iter586 in self.tbl_types: + oprot.writeString(iter586) + oprot.writeListEnd() + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.db_patterns) + value = (value * 31) ^ hash(self.tbl_patterns) + value = (value * 31) ^ hash(self.tbl_types) + 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_table_meta_result: + """ + Attributes: + - success + - o1 + """ + + thrift_spec = ( + (0, TType.LIST, 'success', (TType.STRUCT,(TableMeta, TableMeta.thrift_spec)), None, ), # 0 + (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1 + ) + + def __init__(self, success=None, o1=None,): + self.success = success + 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 == 0: + if ftype == TType.LIST: + self.success = [] + (_etype590, _size587) = iprot.readListBegin() + for _i591 in xrange(_size587): + _elem592 = TableMeta() + _elem592.read(iprot) + self.success.append(_elem592) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif 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('get_table_meta_result') + if self.success is not None: + oprot.writeFieldBegin('success', TType.LIST, 0) + oprot.writeListBegin(TType.STRUCT, len(self.success)) + for iter593 in self.success: + iter593.write(oprot) + oprot.writeListEnd() + oprot.writeFieldEnd() + 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.success) + 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_all_tables_args: """ Attributes: @@ -12845,10 +13100,10 @@ class get_all_tables_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype583, _size580) = iprot.readListBegin() - for _i584 in xrange(_size580): - _elem585 = iprot.readString() - self.success.append(_elem585) + (_etype597, _size594) = iprot.readListBegin() + for _i598 in xrange(_size594): + _elem599 = iprot.readString() + self.success.append(_elem599) iprot.readListEnd() else: iprot.skip(ftype) @@ -12871,8 +13126,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 iter586 in self.success: - oprot.writeString(iter586) + for iter600 in self.success: + oprot.writeString(iter600) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -13108,10 +13363,10 @@ class get_table_objects_by_name_args: elif fid == 2: if ftype == TType.LIST: self.tbl_names = [] - (_etype590, _size587) = iprot.readListBegin() - for _i591 in xrange(_size587): - _elem592 = iprot.readString() - self.tbl_names.append(_elem592) + (_etype604, _size601) = iprot.readListBegin() + for _i605 in xrange(_size601): + _elem606 = iprot.readString() + self.tbl_names.append(_elem606) iprot.readListEnd() else: iprot.skip(ftype) @@ -13132,8 +13387,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 iter593 in self.tbl_names: - oprot.writeString(iter593) + for iter607 in self.tbl_names: + oprot.writeString(iter607) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13194,11 +13449,11 @@ class get_table_objects_by_name_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype597, _size594) = iprot.readListBegin() - for _i598 in xrange(_size594): - _elem599 = Table() - _elem599.read(iprot) - self.success.append(_elem599) + (_etype611, _size608) = iprot.readListBegin() + for _i612 in xrange(_size608): + _elem613 = Table() + _elem613.read(iprot) + self.success.append(_elem613) iprot.readListEnd() else: iprot.skip(ftype) @@ -13233,8 +13488,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 iter600 in self.success: - iter600.write(oprot) + for iter614 in self.success: + iter614.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -13400,10 +13655,10 @@ class get_table_names_by_filter_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype604, _size601) = iprot.readListBegin() - for _i605 in xrange(_size601): - _elem606 = iprot.readString() - self.success.append(_elem606) + (_etype618, _size615) = iprot.readListBegin() + for _i619 in xrange(_size615): + _elem620 = iprot.readString() + self.success.append(_elem620) iprot.readListEnd() else: iprot.skip(ftype) @@ -13438,8 +13693,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 iter607 in self.success: - oprot.writeString(iter607) + for iter621 in self.success: + oprot.writeString(iter621) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -14409,11 +14664,11 @@ class add_partitions_args: if fid == 1: if ftype == TType.LIST: self.new_parts = [] - (_etype611, _size608) = iprot.readListBegin() - for _i612 in xrange(_size608): - _elem613 = Partition() - _elem613.read(iprot) - self.new_parts.append(_elem613) + (_etype625, _size622) = iprot.readListBegin() + for _i626 in xrange(_size622): + _elem627 = Partition() + _elem627.read(iprot) + self.new_parts.append(_elem627) iprot.readListEnd() else: iprot.skip(ftype) @@ -14430,8 +14685,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 iter614 in self.new_parts: - iter614.write(oprot) + for iter628 in self.new_parts: + iter628.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14589,11 +14844,11 @@ class add_partitions_pspec_args: if fid == 1: if ftype == TType.LIST: self.new_parts = [] - (_etype618, _size615) = iprot.readListBegin() - for _i619 in xrange(_size615): - _elem620 = PartitionSpec() - _elem620.read(iprot) - self.new_parts.append(_elem620) + (_etype632, _size629) = iprot.readListBegin() + for _i633 in xrange(_size629): + _elem634 = PartitionSpec() + _elem634.read(iprot) + self.new_parts.append(_elem634) iprot.readListEnd() else: iprot.skip(ftype) @@ -14610,8 +14865,8 @@ class add_partitions_pspec_args: if self.new_parts is not None: oprot.writeFieldBegin('new_parts', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.new_parts)) - for iter621 in self.new_parts: - iter621.write(oprot) + for iter635 in self.new_parts: + iter635.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14785,10 +15040,10 @@ class append_partition_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype625, _size622) = iprot.readListBegin() - for _i626 in xrange(_size622): - _elem627 = iprot.readString() - self.part_vals.append(_elem627) + (_etype639, _size636) = iprot.readListBegin() + for _i640 in xrange(_size636): + _elem641 = iprot.readString() + self.part_vals.append(_elem641) iprot.readListEnd() else: iprot.skip(ftype) @@ -14813,8 +15068,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 iter628 in self.part_vals: - oprot.writeString(iter628) + for iter642 in self.part_vals: + oprot.writeString(iter642) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15167,10 +15422,10 @@ class append_partition_with_environment_context_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype632, _size629) = iprot.readListBegin() - for _i633 in xrange(_size629): - _elem634 = iprot.readString() - self.part_vals.append(_elem634) + (_etype646, _size643) = iprot.readListBegin() + for _i647 in xrange(_size643): + _elem648 = iprot.readString() + self.part_vals.append(_elem648) iprot.readListEnd() else: iprot.skip(ftype) @@ -15201,8 +15456,8 @@ class append_partition_with_environment_context_args: if self.part_vals is not None: oprot.writeFieldBegin('part_vals', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.part_vals)) - for iter635 in self.part_vals: - oprot.writeString(iter635) + for iter649 in self.part_vals: + oprot.writeString(iter649) oprot.writeListEnd() oprot.writeFieldEnd() if self.environment_context is not None: @@ -15797,10 +16052,10 @@ class drop_partition_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype639, _size636) = iprot.readListBegin() - for _i640 in xrange(_size636): - _elem641 = iprot.readString() - self.part_vals.append(_elem641) + (_etype653, _size650) = iprot.readListBegin() + for _i654 in xrange(_size650): + _elem655 = iprot.readString() + self.part_vals.append(_elem655) iprot.readListEnd() else: iprot.skip(ftype) @@ -15830,8 +16085,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 iter642 in self.part_vals: - oprot.writeString(iter642) + for iter656 in self.part_vals: + oprot.writeString(iter656) oprot.writeListEnd() oprot.writeFieldEnd() if self.deleteData is not None: @@ -16004,10 +16259,10 @@ class drop_partition_with_environment_context_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype646, _size643) = iprot.readListBegin() - for _i647 in xrange(_size643): - _elem648 = iprot.readString() - self.part_vals.append(_elem648) + (_etype660, _size657) = iprot.readListBegin() + for _i661 in xrange(_size657): + _elem662 = iprot.readString() + self.part_vals.append(_elem662) iprot.readListEnd() else: iprot.skip(ftype) @@ -16043,8 +16298,8 @@ class drop_partition_with_environment_context_args: if self.part_vals is not None: oprot.writeFieldBegin('part_vals', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.part_vals)) - for iter649 in self.part_vals: - oprot.writeString(iter649) + for iter663 in self.part_vals: + oprot.writeString(iter663) oprot.writeListEnd() oprot.writeFieldEnd() if self.deleteData is not None: @@ -16781,10 +17036,10 @@ class get_partition_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype653, _size650) = iprot.readListBegin() - for _i654 in xrange(_size650): - _elem655 = iprot.readString() - self.part_vals.append(_elem655) + (_etype667, _size664) = iprot.readListBegin() + for _i668 in xrange(_size664): + _elem669 = iprot.readString() + self.part_vals.append(_elem669) iprot.readListEnd() else: iprot.skip(ftype) @@ -16809,8 +17064,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 iter656 in self.part_vals: - oprot.writeString(iter656) + for iter670 in self.part_vals: + oprot.writeString(iter670) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16969,11 +17224,11 @@ class exchange_partition_args: if fid == 1: if ftype == TType.MAP: self.partitionSpecs = {} - (_ktype658, _vtype659, _size657 ) = iprot.readMapBegin() - for _i661 in xrange(_size657): - _key662 = iprot.readString() - _val663 = iprot.readString() - self.partitionSpecs[_key662] = _val663 + (_ktype672, _vtype673, _size671 ) = iprot.readMapBegin() + for _i675 in xrange(_size671): + _key676 = iprot.readString() + _val677 = iprot.readString() + self.partitionSpecs[_key676] = _val677 iprot.readMapEnd() else: iprot.skip(ftype) @@ -17010,9 +17265,9 @@ class exchange_partition_args: if self.partitionSpecs is not None: oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs)) - for kiter664,viter665 in self.partitionSpecs.items(): - oprot.writeString(kiter664) - oprot.writeString(viter665) + for kiter678,viter679 in self.partitionSpecs.items(): + oprot.writeString(kiter678) + oprot.writeString(viter679) oprot.writeMapEnd() oprot.writeFieldEnd() if self.source_db is not None: @@ -17217,11 +17472,11 @@ class exchange_partitions_args: if fid == 1: if ftype == TType.MAP: self.partitionSpecs = {} - (_ktype667, _vtype668, _size666 ) = iprot.readMapBegin() - for _i670 in xrange(_size666): - _key671 = iprot.readString() - _val672 = iprot.readString() - self.partitionSpecs[_key671] = _val672 + (_ktype681, _vtype682, _size680 ) = iprot.readMapBegin() + for _i684 in xrange(_size680): + _key685 = iprot.readString() + _val686 = iprot.readString() + self.partitionSpecs[_key685] = _val686 iprot.readMapEnd() else: iprot.skip(ftype) @@ -17258,9 +17513,9 @@ class exchange_partitions_args: if self.partitionSpecs is not None: oprot.writeFieldBegin('partitionSpecs', TType.MAP, 1) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.partitionSpecs)) - for kiter673,viter674 in self.partitionSpecs.items(): - oprot.writeString(kiter673) - oprot.writeString(viter674) + for kiter687,viter688 in self.partitionSpecs.items(): + oprot.writeString(kiter687) + oprot.writeString(viter688) oprot.writeMapEnd() oprot.writeFieldEnd() if self.source_db is not None: @@ -17343,11 +17598,11 @@ class exchange_partitions_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype678, _size675) = iprot.readListBegin() - for _i679 in xrange(_size675): - _elem680 = Partition() - _elem680.read(iprot) - self.success.append(_elem680) + (_etype692, _size689) = iprot.readListBegin() + for _i693 in xrange(_size689): + _elem694 = Partition() + _elem694.read(iprot) + self.success.append(_elem694) iprot.readListEnd() else: iprot.skip(ftype) @@ -17388,8 +17643,8 @@ class exchange_partitions_result: if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter681 in self.success: - iter681.write(oprot) + for iter695 in self.success: + iter695.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -17483,10 +17738,10 @@ class get_partition_with_auth_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype685, _size682) = iprot.readListBegin() - for _i686 in xrange(_size682): - _elem687 = iprot.readString() - self.part_vals.append(_elem687) + (_etype699, _size696) = iprot.readListBegin() + for _i700 in xrange(_size696): + _elem701 = iprot.readString() + self.part_vals.append(_elem701) iprot.readListEnd() else: iprot.skip(ftype) @@ -17498,10 +17753,10 @@ class get_partition_with_auth_args: elif fid == 5: if ftype == TType.LIST: self.group_names = [] - (_etype691, _size688) = iprot.readListBegin() - for _i692 in xrange(_size688): - _elem693 = iprot.readString() - self.group_names.append(_elem693) + (_etype705, _size702) = iprot.readListBegin() + for _i706 in xrange(_size702): + _elem707 = iprot.readString() + self.group_names.append(_elem707) iprot.readListEnd() else: iprot.skip(ftype) @@ -17526,8 +17781,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 iter694 in self.part_vals: - oprot.writeString(iter694) + for iter708 in self.part_vals: + oprot.writeString(iter708) oprot.writeListEnd() oprot.writeFieldEnd() if self.user_name is not None: @@ -17537,8 +17792,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 iter695 in self.group_names: - oprot.writeString(iter695) + for iter709 in self.group_names: + oprot.writeString(iter709) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17967,11 +18222,11 @@ class get_partitions_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype699, _size696) = iprot.readListBegin() - for _i700 in xrange(_size696): - _elem701 = Partition() - _elem701.read(iprot) - self.success.append(_elem701) + (_etype713, _size710) = iprot.readListBegin() + for _i714 in xrange(_size710): + _elem715 = Partition() + _elem715.read(iprot) + self.success.append(_elem715) iprot.readListEnd() else: iprot.skip(ftype) @@ -18000,8 +18255,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 iter702 in self.success: - iter702.write(oprot) + for iter716 in self.success: + iter716.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18095,10 +18350,10 @@ class get_partitions_with_auth_args: elif fid == 5: if ftype == TType.LIST: self.group_names = [] - (_etype706, _size703) = iprot.readListBegin() - for _i707 in xrange(_size703): - _elem708 = iprot.readString() - self.group_names.append(_elem708) + (_etype720, _size717) = iprot.readListBegin() + for _i721 in xrange(_size717): + _elem722 = iprot.readString() + self.group_names.append(_elem722) iprot.readListEnd() else: iprot.skip(ftype) @@ -18131,8 +18386,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 iter709 in self.group_names: - oprot.writeString(iter709) + for iter723 in self.group_names: + oprot.writeString(iter723) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18193,11 +18448,11 @@ class get_partitions_with_auth_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype713, _size710) = iprot.readListBegin() - for _i714 in xrange(_size710): - _elem715 = Partition() - _elem715.read(iprot) - self.success.append(_elem715) + (_etype727, _size724) = iprot.readListBegin() + for _i728 in xrange(_size724): + _elem729 = Partition() + _elem729.read(iprot) + self.success.append(_elem729) iprot.readListEnd() else: iprot.skip(ftype) @@ -18226,8 +18481,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 iter716 in self.success: - iter716.write(oprot) + for iter730 in self.success: + iter730.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18385,11 +18640,11 @@ class get_partitions_pspec_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype720, _size717) = iprot.readListBegin() - for _i721 in xrange(_size717): - _elem722 = PartitionSpec() - _elem722.read(iprot) - self.success.append(_elem722) + (_etype734, _size731) = iprot.readListBegin() + for _i735 in xrange(_size731): + _elem736 = PartitionSpec() + _elem736.read(iprot) + self.success.append(_elem736) iprot.readListEnd() else: iprot.skip(ftype) @@ -18418,8 +18673,8 @@ class get_partitions_pspec_result: if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter723 in self.success: - iter723.write(oprot) + for iter737 in self.success: + iter737.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18574,10 +18829,10 @@ class get_partition_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype727, _size724) = iprot.readListBegin() - for _i728 in xrange(_size724): - _elem729 = iprot.readString() - self.success.append(_elem729) + (_etype741, _size738) = iprot.readListBegin() + for _i742 in xrange(_size738): + _elem743 = iprot.readString() + self.success.append(_elem743) iprot.readListEnd() else: iprot.skip(ftype) @@ -18600,8 +18855,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 iter730 in self.success: - oprot.writeString(iter730) + for iter744 in self.success: + oprot.writeString(iter744) oprot.writeListEnd() oprot.writeFieldEnd() if self.o2 is not None: @@ -18677,10 +18932,10 @@ class get_partitions_ps_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype734, _size731) = iprot.readListBegin() - for _i735 in xrange(_size731): - _elem736 = iprot.readString() - self.part_vals.append(_elem736) + (_etype748, _size745) = iprot.readListBegin() + for _i749 in xrange(_size745): + _elem750 = iprot.readString() + self.part_vals.append(_elem750) iprot.readListEnd() else: iprot.skip(ftype) @@ -18710,8 +18965,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 iter737 in self.part_vals: - oprot.writeString(iter737) + for iter751 in self.part_vals: + oprot.writeString(iter751) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -18775,11 +19030,11 @@ class get_partitions_ps_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype741, _size738) = iprot.readListBegin() - for _i742 in xrange(_size738): - _elem743 = Partition() - _elem743.read(iprot) - self.success.append(_elem743) + (_etype755, _size752) = iprot.readListBegin() + for _i756 in xrange(_size752): + _elem757 = Partition() + _elem757.read(iprot) + self.success.append(_elem757) iprot.readListEnd() else: iprot.skip(ftype) @@ -18808,8 +19063,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 iter744 in self.success: - iter744.write(oprot) + for iter758 in self.success: + iter758.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18896,10 +19151,10 @@ class get_partitions_ps_with_auth_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype748, _size745) = iprot.readListBegin() - for _i749 in xrange(_size745): - _elem750 = iprot.readString() - self.part_vals.append(_elem750) + (_etype762, _size759) = iprot.readListBegin() + for _i763 in xrange(_size759): + _elem764 = iprot.readString() + self.part_vals.append(_elem764) iprot.readListEnd() else: iprot.skip(ftype) @@ -18916,10 +19171,10 @@ class get_partitions_ps_with_auth_args: elif fid == 6: if ftype == TType.LIST: self.group_names = [] - (_etype754, _size751) = iprot.readListBegin() - for _i755 in xrange(_size751): - _elem756 = iprot.readString() - self.group_names.append(_elem756) + (_etype768, _size765) = iprot.readListBegin() + for _i769 in xrange(_size765): + _elem770 = iprot.readString() + self.group_names.append(_elem770) iprot.readListEnd() else: iprot.skip(ftype) @@ -18944,8 +19199,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 iter757 in self.part_vals: - oprot.writeString(iter757) + for iter771 in self.part_vals: + oprot.writeString(iter771) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -18959,8 +19214,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 iter758 in self.group_names: - oprot.writeString(iter758) + for iter772 in self.group_names: + oprot.writeString(iter772) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -19022,11 +19277,11 @@ class get_partitions_ps_with_auth_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype762, _size759) = iprot.readListBegin() - for _i763 in xrange(_size759): - _elem764 = Partition() - _elem764.read(iprot) - self.success.append(_elem764) + (_etype776, _size773) = iprot.readListBegin() + for _i777 in xrange(_size773): + _elem778 = Partition() + _elem778.read(iprot) + self.success.append(_elem778) iprot.readListEnd() else: iprot.skip(ftype) @@ -19055,8 +19310,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 iter765 in self.success: - iter765.write(oprot) + for iter779 in self.success: + iter779.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19137,10 +19392,10 @@ class get_partition_names_ps_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype769, _size766) = iprot.readListBegin() - for _i770 in xrange(_size766): - _elem771 = iprot.readString() - self.part_vals.append(_elem771) + (_etype783, _size780) = iprot.readListBegin() + for _i784 in xrange(_size780): + _elem785 = iprot.readString() + self.part_vals.append(_elem785) iprot.readListEnd() else: iprot.skip(ftype) @@ -19170,8 +19425,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 iter772 in self.part_vals: - oprot.writeString(iter772) + for iter786 in self.part_vals: + oprot.writeString(iter786) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -19235,10 +19490,10 @@ class get_partition_names_ps_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype776, _size773) = iprot.readListBegin() - for _i777 in xrange(_size773): - _elem778 = iprot.readString() - self.success.append(_elem778) + (_etype790, _size787) = iprot.readListBegin() + for _i791 in xrange(_size787): + _elem792 = iprot.readString() + self.success.append(_elem792) iprot.readListEnd() else: iprot.skip(ftype) @@ -19267,8 +19522,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 iter779 in self.success: - oprot.writeString(iter779) + for iter793 in self.success: + oprot.writeString(iter793) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19439,11 +19694,11 @@ class get_partitions_by_filter_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype783, _size780) = iprot.readListBegin() - for _i784 in xrange(_size780): - _elem785 = Partition() - _elem785.read(iprot) - self.success.append(_elem785) + (_etype797, _size794) = iprot.readListBegin() + for _i798 in xrange(_size794): + _elem799 = Partition() + _elem799.read(iprot) + self.success.append(_elem799) iprot.readListEnd() else: iprot.skip(ftype) @@ -19472,8 +19727,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 iter786 in self.success: - iter786.write(oprot) + for iter800 in self.success: + iter800.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19644,11 +19899,11 @@ class get_part_specs_by_filter_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype790, _size787) = iprot.readListBegin() - for _i791 in xrange(_size787): - _elem792 = PartitionSpec() - _elem792.read(iprot) - self.success.append(_elem792) + (_etype804, _size801) = iprot.readListBegin() + for _i805 in xrange(_size801): + _elem806 = PartitionSpec() + _elem806.read(iprot) + self.success.append(_elem806) iprot.readListEnd() else: iprot.skip(ftype) @@ -19677,8 +19932,8 @@ class get_part_specs_by_filter_result: if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRUCT, len(self.success)) - for iter793 in self.success: - iter793.write(oprot) + for iter807 in self.success: + iter807.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19915,10 +20170,10 @@ class get_partitions_by_names_args: elif fid == 3: if ftype == TType.LIST: self.names = [] - (_etype797, _size794) = iprot.readListBegin() - for _i798 in xrange(_size794): - _elem799 = iprot.readString() - self.names.append(_elem799) + (_etype811, _size808) = iprot.readListBegin() + for _i812 in xrange(_size808): + _elem813 = iprot.readString() + self.names.append(_elem813) iprot.readListEnd() else: iprot.skip(ftype) @@ -19943,8 +20198,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 iter800 in self.names: - oprot.writeString(iter800) + for iter814 in self.names: + oprot.writeString(iter814) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -20003,11 +20258,11 @@ class get_partitions_by_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype804, _size801) = iprot.readListBegin() - for _i805 in xrange(_size801): - _elem806 = Partition() - _elem806.read(iprot) - self.success.append(_elem806) + (_etype818, _size815) = iprot.readListBegin() + for _i819 in xrange(_size815): + _elem820 = Partition() + _elem820.read(iprot) + self.success.append(_elem820) iprot.readListEnd() else: iprot.skip(ftype) @@ -20036,8 +20291,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 iter807 in self.success: - iter807.write(oprot) + for iter821 in self.success: + iter821.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -20287,11 +20542,11 @@ class alter_partitions_args: elif fid == 3: if ftype == TType.LIST: self.new_parts = [] - (_etype811, _size808) = iprot.readListBegin() - for _i812 in xrange(_size808): - _elem813 = Partition() - _elem813.read(iprot) - self.new_parts.append(_elem813) + (_etype825, _size822) = iprot.readListBegin() + for _i826 in xrange(_size822): + _elem827 = Partition() + _elem827.read(iprot) + self.new_parts.append(_elem827) iprot.readListEnd() else: iprot.skip(ftype) @@ -20316,8 +20571,8 @@ class alter_partitions_args: if self.new_parts is not None: oprot.writeFieldBegin('new_parts', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.new_parts)) - for iter814 in self.new_parts: - iter814.write(oprot) + for iter828 in self.new_parts: + iter828.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -20656,10 +20911,10 @@ class rename_partition_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype818, _size815) = iprot.readListBegin() - for _i819 in xrange(_size815): - _elem820 = iprot.readString() - self.part_vals.append(_elem820) + (_etype832, _size829) = iprot.readListBegin() + for _i833 in xrange(_size829): + _elem834 = iprot.readString() + self.part_vals.append(_elem834) iprot.readListEnd() else: iprot.skip(ftype) @@ -20690,8 +20945,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 iter821 in self.part_vals: - oprot.writeString(iter821) + for iter835 in self.part_vals: + oprot.writeString(iter835) oprot.writeListEnd() oprot.writeFieldEnd() if self.new_part is not None: @@ -20833,10 +21088,10 @@ class partition_name_has_valid_characters_args: if fid == 1: if ftype == TType.LIST: self.part_vals = [] - (_etype825, _size822) = iprot.readListBegin() - for _i826 in xrange(_size822): - _elem827 = iprot.readString() - self.part_vals.append(_elem827) + (_etype839, _size836) = iprot.readListBegin() + for _i840 in xrange(_size836): + _elem841 = iprot.readString() + self.part_vals.append(_elem841) iprot.readListEnd() else: iprot.skip(ftype) @@ -20858,8 +21113,8 @@ class partition_name_has_valid_characters_args: if self.part_vals is not None: oprot.writeFieldBegin('part_vals', TType.LIST, 1) oprot.writeListBegin(TType.STRING, len(self.part_vals)) - for iter828 in self.part_vals: - oprot.writeString(iter828) + for iter842 in self.part_vals: + oprot.writeString(iter842) oprot.writeListEnd() oprot.writeFieldEnd() if self.throw_exception is not None: @@ -21217,10 +21472,10 @@ class partition_name_to_vals_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype832, _size829) = iprot.readListBegin() - for _i833 in xrange(_size829): - _elem834 = iprot.readString() - self.success.append(_elem834) + (_etype846, _size843) = iprot.readListBegin() + for _i847 in xrange(_size843): + _elem848 = iprot.readString() + self.success.append(_elem848) iprot.readListEnd() else: iprot.skip(ftype) @@ -21243,8 +21498,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 iter835 in self.success: - oprot.writeString(iter835) + for iter849 in self.success: + oprot.writeString(iter849) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -21368,11 +21623,11 @@ class partition_name_to_spec_result: if fid == 0: if ftype == TType.MAP: self.success = {} - (_ktype837, _vtype838, _size836 ) = iprot.readMapBegin() - for _i840 in xrange(_size836): - _key841 = iprot.readString() - _val842 = iprot.readString() - self.success[_key841] = _val842 + (_ktype851, _vtype852, _size850 ) = iprot.readMapBegin() + for _i854 in xrange(_size850): + _key855 = iprot.readString() + _val856 = iprot.readString() + self.success[_key855] = _val856 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21395,9 +21650,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 kiter843,viter844 in self.success.items(): - oprot.writeString(kiter843) - oprot.writeString(viter844) + for kiter857,viter858 in self.success.items(): + oprot.writeString(kiter857) + oprot.writeString(viter858) oprot.writeMapEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -21473,11 +21728,11 @@ class markPartitionForEvent_args: elif fid == 3: if ftype == TType.MAP: self.part_vals = {} - (_ktype846, _vtype847, _size845 ) = iprot.readMapBegin() - for _i849 in xrange(_size845): - _key850 = iprot.readString() - _val851 = iprot.readString() - self.part_vals[_key850] = _val851 + (_ktype860, _vtype861, _size859 ) = iprot.readMapBegin() + for _i863 in xrange(_size859): + _key864 = iprot.readString() + _val865 = iprot.readString() + self.part_vals[_key864] = _val865 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21507,9 +21762,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 kiter852,viter853 in self.part_vals.items(): - oprot.writeString(kiter852) - oprot.writeString(viter853) + for kiter866,viter867 in self.part_vals.items(): + oprot.writeString(kiter866) + oprot.writeString(viter867) oprot.writeMapEnd() oprot.writeFieldEnd() if self.eventType is not None: @@ -21723,11 +21978,11 @@ class isPartitionMarkedForEvent_args: elif fid == 3: if ftype == TType.MAP: self.part_vals = {} - (_ktype855, _vtype856, _size854 ) = iprot.readMapBegin() - for _i858 in xrange(_size854): - _key859 = iprot.readString() - _val860 = iprot.readString() - self.part_vals[_key859] = _val860 + (_ktype869, _vtype870, _size868 ) = iprot.readMapBegin() + for _i872 in xrange(_size868): + _key873 = iprot.readString() + _val874 = iprot.readString() + self.part_vals[_key873] = _val874 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21757,9 +22012,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 kiter861,viter862 in self.part_vals.items(): - oprot.writeString(kiter861) - oprot.writeString(viter862) + for kiter875,viter876 in self.part_vals.items(): + oprot.writeString(kiter875) + oprot.writeString(viter876) oprot.writeMapEnd() oprot.writeFieldEnd() if self.eventType is not None: @@ -22814,11 +23069,11 @@ class get_indexes_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype866, _size863) = iprot.readListBegin() - for _i867 in xrange(_size863): - _elem868 = Index() - _elem868.read(iprot) - self.success.append(_elem868) + (_etype880, _size877) = iprot.readListBegin() + for _i881 in xrange(_size877): + _elem882 = Index() + _elem882.read(iprot) + self.success.append(_elem882) iprot.readListEnd() else: iprot.skip(ftype) @@ -22847,8 +23102,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 iter869 in self.success: - iter869.write(oprot) + for iter883 in self.success: + iter883.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -23003,10 +23258,10 @@ class get_index_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype873, _size870) = iprot.readListBegin() - for _i874 in xrange(_size870): - _elem875 = iprot.readString() - self.success.append(_elem875) + (_etype887, _size884) = iprot.readListBegin() + for _i888 in xrange(_size884): + _elem889 = iprot.readString() + self.success.append(_elem889) iprot.readListEnd() else: iprot.skip(ftype) @@ -23029,8 +23284,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 iter876 in self.success: - oprot.writeString(iter876) + for iter890 in self.success: + oprot.writeString(iter890) oprot.writeListEnd() oprot.writeFieldEnd() if self.o2 is not None: @@ -25578,10 +25833,10 @@ class get_functions_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype880, _size877) = iprot.readListBegin() - for _i881 in xrange(_size877): - _elem882 = iprot.readString() - self.success.append(_elem882) + (_etype894, _size891) = iprot.readListBegin() + for _i895 in xrange(_size891): + _elem896 = iprot.readString() + self.success.append(_elem896) iprot.readListEnd() else: iprot.skip(ftype) @@ -25604,8 +25859,8 @@ class get_functions_result: if self.success is not None: oprot.writeFieldBegin('success', TType.LIST, 0) oprot.writeListBegin(TType.STRING, len(self.success)) - for iter883 in self.success: - oprot.writeString(iter883) + for iter897 in self.success: + oprot.writeString(iter897) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -26293,10 +26548,10 @@ class get_role_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype887, _size884) = iprot.readListBegin() - for _i888 in xrange(_size884): - _elem889 = iprot.readString() - self.success.append(_elem889) + (_etype901, _size898) = iprot.readListBegin() + for _i902 in xrange(_size898): + _elem903 = iprot.readString() + self.success.append(_elem903) iprot.readListEnd() else: iprot.skip(ftype) @@ -26319,8 +26574,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 iter890 in self.success: - oprot.writeString(iter890) + for iter904 in self.success: + oprot.writeString(iter904) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -26834,11 +27089,11 @@ class list_roles_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype894, _size891) = iprot.readListBegin() - for _i895 in xrange(_size891): - _elem896 = Role() - _elem896.read(iprot) - self.success.append(_elem896) + (_etype908, _size905) = iprot.readListBegin() + for _i909 in xrange(_size905): + _elem910 = Role() + _elem910.read(iprot) + self.success.append(_elem910) iprot.readListEnd() else: iprot.skip(ftype) @@ -26861,8 +27116,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 iter897 in self.success: - iter897.write(oprot) + for iter911 in self.success: + iter911.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -27371,10 +27626,10 @@ class get_privilege_set_args: elif fid == 3: if ftype == TType.LIST: self.group_names = [] - (_etype901, _size898) = iprot.readListBegin() - for _i902 in xrange(_size898): - _elem903 = iprot.readString() - self.group_names.append(_elem903) + (_etype915, _size912) = iprot.readListBegin() + for _i916 in xrange(_size912): + _elem917 = iprot.readString() + self.group_names.append(_elem917) iprot.readListEnd() else: iprot.skip(ftype) @@ -27399,8 +27654,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 iter904 in self.group_names: - oprot.writeString(iter904) + for iter918 in self.group_names: + oprot.writeString(iter918) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -27627,11 +27882,11 @@ class list_privileges_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype908, _size905) = iprot.readListBegin() - for _i909 in xrange(_size905): - _elem910 = HiveObjectPrivilege() - _elem910.read(iprot) - self.success.append(_elem910) + (_etype922, _size919) = iprot.readListBegin() + for _i923 in xrange(_size919): + _elem924 = HiveObjectPrivilege() + _elem924.read(iprot) + self.success.append(_elem924) iprot.readListEnd() else: iprot.skip(ftype) @@ -27654,8 +27909,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 iter911 in self.success: - iter911.write(oprot) + for iter925 in self.success: + iter925.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -28153,10 +28408,10 @@ class set_ugi_args: elif fid == 2: if ftype == TType.LIST: self.group_names = [] - (_etype915, _size912) = iprot.readListBegin() - for _i916 in xrange(_size912): - _elem917 = iprot.readString() - self.group_names.append(_elem917) + (_etype929, _size926) = iprot.readListBegin() + for _i930 in xrange(_size926): + _elem931 = iprot.readString() + self.group_names.append(_elem931) iprot.readListEnd() else: iprot.skip(ftype) @@ -28177,8 +28432,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 iter918 in self.group_names: - oprot.writeString(iter918) + for iter932 in self.group_names: + oprot.writeString(iter932) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -28233,10 +28488,10 @@ class set_ugi_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype922, _size919) = iprot.readListBegin() - for _i923 in xrange(_size919): - _elem924 = iprot.readString() - self.success.append(_elem924) + (_etype936, _size933) = iprot.readListBegin() + for _i937 in xrange(_size933): + _elem938 = iprot.readString() + self.success.append(_elem938) iprot.readListEnd() else: iprot.skip(ftype) @@ -28259,8 +28514,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 iter925 in self.success: - oprot.writeString(iter925) + for iter939 in self.success: + oprot.writeString(iter939) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None:
http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py ---------------------------------------------------------------------- diff --git a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py index 8940dff..ba525ed 100644 --- a/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py +++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py @@ -10554,6 +10554,116 @@ class GetAllFunctionsResponse: def __ne__(self, other): return not (self == other) +class TableMeta: + """ + Attributes: + - dbName + - tableName + - tableType + - comments + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRING, 'dbName', None, None, ), # 1 + (2, TType.STRING, 'tableName', None, None, ), # 2 + (3, TType.STRING, 'tableType', None, None, ), # 3 + (4, TType.STRING, 'comments', None, None, ), # 4 + ) + + def __init__(self, dbName=None, tableName=None, tableType=None, comments=None,): + self.dbName = dbName + self.tableName = tableName + self.tableType = tableType + self.comments = comments + + 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.STRING: + self.tableType = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.comments = iprot.readString() + 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('TableMeta') + 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.tableType is not None: + oprot.writeFieldBegin('tableType', TType.STRING, 3) + oprot.writeString(self.tableType) + oprot.writeFieldEnd() + if self.comments is not None: + oprot.writeFieldBegin('comments', TType.STRING, 4) + oprot.writeString(self.comments) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + if self.dbName is None: + raise TProtocol.TProtocolException(message='Required field dbName is unset!') + if self.tableName is None: + raise TProtocol.TProtocolException(message='Required field tableName is unset!') + if self.tableType is None: + raise TProtocol.TProtocolException(message='Required field tableType is unset!') + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.dbName) + value = (value * 31) ^ hash(self.tableName) + value = (value * 31) ^ hash(self.tableType) + value = (value * 31) ^ hash(self.comments) + 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 MetaException(TException): """ Attributes: http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb ---------------------------------------------------------------------- diff --git a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb index 08b9b06..f943f2d 100644 --- a/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb +++ b/metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb @@ -2422,6 +2422,31 @@ class GetAllFunctionsResponse ::Thrift::Struct.generate_accessors self end +class TableMeta + include ::Thrift::Struct, ::Thrift::Struct_Union + DBNAME = 1 + TABLENAME = 2 + TABLETYPE = 3 + COMMENTS = 4 + + FIELDS = { + DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'}, + TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'}, + TABLETYPE => {:type => ::Thrift::Types::STRING, :name => 'tableType'}, + COMMENTS => {:type => ::Thrift::Types::STRING, :name => 'comments', :optional => true} + } + + def struct_fields; FIELDS; end + + def validate + raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field dbName is unset!') unless @dbName + raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field tableName is unset!') unless @tableName + raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field tableType is unset!') unless @tableType + end + + ::Thrift::Struct.generate_accessors self +end + class MetaException < ::Thrift::Exception include ::Thrift::Struct, ::Thrift::Struct_Union def initialize(message=nil) http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb ---------------------------------------------------------------------- diff --git a/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb b/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb index c613e4b..5fe54b5 100644 --- a/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb +++ b/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb @@ -366,6 +366,22 @@ module ThriftHiveMetastore raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_tables failed: unknown result') end + def get_table_meta(db_patterns, tbl_patterns, tbl_types) + send_get_table_meta(db_patterns, tbl_patterns, tbl_types) + return recv_get_table_meta() + end + + def send_get_table_meta(db_patterns, tbl_patterns, tbl_types) + send_message('get_table_meta', Get_table_meta_args, :db_patterns => db_patterns, :tbl_patterns => tbl_patterns, :tbl_types => tbl_types) + end + + def recv_get_table_meta() + result = receive_message(Get_table_meta_result) + return result.success unless result.success.nil? + raise result.o1 unless result.o1.nil? + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_meta failed: unknown result') + end + def get_all_tables(db_name) send_get_all_tables(db_name) return recv_get_all_tables() @@ -2471,6 +2487,17 @@ module ThriftHiveMetastore write_result(result, oprot, 'get_tables', seqid) end + def process_get_table_meta(seqid, iprot, oprot) + args = read_args(iprot, Get_table_meta_args) + result = Get_table_meta_result.new() + begin + result.success = @handler.get_table_meta(args.db_patterns, args.tbl_patterns, args.tbl_types) + rescue ::MetaException => o1 + result.o1 = o1 + end + write_result(result, oprot, 'get_table_meta', seqid) + end + def process_get_all_tables(seqid, iprot, oprot) args = read_args(iprot, Get_all_tables_args) result = Get_all_tables_result.new() @@ -4613,6 +4640,44 @@ module ThriftHiveMetastore ::Thrift::Struct.generate_accessors self end + class Get_table_meta_args + include ::Thrift::Struct, ::Thrift::Struct_Union + DB_PATTERNS = 1 + TBL_PATTERNS = 2 + TBL_TYPES = 3 + + FIELDS = { + DB_PATTERNS => {:type => ::Thrift::Types::STRING, :name => 'db_patterns'}, + TBL_PATTERNS => {:type => ::Thrift::Types::STRING, :name => 'tbl_patterns'}, + TBL_TYPES => {:type => ::Thrift::Types::LIST, :name => 'tbl_types', :element => {:type => ::Thrift::Types::STRING}} + } + + def struct_fields; FIELDS; end + + def validate + end + + ::Thrift::Struct.generate_accessors self + end + + class Get_table_meta_result + include ::Thrift::Struct, ::Thrift::Struct_Union + SUCCESS = 0 + O1 = 1 + + FIELDS = { + SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::TableMeta}}, + O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException} + } + + def struct_fields; FIELDS; end + + def validate + end + + ::Thrift::Struct.generate_accessors self + end + class Get_all_tables_args include ::Thrift::Struct, ::Thrift::Struct_Union DB_NAME = 1 http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 2e9afaf..3c40d6e 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -110,7 +110,6 @@ import org.apache.thrift.transport.TTransportFactory; import javax.jdo.JDOException; import java.io.IOException; -import java.lang.reflect.Field; import java.nio.ByteBuffer; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -1710,6 +1709,23 @@ public class HiveMetaStore extends ThriftHiveMetastore { return t; } + @Override + public List<TableMeta> get_table_meta(String dbnames, String tblNames, List<String> tblTypes) + throws MetaException, NoSuchObjectException { + List<TableMeta> t = null; + startTableFunction("get_table_metas", dbnames, tblNames); + Exception ex = null; + try { + t = getMS().getTableMeta(dbnames, tblNames, tblTypes); + } catch (Exception e) { + ex = e; + throw newMetaException(e); + } finally { + endFunction("get_table_metas", t != null, ex); + } + return t; + } + /** * Equivalent of get_table, but does not log audits and fire pre-event listener. * Meant to be used for calls made by other hive classes, that are not using the @@ -5249,6 +5265,9 @@ public class HiveMetaStore extends ThriftHiveMetastore { } private static MetaException newMetaException(Exception e) { + if (e instanceof MetaException) { + return (MetaException)e; + } MetaException me = new MetaException(e.toString()); me.initCause(e); return me; http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index f86ec45..c5e7a5f 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -131,6 +131,7 @@ import org.apache.hadoop.hive.metastore.api.ShowCompactResponse; import org.apache.hadoop.hive.metastore.api.ShowLocksRequest; import org.apache.hadoop.hive.metastore.api.ShowLocksResponse; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.api.TableMeta; import org.apache.hadoop.hive.metastore.api.TableStatsRequest; import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore; import org.apache.hadoop.hive.metastore.api.TxnAbortedException; @@ -1314,6 +1315,37 @@ public class HiveMetaStoreClient implements IMetaStoreClient { return null; } + @Override + public List<TableMeta> getTableMeta(String dbPatterns, String tablePatterns, List<String> tableTypes) + throws MetaException { + try { + return filterNames(client.get_table_meta(dbPatterns, tablePatterns, tableTypes)); + } catch (Exception e) { + MetaStoreUtils.logAndThrowMetaException(e); + } + return null; + } + + private List<TableMeta> filterNames(List<TableMeta> metas) throws MetaException { + Map<String, TableMeta> sources = new LinkedHashMap<>(); + Map<String, List<String>> dbTables = new LinkedHashMap<>(); + for (TableMeta meta : metas) { + sources.put(meta.getDbName() + "." + meta.getTableName(), meta); + List<String> tables = dbTables.get(meta.getDbName()); + if (tables == null) { + dbTables.put(meta.getDbName(), tables = new ArrayList<String>()); + } + tables.add(meta.getTableName()); + } + List<TableMeta> filtered = new ArrayList<>(); + for (Map.Entry<String, List<String>> entry : dbTables.entrySet()) { + for (String table : filterHook.filterTableNames(entry.getKey(), entry.getValue())) { + filtered.add(sources.get(entry.getKey() + "." + table)); + } + } + return filtered; + } + /** {@inheritDoc} */ @Override public List<String> getAllTables(String dbname) throws MetaException { http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java index 9279cf5..aa96f77 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java @@ -70,6 +70,7 @@ import org.apache.hadoop.hive.metastore.api.SetPartitionsStatsRequest; import org.apache.hadoop.hive.metastore.api.ShowCompactResponse; import org.apache.hadoop.hive.metastore.api.ShowLocksResponse; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.api.TableMeta; import org.apache.hadoop.hive.metastore.api.TxnAbortedException; import org.apache.hadoop.hive.metastore.api.TxnOpenException; import org.apache.hadoop.hive.metastore.api.UnknownDBException; @@ -161,6 +162,12 @@ public interface IMetaStoreClient { throws MetaException, TException, UnknownDBException; /** + * For quick GetTablesOperation + */ + List<TableMeta> getTableMeta(String dbPatterns, String tablePatterns, List<String> tableTypes) + throws MetaException, TException, UnknownDBException; + + /** * Get the names of all tables in the specified database. * @param dbName * @return List of table names. http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 9f2f5f4..803c6e7 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -55,8 +55,6 @@ import javax.jdo.datastore.DataStoreCache; import javax.jdo.identity.IntIdentity; import com.google.common.annotations.VisibleForTesting; -import org.antlr.runtime.CommonTokenStream; -import org.antlr.runtime.RecognitionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.conf.Configurable; @@ -109,6 +107,7 @@ 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.TableMeta; import org.apache.hadoop.hive.metastore.api.Type; import org.apache.hadoop.hive.metastore.api.UnknownDBException; import org.apache.hadoop.hive.metastore.api.UnknownPartitionException; @@ -143,12 +142,7 @@ import org.apache.hadoop.hive.metastore.model.MTablePrivilege; import org.apache.hadoop.hive.metastore.model.MType; import org.apache.hadoop.hive.metastore.model.MVersionTable; import org.apache.hadoop.hive.metastore.parser.ExpressionTree; -import org.apache.hadoop.hive.metastore.parser.ExpressionTree.ANTLRNoCaseStringStream; import org.apache.hadoop.hive.metastore.parser.ExpressionTree.FilterBuilder; -import org.apache.hadoop.hive.metastore.parser.ExpressionTree.LeafNode; -import org.apache.hadoop.hive.metastore.parser.ExpressionTree.Operator; -import org.apache.hadoop.hive.metastore.parser.FilterLexer; -import org.apache.hadoop.hive.metastore.parser.FilterParser; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.hive.shims.ShimLoader; @@ -729,6 +723,9 @@ public class ObjectStore implements RawStore, Configurable { @Override public List<String> getDatabases(String pattern) throws MetaException { + if (pattern == null || pattern.equals("*")) { + return getAllDatabases(); + } boolean commited = false; List<String> databases = null; Query query = null; @@ -770,7 +767,28 @@ public class ObjectStore implements RawStore, Configurable { @Override public List<String> getAllDatabases() throws MetaException { - return getDatabases(".*"); + boolean commited = false; + List<String> databases = null; + + String queryStr = "select name from org.apache.hadoop.hive.metastore.model.MDatabase"; + Query query = null; + + openTransaction(); + try { + query = pm.newQuery(queryStr); + query.setResult("name"); + databases = new ArrayList<String>((Collection<String>) query.execute()); + commited = commitTransaction(); + } finally { + if (!commited) { + rollbackTransaction(); + } + if (query != null) { + query.closeAll(); + } + } + Collections.sort(databases); + return databases; } private MType getMType(Type type) { @@ -1050,6 +1068,84 @@ public class ObjectStore implements RawStore, Configurable { } @Override + public List<TableMeta> getTableMeta(String dbNames, String tableNames, List<String> tableTypes) + throws MetaException { + + boolean commited = false; + Query query = null; + List<TableMeta> metas = new ArrayList<TableMeta>(); + try { + openTransaction(); + // Take the pattern and split it on the | to get all the composing + // patterns + StringBuilder builder = new StringBuilder(); + if (dbNames != null && !dbNames.equals("*")) { + appendPatternCondition(builder, "database.name", dbNames); + } + if (tableNames != null && !tableNames.equals("*")) { + appendPatternCondition(builder, "tableName", tableNames); + } + if (tableTypes != null && !tableTypes.isEmpty()) { + appendSimpleCondition(builder, "tableType", tableTypes.toArray(new String[0])); + } + + query = pm.newQuery(MTable.class, builder.toString()); + Collection<MTable> tables = (Collection<MTable>) query.execute(); + for (MTable table : tables) { + TableMeta metaData = new TableMeta( + table.getDatabase().getName(), table.getTableName(), table.getTableType()); + metaData.setComments(table.getParameters().get("comment")); + metas.add(metaData); + } + commited = commitTransaction(); + } finally { + if (!commited) { + rollbackTransaction(); + } + if (query != null) { + query.closeAll(); + } + } + return metas; + } + + private StringBuilder appendPatternCondition(StringBuilder builder, + String fieldName, String elements) { + elements = HiveStringUtils.normalizeIdentifier(elements); + return appendCondition(builder, fieldName, elements.split("\\|"), true); + } + + private StringBuilder appendSimpleCondition(StringBuilder builder, + String fieldName, String[] elements) { + return appendCondition(builder, fieldName, elements, false); + } + + private StringBuilder appendCondition(StringBuilder builder, + String fieldName, String[] elements, boolean pattern) { + if (builder.length() > 0) { + builder.append(" && "); + } + builder.append(" ("); + int length = builder.length(); + for (String element : elements) { + if (pattern) { + element = "(?i)" + element.replaceAll("\\*", ".*"); + } + if (builder.length() > length) { + builder.append(" || "); + } + builder.append(fieldName); + if (pattern) { + builder.append(".matches(\"").append(element).append("\")"); + } else { + builder.append(" == \"").append(element).append("\""); + } + } + builder.append(" )"); + return builder; + } + + @Override public List<String> getAllTables(String dbName) throws MetaException { return getTables(dbName, ".*"); } http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java index 4aa17a5..5b36b03 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/RawStore.java @@ -51,6 +51,7 @@ import org.apache.hadoop.hive.metastore.api.PrivilegeBag; import org.apache.hadoop.hive.metastore.api.Role; import org.apache.hadoop.hive.metastore.api.RolePrincipalGrant; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.api.TableMeta; import org.apache.hadoop.hive.metastore.api.Type; import org.apache.hadoop.hive.metastore.api.UnknownDBException; import org.apache.hadoop.hive.metastore.api.UnknownPartitionException; @@ -151,6 +152,9 @@ public interface RawStore extends Configurable { public List<String> getTables(String dbName, String pattern) throws MetaException; + public List<TableMeta> getTableMeta( + String dbNames, String tableNames, List<String> tableTypes) throws MetaException; + /** * @param dbname * The name of the database from which to retrieve the tables http://git-wip-us.apache.org/repos/asf/hive/blob/b678ed85/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java ---------------------------------------------------------------------- diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java index 5cc7c30..98e6c75 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/hbase/HBaseStore.java @@ -62,6 +62,7 @@ import org.apache.hadoop.hive.metastore.api.PrivilegeGrantInfo; import org.apache.hadoop.hive.metastore.api.Role; import org.apache.hadoop.hive.metastore.api.RolePrincipalGrant; import org.apache.hadoop.hive.metastore.api.Table; +import org.apache.hadoop.hive.metastore.api.TableMeta; import org.apache.hadoop.hive.metastore.api.Type; import org.apache.hadoop.hive.metastore.api.UnknownDBException; import org.apache.hadoop.hive.metastore.api.UnknownPartitionException; @@ -71,7 +72,6 @@ import org.apache.hadoop.hive.metastore.hbase.HBaseFilterPlanUtil.PlanResult; import org.apache.hadoop.hive.metastore.hbase.HBaseFilterPlanUtil.ScanPlan; import org.apache.hadoop.hive.metastore.parser.ExpressionTree; import org.apache.hadoop.hive.metastore.partition.spec.PartitionSpecProxy; -import org.apache.hadoop.hive.ql.io.sarg.SearchArgument; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hive.common.util.HiveStringUtils; @@ -487,10 +487,7 @@ public class HBaseStore implements RawStore { boolean commit = false; openTransaction(); try { - List<Table> tables = getHBase().scanTables(HiveStringUtils.normalizeIdentifier(dbName), - pattern==null?null:HiveStringUtils.normalizeIdentifier(likeToRegex(pattern))); - List<String> tableNames = new ArrayList<String>(tables.size()); - for (Table table : tables) tableNames.add(table.getTableName()); + List<String> tableNames = getTableNamesInTx(dbName, pattern); commit = true; return tableNames; } catch (IOException e) { @@ -501,6 +498,41 @@ public class HBaseStore implements RawStore { } } + private List<String> getTableNamesInTx(String dbName, String pattern) throws IOException { + List<Table> tables = getHBase().scanTables(HiveStringUtils.normalizeIdentifier(dbName), + pattern==null?null:HiveStringUtils.normalizeIdentifier(likeToRegex(pattern))); + List<String> tableNames = new ArrayList<String>(tables.size()); + for (Table table : tables) tableNames.add(table.getTableName()); + return tableNames; + } + + @Override + public List<TableMeta> getTableMeta(String dbNames, String tableNames, List<String> tableTypes) + throws MetaException { + boolean commit = false; + openTransaction(); + try { + List<TableMeta> metas = new ArrayList<>(); + for (String dbName : getDatabases(dbNames)) { + for (Table table : getTableObjectsByName(dbName, getTableNamesInTx(dbName, tableNames))) { + if (tableTypes == null || tableTypes.contains(table.getTableType())) { + TableMeta metaData = new TableMeta( + table.getDbName(), table.getTableName(), table.getTableType()); + metaData.setComments(table.getParameters().get("comment")); + metas.add(metaData); + } + } + } + commit = true; + return metas; + } catch (Exception e) { + LOG.error("Unable to get tables ", e); + throw new MetaException("Unable to get tables, " + e.getMessage()); + } finally { + commitOrRoleBack(commit); + } + } + @Override public List<Table> getTableObjectsByName(String dbname, List<String> tableNames) throws MetaException, UnknownDBException { @@ -1660,7 +1692,7 @@ public class HBaseStore implements RawStore { openTransaction(); try { List<ColumnStatistics> cs = - getHBase().getPartitionStatistics(dbName, tblName, partNames, partVals, colNames); + getHBase().getPartitionStatistics(dbName, tblName, partNames, partVals, colNames); commit = true; return cs; } catch (IOException e) {
