Repository: hive Updated Branches: refs/heads/master-fixed [created] e8076ef41
http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/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 59c7b94..9873810 100644 --- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py +++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py @@ -387,6 +387,17 @@ class Iface(fb303.FacebookService.Iface): """ pass + def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): + """ + Parameters: + - partitionSpecs + - source_db + - source_table_name + - dest_db + - dest_table_name + """ + pass + def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group_names): """ Parameters: @@ -2728,6 +2739,53 @@ class Client(fb303.FacebookService.Client, Iface): raise result.o4 raise TApplicationException(TApplicationException.MISSING_RESULT, "exchange_partition failed: unknown result") + def exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): + """ + Parameters: + - partitionSpecs + - source_db + - source_table_name + - dest_db + - dest_table_name + """ + self.send_exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name) + return self.recv_exchange_partitions() + + def send_exchange_partitions(self, partitionSpecs, source_db, source_table_name, dest_db, dest_table_name): + self._oprot.writeMessageBegin('exchange_partitions', TMessageType.CALL, self._seqid) + args = exchange_partitions_args() + args.partitionSpecs = partitionSpecs + args.source_db = source_db + args.source_table_name = source_table_name + args.dest_db = dest_db + args.dest_table_name = dest_table_name + args.write(self._oprot) + self._oprot.writeMessageEnd() + self._oprot.trans.flush() + + def recv_exchange_partitions(self): + iprot = self._iprot + (fname, mtype, rseqid) = iprot.readMessageBegin() + if mtype == TMessageType.EXCEPTION: + x = TApplicationException() + x.read(iprot) + iprot.readMessageEnd() + raise x + result = exchange_partitions_result() + result.read(iprot) + iprot.readMessageEnd() + if result.success is not None: + return result.success + if result.o1 is not None: + raise result.o1 + if result.o2 is not None: + raise result.o2 + if result.o3 is not None: + raise result.o3 + if result.o4 is not None: + raise result.o4 + raise TApplicationException(TApplicationException.MISSING_RESULT, "exchange_partitions failed: unknown result") + def get_partition_with_auth(self, db_name, tbl_name, part_vals, user_name, group_names): """ Parameters: @@ -5817,6 +5875,7 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor): self._processMap["drop_partitions_req"] = Processor.process_drop_partitions_req self._processMap["get_partition"] = Processor.process_get_partition self._processMap["exchange_partition"] = Processor.process_exchange_partition + self._processMap["exchange_partitions"] = Processor.process_exchange_partitions self._processMap["get_partition_with_auth"] = Processor.process_get_partition_with_auth self._processMap["get_partition_by_name"] = Processor.process_get_partition_by_name self._processMap["get_partitions"] = Processor.process_get_partitions @@ -7069,6 +7128,37 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor): oprot.writeMessageEnd() oprot.trans.flush() + def process_exchange_partitions(self, seqid, iprot, oprot): + args = exchange_partitions_args() + args.read(iprot) + iprot.readMessageEnd() + result = exchange_partitions_result() + try: + result.success = self._handler.exchange_partitions(args.partitionSpecs, args.source_db, args.source_table_name, args.dest_db, args.dest_table_name) + msg_type = TMessageType.REPLY + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit): + raise + except MetaException as o1: + msg_type = TMessageType.REPLY + result.o1 = o1 + except NoSuchObjectException as o2: + msg_type = TMessageType.REPLY + result.o2 = o2 + except InvalidObjectException as o3: + msg_type = TMessageType.REPLY + result.o3 = o3 + except InvalidInputException as o4: + msg_type = TMessageType.REPLY + result.o4 = o4 + except Exception as ex: + msg_type = TMessageType.EXCEPTION + logging.exception(ex) + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error') + oprot.writeMessageBegin("exchange_partitions", msg_type, seqid) + result.write(oprot) + oprot.writeMessageEnd() + oprot.trans.flush() + def process_get_partition_with_auth(self, seqid, iprot, oprot): args = get_partition_with_auth_args() args.read(iprot) @@ -17089,6 +17179,262 @@ class exchange_partition_result: def __ne__(self, other): return not (self == other) +class exchange_partitions_args: + """ + Attributes: + - partitionSpecs + - source_db + - source_table_name + - dest_db + - dest_table_name + """ + + thrift_spec = ( + None, # 0 + (1, TType.MAP, 'partitionSpecs', (TType.STRING,None,TType.STRING,None), None, ), # 1 + (2, TType.STRING, 'source_db', None, None, ), # 2 + (3, TType.STRING, 'source_table_name', None, None, ), # 3 + (4, TType.STRING, 'dest_db', None, None, ), # 4 + (5, TType.STRING, 'dest_table_name', None, None, ), # 5 + ) + + def __init__(self, partitionSpecs=None, source_db=None, source_table_name=None, dest_db=None, dest_table_name=None,): + self.partitionSpecs = partitionSpecs + self.source_db = source_db + self.source_table_name = source_table_name + self.dest_db = dest_db + self.dest_table_name = dest_table_name + + 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.MAP: + self.partitionSpecs = {} + (_ktype667, _vtype668, _size666 ) = iprot.readMapBegin() + for _i670 in xrange(_size666): + _key671 = iprot.readString() + _val672 = iprot.readString() + self.partitionSpecs[_key671] = _val672 + iprot.readMapEnd() + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.source_db = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRING: + self.source_table_name = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRING: + self.dest_db = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRING: + self.dest_table_name = 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('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) + oprot.writeMapEnd() + oprot.writeFieldEnd() + if self.source_db is not None: + oprot.writeFieldBegin('source_db', TType.STRING, 2) + oprot.writeString(self.source_db) + oprot.writeFieldEnd() + if self.source_table_name is not None: + oprot.writeFieldBegin('source_table_name', TType.STRING, 3) + oprot.writeString(self.source_table_name) + oprot.writeFieldEnd() + if self.dest_db is not None: + oprot.writeFieldBegin('dest_db', TType.STRING, 4) + oprot.writeString(self.dest_db) + oprot.writeFieldEnd() + if self.dest_table_name is not None: + oprot.writeFieldBegin('dest_table_name', TType.STRING, 5) + oprot.writeString(self.dest_table_name) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.partitionSpecs) + value = (value * 31) ^ hash(self.source_db) + value = (value * 31) ^ hash(self.source_table_name) + value = (value * 31) ^ hash(self.dest_db) + value = (value * 31) ^ hash(self.dest_table_name) + 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 exchange_partitions_result: + """ + Attributes: + - success + - o1 + - o2 + - o3 + - o4 + """ + + thrift_spec = ( + (0, TType.LIST, 'success', (TType.STRUCT,(Partition, Partition.thrift_spec)), None, ), # 0 + (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1 + (2, TType.STRUCT, 'o2', (NoSuchObjectException, NoSuchObjectException.thrift_spec), None, ), # 2 + (3, TType.STRUCT, 'o3', (InvalidObjectException, InvalidObjectException.thrift_spec), None, ), # 3 + (4, TType.STRUCT, 'o4', (InvalidInputException, InvalidInputException.thrift_spec), None, ), # 4 + ) + + def __init__(self, success=None, o1=None, o2=None, o3=None, o4=None,): + self.success = success + self.o1 = o1 + self.o2 = o2 + self.o3 = o3 + self.o4 = o4 + + 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 = [] + (_etype678, _size675) = iprot.readListBegin() + for _i679 in xrange(_size675): + _elem680 = Partition() + _elem680.read(iprot) + self.success.append(_elem680) + iprot.readListEnd() + else: + iprot.skip(ftype) + elif fid == 1: + if ftype == TType.STRUCT: + self.o1 = MetaException() + self.o1.read(iprot) + else: + iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRUCT: + self.o2 = NoSuchObjectException() + self.o2.read(iprot) + else: + iprot.skip(ftype) + elif fid == 3: + if ftype == TType.STRUCT: + self.o3 = InvalidObjectException() + self.o3.read(iprot) + else: + iprot.skip(ftype) + elif fid == 4: + if ftype == TType.STRUCT: + self.o4 = InvalidInputException() + self.o4.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('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) + oprot.writeListEnd() + oprot.writeFieldEnd() + if self.o1 is not None: + oprot.writeFieldBegin('o1', TType.STRUCT, 1) + self.o1.write(oprot) + oprot.writeFieldEnd() + if self.o2 is not None: + oprot.writeFieldBegin('o2', TType.STRUCT, 2) + self.o2.write(oprot) + oprot.writeFieldEnd() + if self.o3 is not None: + oprot.writeFieldBegin('o3', TType.STRUCT, 3) + self.o3.write(oprot) + oprot.writeFieldEnd() + if self.o4 is not None: + oprot.writeFieldBegin('o4', TType.STRUCT, 4) + self.o4.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) + value = (value * 31) ^ hash(self.o2) + value = (value * 31) ^ hash(self.o3) + value = (value * 31) ^ hash(self.o4) + 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_partition_with_auth_args: """ Attributes: @@ -17137,10 +17483,10 @@ class get_partition_with_auth_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype669, _size666) = iprot.readListBegin() - for _i670 in xrange(_size666): - _elem671 = iprot.readString() - self.part_vals.append(_elem671) + (_etype685, _size682) = iprot.readListBegin() + for _i686 in xrange(_size682): + _elem687 = iprot.readString() + self.part_vals.append(_elem687) iprot.readListEnd() else: iprot.skip(ftype) @@ -17152,10 +17498,10 @@ class get_partition_with_auth_args: elif fid == 5: if ftype == TType.LIST: self.group_names = [] - (_etype675, _size672) = iprot.readListBegin() - for _i676 in xrange(_size672): - _elem677 = iprot.readString() - self.group_names.append(_elem677) + (_etype691, _size688) = iprot.readListBegin() + for _i692 in xrange(_size688): + _elem693 = iprot.readString() + self.group_names.append(_elem693) iprot.readListEnd() else: iprot.skip(ftype) @@ -17180,8 +17526,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 iter678 in self.part_vals: - oprot.writeString(iter678) + for iter694 in self.part_vals: + oprot.writeString(iter694) oprot.writeListEnd() oprot.writeFieldEnd() if self.user_name is not None: @@ -17191,8 +17537,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 iter679 in self.group_names: - oprot.writeString(iter679) + for iter695 in self.group_names: + oprot.writeString(iter695) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17621,11 +17967,11 @@ class get_partitions_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype683, _size680) = iprot.readListBegin() - for _i684 in xrange(_size680): - _elem685 = Partition() - _elem685.read(iprot) - self.success.append(_elem685) + (_etype699, _size696) = iprot.readListBegin() + for _i700 in xrange(_size696): + _elem701 = Partition() + _elem701.read(iprot) + self.success.append(_elem701) iprot.readListEnd() else: iprot.skip(ftype) @@ -17654,8 +18000,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 iter686 in self.success: - iter686.write(oprot) + for iter702 in self.success: + iter702.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -17749,10 +18095,10 @@ class get_partitions_with_auth_args: elif fid == 5: if ftype == TType.LIST: self.group_names = [] - (_etype690, _size687) = iprot.readListBegin() - for _i691 in xrange(_size687): - _elem692 = iprot.readString() - self.group_names.append(_elem692) + (_etype706, _size703) = iprot.readListBegin() + for _i707 in xrange(_size703): + _elem708 = iprot.readString() + self.group_names.append(_elem708) iprot.readListEnd() else: iprot.skip(ftype) @@ -17785,8 +18131,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 iter693 in self.group_names: - oprot.writeString(iter693) + for iter709 in self.group_names: + oprot.writeString(iter709) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -17847,11 +18193,11 @@ class get_partitions_with_auth_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype697, _size694) = iprot.readListBegin() - for _i698 in xrange(_size694): - _elem699 = Partition() - _elem699.read(iprot) - self.success.append(_elem699) + (_etype713, _size710) = iprot.readListBegin() + for _i714 in xrange(_size710): + _elem715 = Partition() + _elem715.read(iprot) + self.success.append(_elem715) iprot.readListEnd() else: iprot.skip(ftype) @@ -17880,8 +18226,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 iter700 in self.success: - iter700.write(oprot) + for iter716 in self.success: + iter716.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18039,11 +18385,11 @@ class get_partitions_pspec_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype704, _size701) = iprot.readListBegin() - for _i705 in xrange(_size701): - _elem706 = PartitionSpec() - _elem706.read(iprot) - self.success.append(_elem706) + (_etype720, _size717) = iprot.readListBegin() + for _i721 in xrange(_size717): + _elem722 = PartitionSpec() + _elem722.read(iprot) + self.success.append(_elem722) iprot.readListEnd() else: iprot.skip(ftype) @@ -18072,8 +18418,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 iter707 in self.success: - iter707.write(oprot) + for iter723 in self.success: + iter723.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18228,10 +18574,10 @@ class get_partition_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype711, _size708) = iprot.readListBegin() - for _i712 in xrange(_size708): - _elem713 = iprot.readString() - self.success.append(_elem713) + (_etype727, _size724) = iprot.readListBegin() + for _i728 in xrange(_size724): + _elem729 = iprot.readString() + self.success.append(_elem729) iprot.readListEnd() else: iprot.skip(ftype) @@ -18254,8 +18600,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 iter714 in self.success: - oprot.writeString(iter714) + for iter730 in self.success: + oprot.writeString(iter730) oprot.writeListEnd() oprot.writeFieldEnd() if self.o2 is not None: @@ -18331,10 +18677,10 @@ class get_partitions_ps_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype718, _size715) = iprot.readListBegin() - for _i719 in xrange(_size715): - _elem720 = iprot.readString() - self.part_vals.append(_elem720) + (_etype734, _size731) = iprot.readListBegin() + for _i735 in xrange(_size731): + _elem736 = iprot.readString() + self.part_vals.append(_elem736) iprot.readListEnd() else: iprot.skip(ftype) @@ -18364,8 +18710,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 iter721 in self.part_vals: - oprot.writeString(iter721) + for iter737 in self.part_vals: + oprot.writeString(iter737) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -18429,11 +18775,11 @@ class get_partitions_ps_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype725, _size722) = iprot.readListBegin() - for _i726 in xrange(_size722): - _elem727 = Partition() - _elem727.read(iprot) - self.success.append(_elem727) + (_etype741, _size738) = iprot.readListBegin() + for _i742 in xrange(_size738): + _elem743 = Partition() + _elem743.read(iprot) + self.success.append(_elem743) iprot.readListEnd() else: iprot.skip(ftype) @@ -18462,8 +18808,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 iter728 in self.success: - iter728.write(oprot) + for iter744 in self.success: + iter744.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18550,10 +18896,10 @@ class get_partitions_ps_with_auth_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype732, _size729) = iprot.readListBegin() - for _i733 in xrange(_size729): - _elem734 = iprot.readString() - self.part_vals.append(_elem734) + (_etype748, _size745) = iprot.readListBegin() + for _i749 in xrange(_size745): + _elem750 = iprot.readString() + self.part_vals.append(_elem750) iprot.readListEnd() else: iprot.skip(ftype) @@ -18570,10 +18916,10 @@ class get_partitions_ps_with_auth_args: elif fid == 6: if ftype == TType.LIST: self.group_names = [] - (_etype738, _size735) = iprot.readListBegin() - for _i739 in xrange(_size735): - _elem740 = iprot.readString() - self.group_names.append(_elem740) + (_etype754, _size751) = iprot.readListBegin() + for _i755 in xrange(_size751): + _elem756 = iprot.readString() + self.group_names.append(_elem756) iprot.readListEnd() else: iprot.skip(ftype) @@ -18598,8 +18944,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 iter741 in self.part_vals: - oprot.writeString(iter741) + for iter757 in self.part_vals: + oprot.writeString(iter757) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -18613,8 +18959,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 iter742 in self.group_names: - oprot.writeString(iter742) + for iter758 in self.group_names: + oprot.writeString(iter758) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18676,11 +19022,11 @@ class get_partitions_ps_with_auth_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype746, _size743) = iprot.readListBegin() - for _i747 in xrange(_size743): - _elem748 = Partition() - _elem748.read(iprot) - self.success.append(_elem748) + (_etype762, _size759) = iprot.readListBegin() + for _i763 in xrange(_size759): + _elem764 = Partition() + _elem764.read(iprot) + self.success.append(_elem764) iprot.readListEnd() else: iprot.skip(ftype) @@ -18709,8 +19055,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 iter749 in self.success: - iter749.write(oprot) + for iter765 in self.success: + iter765.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -18791,10 +19137,10 @@ class get_partition_names_ps_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) + (_etype769, _size766) = iprot.readListBegin() + for _i770 in xrange(_size766): + _elem771 = iprot.readString() + self.part_vals.append(_elem771) iprot.readListEnd() else: iprot.skip(ftype) @@ -18824,8 +19170,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 iter756 in self.part_vals: - oprot.writeString(iter756) + for iter772 in self.part_vals: + oprot.writeString(iter772) oprot.writeListEnd() oprot.writeFieldEnd() if self.max_parts is not None: @@ -18889,10 +19235,10 @@ class get_partition_names_ps_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype760, _size757) = iprot.readListBegin() - for _i761 in xrange(_size757): - _elem762 = iprot.readString() - self.success.append(_elem762) + (_etype776, _size773) = iprot.readListBegin() + for _i777 in xrange(_size773): + _elem778 = iprot.readString() + self.success.append(_elem778) iprot.readListEnd() else: iprot.skip(ftype) @@ -18921,8 +19267,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 iter763 in self.success: - oprot.writeString(iter763) + for iter779 in self.success: + oprot.writeString(iter779) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19093,11 +19439,11 @@ class get_partitions_by_filter_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype767, _size764) = iprot.readListBegin() - for _i768 in xrange(_size764): - _elem769 = Partition() - _elem769.read(iprot) - self.success.append(_elem769) + (_etype783, _size780) = iprot.readListBegin() + for _i784 in xrange(_size780): + _elem785 = Partition() + _elem785.read(iprot) + self.success.append(_elem785) iprot.readListEnd() else: iprot.skip(ftype) @@ -19126,8 +19472,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 iter770 in self.success: - iter770.write(oprot) + for iter786 in self.success: + iter786.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19298,11 +19644,11 @@ class get_part_specs_by_filter_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype774, _size771) = iprot.readListBegin() - for _i775 in xrange(_size771): - _elem776 = PartitionSpec() - _elem776.read(iprot) - self.success.append(_elem776) + (_etype790, _size787) = iprot.readListBegin() + for _i791 in xrange(_size787): + _elem792 = PartitionSpec() + _elem792.read(iprot) + self.success.append(_elem792) iprot.readListEnd() else: iprot.skip(ftype) @@ -19331,8 +19677,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 iter777 in self.success: - iter777.write(oprot) + for iter793 in self.success: + iter793.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19569,10 +19915,10 @@ class get_partitions_by_names_args: elif fid == 3: if ftype == TType.LIST: self.names = [] - (_etype781, _size778) = iprot.readListBegin() - for _i782 in xrange(_size778): - _elem783 = iprot.readString() - self.names.append(_elem783) + (_etype797, _size794) = iprot.readListBegin() + for _i798 in xrange(_size794): + _elem799 = iprot.readString() + self.names.append(_elem799) iprot.readListEnd() else: iprot.skip(ftype) @@ -19597,8 +19943,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 iter784 in self.names: - oprot.writeString(iter784) + for iter800 in self.names: + oprot.writeString(iter800) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -19657,11 +20003,11 @@ class get_partitions_by_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype788, _size785) = iprot.readListBegin() - for _i789 in xrange(_size785): - _elem790 = Partition() - _elem790.read(iprot) - self.success.append(_elem790) + (_etype804, _size801) = iprot.readListBegin() + for _i805 in xrange(_size801): + _elem806 = Partition() + _elem806.read(iprot) + self.success.append(_elem806) iprot.readListEnd() else: iprot.skip(ftype) @@ -19690,8 +20036,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 iter791 in self.success: - iter791.write(oprot) + for iter807 in self.success: + iter807.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -19941,11 +20287,11 @@ class alter_partitions_args: elif fid == 3: if ftype == TType.LIST: self.new_parts = [] - (_etype795, _size792) = iprot.readListBegin() - for _i796 in xrange(_size792): - _elem797 = Partition() - _elem797.read(iprot) - self.new_parts.append(_elem797) + (_etype811, _size808) = iprot.readListBegin() + for _i812 in xrange(_size808): + _elem813 = Partition() + _elem813.read(iprot) + self.new_parts.append(_elem813) iprot.readListEnd() else: iprot.skip(ftype) @@ -19970,8 +20316,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 iter798 in self.new_parts: - iter798.write(oprot) + for iter814 in self.new_parts: + iter814.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -20310,10 +20656,10 @@ class rename_partition_args: elif fid == 3: if ftype == TType.LIST: self.part_vals = [] - (_etype802, _size799) = iprot.readListBegin() - for _i803 in xrange(_size799): - _elem804 = iprot.readString() - self.part_vals.append(_elem804) + (_etype818, _size815) = iprot.readListBegin() + for _i819 in xrange(_size815): + _elem820 = iprot.readString() + self.part_vals.append(_elem820) iprot.readListEnd() else: iprot.skip(ftype) @@ -20344,8 +20690,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 iter805 in self.part_vals: - oprot.writeString(iter805) + for iter821 in self.part_vals: + oprot.writeString(iter821) oprot.writeListEnd() oprot.writeFieldEnd() if self.new_part is not None: @@ -20487,10 +20833,10 @@ class partition_name_has_valid_characters_args: if fid == 1: if ftype == TType.LIST: self.part_vals = [] - (_etype809, _size806) = iprot.readListBegin() - for _i810 in xrange(_size806): - _elem811 = iprot.readString() - self.part_vals.append(_elem811) + (_etype825, _size822) = iprot.readListBegin() + for _i826 in xrange(_size822): + _elem827 = iprot.readString() + self.part_vals.append(_elem827) iprot.readListEnd() else: iprot.skip(ftype) @@ -20512,8 +20858,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 iter812 in self.part_vals: - oprot.writeString(iter812) + for iter828 in self.part_vals: + oprot.writeString(iter828) oprot.writeListEnd() oprot.writeFieldEnd() if self.throw_exception is not None: @@ -20871,10 +21217,10 @@ class partition_name_to_vals_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype816, _size813) = iprot.readListBegin() - for _i817 in xrange(_size813): - _elem818 = iprot.readString() - self.success.append(_elem818) + (_etype832, _size829) = iprot.readListBegin() + for _i833 in xrange(_size829): + _elem834 = iprot.readString() + self.success.append(_elem834) iprot.readListEnd() else: iprot.skip(ftype) @@ -20897,8 +21243,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 iter819 in self.success: - oprot.writeString(iter819) + for iter835 in self.success: + oprot.writeString(iter835) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -21022,11 +21368,11 @@ class partition_name_to_spec_result: if fid == 0: if ftype == TType.MAP: self.success = {} - (_ktype821, _vtype822, _size820 ) = iprot.readMapBegin() - for _i824 in xrange(_size820): - _key825 = iprot.readString() - _val826 = iprot.readString() - self.success[_key825] = _val826 + (_ktype837, _vtype838, _size836 ) = iprot.readMapBegin() + for _i840 in xrange(_size836): + _key841 = iprot.readString() + _val842 = iprot.readString() + self.success[_key841] = _val842 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21049,9 +21395,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 kiter827,viter828 in self.success.items(): - oprot.writeString(kiter827) - oprot.writeString(viter828) + for kiter843,viter844 in self.success.items(): + oprot.writeString(kiter843) + oprot.writeString(viter844) oprot.writeMapEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -21127,11 +21473,11 @@ class markPartitionForEvent_args: elif fid == 3: if ftype == TType.MAP: self.part_vals = {} - (_ktype830, _vtype831, _size829 ) = iprot.readMapBegin() - for _i833 in xrange(_size829): - _key834 = iprot.readString() - _val835 = iprot.readString() - self.part_vals[_key834] = _val835 + (_ktype846, _vtype847, _size845 ) = iprot.readMapBegin() + for _i849 in xrange(_size845): + _key850 = iprot.readString() + _val851 = iprot.readString() + self.part_vals[_key850] = _val851 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21161,9 +21507,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 kiter836,viter837 in self.part_vals.items(): - oprot.writeString(kiter836) - oprot.writeString(viter837) + for kiter852,viter853 in self.part_vals.items(): + oprot.writeString(kiter852) + oprot.writeString(viter853) oprot.writeMapEnd() oprot.writeFieldEnd() if self.eventType is not None: @@ -21377,11 +21723,11 @@ class isPartitionMarkedForEvent_args: elif fid == 3: if ftype == TType.MAP: self.part_vals = {} - (_ktype839, _vtype840, _size838 ) = iprot.readMapBegin() - for _i842 in xrange(_size838): - _key843 = iprot.readString() - _val844 = iprot.readString() - self.part_vals[_key843] = _val844 + (_ktype855, _vtype856, _size854 ) = iprot.readMapBegin() + for _i858 in xrange(_size854): + _key859 = iprot.readString() + _val860 = iprot.readString() + self.part_vals[_key859] = _val860 iprot.readMapEnd() else: iprot.skip(ftype) @@ -21411,9 +21757,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 kiter845,viter846 in self.part_vals.items(): - oprot.writeString(kiter845) - oprot.writeString(viter846) + for kiter861,viter862 in self.part_vals.items(): + oprot.writeString(kiter861) + oprot.writeString(viter862) oprot.writeMapEnd() oprot.writeFieldEnd() if self.eventType is not None: @@ -22468,11 +22814,11 @@ class get_indexes_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype850, _size847) = iprot.readListBegin() - for _i851 in xrange(_size847): - _elem852 = Index() - _elem852.read(iprot) - self.success.append(_elem852) + (_etype866, _size863) = iprot.readListBegin() + for _i867 in xrange(_size863): + _elem868 = Index() + _elem868.read(iprot) + self.success.append(_elem868) iprot.readListEnd() else: iprot.skip(ftype) @@ -22501,8 +22847,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 iter853 in self.success: - iter853.write(oprot) + for iter869 in self.success: + iter869.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -22657,10 +23003,10 @@ class get_index_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype857, _size854) = iprot.readListBegin() - for _i858 in xrange(_size854): - _elem859 = iprot.readString() - self.success.append(_elem859) + (_etype873, _size870) = iprot.readListBegin() + for _i874 in xrange(_size870): + _elem875 = iprot.readString() + self.success.append(_elem875) iprot.readListEnd() else: iprot.skip(ftype) @@ -22683,8 +23029,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 iter860 in self.success: - oprot.writeString(iter860) + for iter876 in self.success: + oprot.writeString(iter876) oprot.writeListEnd() oprot.writeFieldEnd() if self.o2 is not None: @@ -25232,10 +25578,10 @@ class get_functions_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype864, _size861) = iprot.readListBegin() - for _i865 in xrange(_size861): - _elem866 = iprot.readString() - self.success.append(_elem866) + (_etype880, _size877) = iprot.readListBegin() + for _i881 in xrange(_size877): + _elem882 = iprot.readString() + self.success.append(_elem882) iprot.readListEnd() else: iprot.skip(ftype) @@ -25258,8 +25604,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 iter867 in self.success: - oprot.writeString(iter867) + for iter883 in self.success: + oprot.writeString(iter883) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -25947,10 +26293,10 @@ class get_role_names_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype871, _size868) = iprot.readListBegin() - for _i872 in xrange(_size868): - _elem873 = iprot.readString() - self.success.append(_elem873) + (_etype887, _size884) = iprot.readListBegin() + for _i888 in xrange(_size884): + _elem889 = iprot.readString() + self.success.append(_elem889) iprot.readListEnd() else: iprot.skip(ftype) @@ -25973,8 +26319,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 iter874 in self.success: - oprot.writeString(iter874) + for iter890 in self.success: + oprot.writeString(iter890) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -26488,11 +26834,11 @@ class list_roles_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype878, _size875) = iprot.readListBegin() - for _i879 in xrange(_size875): - _elem880 = Role() - _elem880.read(iprot) - self.success.append(_elem880) + (_etype894, _size891) = iprot.readListBegin() + for _i895 in xrange(_size891): + _elem896 = Role() + _elem896.read(iprot) + self.success.append(_elem896) iprot.readListEnd() else: iprot.skip(ftype) @@ -26515,8 +26861,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 iter881 in self.success: - iter881.write(oprot) + for iter897 in self.success: + iter897.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -27025,10 +27371,10 @@ class get_privilege_set_args: elif fid == 3: if ftype == TType.LIST: self.group_names = [] - (_etype885, _size882) = iprot.readListBegin() - for _i886 in xrange(_size882): - _elem887 = iprot.readString() - self.group_names.append(_elem887) + (_etype901, _size898) = iprot.readListBegin() + for _i902 in xrange(_size898): + _elem903 = iprot.readString() + self.group_names.append(_elem903) iprot.readListEnd() else: iprot.skip(ftype) @@ -27053,8 +27399,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 iter888 in self.group_names: - oprot.writeString(iter888) + for iter904 in self.group_names: + oprot.writeString(iter904) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -27281,11 +27627,11 @@ class list_privileges_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype892, _size889) = iprot.readListBegin() - for _i893 in xrange(_size889): - _elem894 = HiveObjectPrivilege() - _elem894.read(iprot) - self.success.append(_elem894) + (_etype908, _size905) = iprot.readListBegin() + for _i909 in xrange(_size905): + _elem910 = HiveObjectPrivilege() + _elem910.read(iprot) + self.success.append(_elem910) iprot.readListEnd() else: iprot.skip(ftype) @@ -27308,8 +27654,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 iter895 in self.success: - iter895.write(oprot) + for iter911 in self.success: + iter911.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: @@ -27807,10 +28153,10 @@ class set_ugi_args: elif fid == 2: if ftype == TType.LIST: self.group_names = [] - (_etype899, _size896) = iprot.readListBegin() - for _i900 in xrange(_size896): - _elem901 = iprot.readString() - self.group_names.append(_elem901) + (_etype915, _size912) = iprot.readListBegin() + for _i916 in xrange(_size912): + _elem917 = iprot.readString() + self.group_names.append(_elem917) iprot.readListEnd() else: iprot.skip(ftype) @@ -27831,8 +28177,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 iter902 in self.group_names: - oprot.writeString(iter902) + for iter918 in self.group_names: + oprot.writeString(iter918) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -27887,10 +28233,10 @@ class set_ugi_result: if fid == 0: if ftype == TType.LIST: self.success = [] - (_etype906, _size903) = iprot.readListBegin() - for _i907 in xrange(_size903): - _elem908 = iprot.readString() - self.success.append(_elem908) + (_etype922, _size919) = iprot.readListBegin() + for _i923 in xrange(_size919): + _elem924 = iprot.readString() + self.success.append(_elem924) iprot.readListEnd() else: iprot.skip(ftype) @@ -27913,8 +28259,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 iter909 in self.success: - oprot.writeString(iter909) + for iter925 in self.success: + oprot.writeString(iter925) oprot.writeListEnd() oprot.writeFieldEnd() if self.o1 is not None: http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/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 7b93158..c613e4b 100644 --- a/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb +++ b/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb @@ -766,6 +766,25 @@ module ThriftHiveMetastore raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'exchange_partition failed: unknown result') end + def exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name) + send_exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name) + return recv_exchange_partitions() + end + + def send_exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name) + send_message('exchange_partitions', Exchange_partitions_args, :partitionSpecs => partitionSpecs, :source_db => source_db, :source_table_name => source_table_name, :dest_db => dest_db, :dest_table_name => dest_table_name) + end + + def recv_exchange_partitions() + result = receive_message(Exchange_partitions_result) + return result.success unless result.success.nil? + raise result.o1 unless result.o1.nil? + raise result.o2 unless result.o2.nil? + raise result.o3 unless result.o3.nil? + raise result.o4 unless result.o4.nil? + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'exchange_partitions failed: unknown result') + end + def get_partition_with_auth(db_name, tbl_name, part_vals, user_name, group_names) send_get_partition_with_auth(db_name, tbl_name, part_vals, user_name, group_names) return recv_get_partition_with_auth() @@ -2775,6 +2794,23 @@ module ThriftHiveMetastore write_result(result, oprot, 'exchange_partition', seqid) end + def process_exchange_partitions(seqid, iprot, oprot) + args = read_args(iprot, Exchange_partitions_args) + result = Exchange_partitions_result.new() + begin + result.success = @handler.exchange_partitions(args.partitionSpecs, args.source_db, args.source_table_name, args.dest_db, args.dest_table_name) + rescue ::MetaException => o1 + result.o1 = o1 + rescue ::NoSuchObjectException => o2 + result.o2 = o2 + rescue ::InvalidObjectException => o3 + result.o3 = o3 + rescue ::InvalidInputException => o4 + result.o4 = o4 + end + write_result(result, oprot, 'exchange_partitions', seqid) + end + def process_get_partition_with_auth(seqid, iprot, oprot) args = read_args(iprot, Get_partition_with_auth_args) result = Get_partition_with_auth_result.new() @@ -5509,6 +5545,54 @@ module ThriftHiveMetastore ::Thrift::Struct.generate_accessors self end + class Exchange_partitions_args + include ::Thrift::Struct, ::Thrift::Struct_Union + PARTITIONSPECS = 1 + SOURCE_DB = 2 + SOURCE_TABLE_NAME = 3 + DEST_DB = 4 + DEST_TABLE_NAME = 5 + + FIELDS = { + PARTITIONSPECS => {:type => ::Thrift::Types::MAP, :name => 'partitionSpecs', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}}, + SOURCE_DB => {:type => ::Thrift::Types::STRING, :name => 'source_db'}, + SOURCE_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'source_table_name'}, + DEST_DB => {:type => ::Thrift::Types::STRING, :name => 'dest_db'}, + DEST_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'dest_table_name'} + } + + def struct_fields; FIELDS; end + + def validate + end + + ::Thrift::Struct.generate_accessors self + end + + class Exchange_partitions_result + include ::Thrift::Struct, ::Thrift::Struct_Union + SUCCESS = 0 + O1 = 1 + O2 = 2 + O3 = 3 + O4 = 4 + + FIELDS = { + SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}}, + O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}, + O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}, + O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidObjectException}, + O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException} + } + + def struct_fields; FIELDS; end + + def validate + end + + ::Thrift::Struct.generate_accessors self + end + class Get_partition_with_auth_args include ::Thrift::Struct, ::Thrift::Struct_Union DB_NAME = 1 http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/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 2740e40..2e9afaf 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -2467,6 +2467,15 @@ public class HiveMetaStore extends ThriftHiveMetastore { String sourceDbName, String sourceTableName, String destDbName, String destTableName) throws MetaException, NoSuchObjectException, InvalidObjectException, InvalidInputException, TException { + exchange_partitions(partitionSpecs, sourceDbName, sourceTableName, destDbName, destTableName); + return new Partition(); + } + + @Override + public List<Partition> exchange_partitions(Map<String, String> partitionSpecs, + String sourceDbName, String sourceTableName, String destDbName, + String destTableName) throws MetaException, NoSuchObjectException, + InvalidObjectException, InvalidInputException, TException { boolean success = false; boolean pathCreated = false; RawStore ms = getMS(); @@ -2501,6 +2510,7 @@ public class HiveMetaStore extends ThriftHiveMetastore { Path destPath = new Path(destinationTable.getSd().getLocation(), Warehouse.makePartName(partitionKeysPresent, partValsPresent)); try { + List<Partition> destPartitions = new ArrayList<Partition>(); for (Partition partition: partitionsToExchange) { Partition destPartition = new Partition(partition); destPartition.setDbName(destDbName); @@ -2509,6 +2519,7 @@ public class HiveMetaStore extends ThriftHiveMetastore { Warehouse.makePartName(destinationTable.getPartitionKeys(), partition.getValues())); destPartition.getSd().setLocation(destPartitionPath.toString()); ms.addPartition(destPartition); + destPartitions.add(destPartition); ms.dropPartition(partition.getDbName(), sourceTable.getTableName(), partition.getValues()); } @@ -2524,6 +2535,7 @@ public class HiveMetaStore extends ThriftHiveMetastore { */ pathCreated = wh.renameDir(sourcePath, destPath); success = ms.commitTransaction(); + return destPartitions; } finally { if (!success || !pathCreated) { ms.rollbackTransaction(); @@ -2532,7 +2544,6 @@ public class HiveMetaStore extends ThriftHiveMetastore { } } } - return new Partition(); } private boolean drop_partition_common(RawStore ms, String db_name, String tbl_name, http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/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 3960f5d..f86ec45 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -659,6 +659,22 @@ public class HiveMetaStoreClient implements IMetaStoreClient { destDb, destinationTableName); } + /** + * Exchange the partitions between two tables + * @param partitionSpecs partitions specs of the parent partition to be exchanged + * @param destDb the db of the destination table + * @param destinationTableName the destination table name + @ @return new partitions after exchanging + */ + @Override + public List<Partition> exchange_partitions(Map<String, String> partitionSpecs, + String sourceDb, String sourceTable, String destDb, + String destinationTableName) throws MetaException, + NoSuchObjectException, InvalidObjectException, TException { + return client.exchange_partitions(partitionSpecs, sourceDb, sourceTable, + destDb, destinationTableName); + } + @Override public void validatePartitionNameCharacters(List<String> partVals) throws TException, MetaException { http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/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 f3a23f5..9279cf5 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java @@ -453,6 +453,22 @@ public interface IMetaStoreClient { InvalidObjectException, TException; /** + * With the one partitionSpecs to exchange, multiple partitions could be exchanged. + * e.g., year=2015/month/day, exchanging partition year=2015 results to all the partitions + * belonging to it exchanged. This function returns the list of affected partitions. + * @param partitionSpecs + * @param sourceDb + * @param sourceTable + * @param destdb + * @param destTableName + * @return the list of the new partitions + */ + List<Partition> exchange_partitions(Map<String, String> partitionSpecs, + String sourceDb, String sourceTable, String destdb, + String destTableName) throws MetaException, NoSuchObjectException, + InvalidObjectException, TException; + + /** * @param dbName * @param tblName * @param name - partition name i.e. 'ds=2010-02-03/ts=2010-02-03 18%3A16%3A01' http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index ff86d6e..caf98b5 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -4203,9 +4203,20 @@ public class DDLTask extends Task<DDLWork> implements Serializable { Map<String, String> partitionSpecs = exchangePartition.getPartitionSpecs(); Table destTable = exchangePartition.getDestinationTable(); Table sourceTable = exchangePartition.getSourceTable(); - db.exchangeTablePartitions(partitionSpecs, sourceTable.getDbName(), + List<Partition> partitions = + db.exchangeTablePartitions(partitionSpecs, sourceTable.getDbName(), sourceTable.getTableName(),destTable.getDbName(), destTable.getTableName()); + + for(Partition partition : partitions) { + // Reuse the partition specs from dest partition since they should be the same + work.getOutputs().add(new WriteEntity(new Partition(sourceTable, partition.getSpec(), null), + WriteEntity.WriteType.DELETE)); + + work.getOutputs().add(new WriteEntity(new Partition(destTable, partition.getSpec(), null), + WriteEntity.WriteType.INSERT)); + } + return 0; } http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java index 9db740b..488d923 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java @@ -2091,7 +2091,7 @@ private void constructOneLBLocationMap(FileStatus fSta, } List<org.apache.hadoop.hive.metastore.api.Partition> tParts = getMSC().dropPartitions( dbName, tblName, partExprs, dropOptions); - return convertFromMetastore(tbl, tParts, null); + return convertFromMetastore(tbl, tParts); } catch (NoSuchObjectException e) { throw new HiveException("Partition or table doesn't exist.", e); } catch (Exception e) { @@ -2335,22 +2335,20 @@ private void constructOneLBLocationMap(FileStatus fSta, List<org.apache.hadoop.hive.metastore.api.Partition> tParts = getMSC().listPartitionsByFilter( tbl.getDbName(), tbl.getTableName(), filter, (short)-1); - return convertFromMetastore(tbl, tParts, null); + return convertFromMetastore(tbl, tParts); } private static List<Partition> convertFromMetastore(Table tbl, - List<org.apache.hadoop.hive.metastore.api.Partition> src, - List<Partition> dest) throws HiveException { - if (src == null) { - return dest; + List<org.apache.hadoop.hive.metastore.api.Partition> partitions) throws HiveException { + if (partitions == null) { + return new ArrayList<Partition>(); } - if (dest == null) { - dest = new ArrayList<Partition>(src.size()); - } - for (org.apache.hadoop.hive.metastore.api.Partition tPart : src) { - dest.add(new Partition(tbl, tPart)); + + List<Partition> results = new ArrayList<Partition>(partitions.size()); + for (org.apache.hadoop.hive.metastore.api.Partition tPart : partitions) { + results.add(new Partition(tbl, tPart)); } - return dest; + return results; } /** @@ -2370,7 +2368,7 @@ private void constructOneLBLocationMap(FileStatus fSta, new ArrayList<org.apache.hadoop.hive.metastore.api.Partition>(); boolean hasUnknownParts = getMSC().listPartitionsByExpr(tbl.getDbName(), tbl.getTableName(), exprBytes, defaultPartitionName, (short)-1, msParts); - convertFromMetastore(tbl, msParts, result); + result.addAll(convertFromMetastore(tbl, msParts)); return hasUnknownParts; } @@ -3001,12 +2999,15 @@ private void constructOneLBLocationMap(FileStatus fSta, return ShimLoader.getMajorVersion().startsWith("0.20"); } - public void exchangeTablePartitions(Map<String, String> partitionSpecs, + public List<Partition> exchangeTablePartitions(Map<String, String> partitionSpecs, String sourceDb, String sourceTable, String destDb, String destinationTableName) throws HiveException { try { - getMSC().exchange_partition(partitionSpecs, sourceDb, sourceTable, destDb, + List<org.apache.hadoop.hive.metastore.api.Partition> partitions = + getMSC().exchange_partitions(partitionSpecs, sourceDb, sourceTable, destDb, destinationTableName); + + return convertFromMetastore(getTable(destDb, destinationTableName), partitions); } catch (Exception ex) { LOG.error(StringUtils.stringifyException(ex)); throw new HiveException(ex); http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index b4546e1..eea2fcc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.parse; import com.google.common.collect.Lists; + import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.Tree; import org.slf4j.Logger; @@ -49,6 +50,7 @@ import org.apache.hadoop.hive.ql.exec.TaskFactory; import org.apache.hadoop.hive.ql.exec.Utilities; import org.apache.hadoop.hive.ql.hooks.ReadEntity; import org.apache.hadoop.hive.ql.hooks.WriteEntity; +import org.apache.hadoop.hive.ql.hooks.WriteEntity.WriteType; import org.apache.hadoop.hive.ql.index.HiveIndex; import org.apache.hadoop.hive.ql.index.HiveIndex.IndexType; import org.apache.hadoop.hive.ql.index.HiveIndexHandler; @@ -718,6 +720,9 @@ public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { new AlterTableExchangePartition(sourceTable, destTable, partSpecs); rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTableExchangePartition), conf)); + + outputs.add(new WriteEntity(sourceTable, WriteType.DDL_SHARED)); + outputs.add(new WriteEntity(destTable, WriteType.DDL_SHARED)); } /** http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/test/results/clientnegative/exchange_partition.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientnegative/exchange_partition.q.out b/ql/src/test/results/clientnegative/exchange_partition.q.out index 8622615..f5e332a 100644 --- a/ql/src/test/results/clientnegative/exchange_partition.q.out +++ b/ql/src/test/results/clientnegative/exchange_partition.q.out @@ -51,4 +51,6 @@ POSTHOOK: Input: default@ex_table2 part=part1 PREHOOK: query: ALTER TABLE ex_table1 EXCHANGE PARTITION (part='part1') WITH TABLE ex_table2 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@ex_table1 +PREHOOK: Output: default@ex_table2 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.io.IOException Cannot rename the source path. The destination path already exists.) http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/test/results/clientpositive/exchange_partition.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/exchange_partition.q.out b/ql/src/test/results/clientpositive/exchange_partition.q.out index 5b21eaf..9316341 100644 --- a/ql/src/test/results/clientpositive/exchange_partition.q.out +++ b/ql/src/test/results/clientpositive/exchange_partition.q.out @@ -60,8 +60,14 @@ POSTHOOK: Input: ex2@exchange_part_test2 ds=2013-04-05 PREHOOK: query: ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE ex2.exchange_part_test2 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: ex1@exchange_part_test1 +PREHOOK: Output: ex2@exchange_part_test2 POSTHOOK: query: ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE ex2.exchange_part_test2 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: ex1@exchange_part_test1 +POSTHOOK: Output: ex1@exchange_part_test1@ds=2013-04-05 +POSTHOOK: Output: ex2@exchange_part_test2 +POSTHOOK: Output: ex2@exchange_part_test2@ds=2013-04-05 PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1 PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: ex1@exchange_part_test1 http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/test/results/clientpositive/exchange_partition2.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/exchange_partition2.q.out b/ql/src/test/results/clientpositive/exchange_partition2.q.out index 8c7c583..05121d8 100644 --- a/ql/src/test/results/clientpositive/exchange_partition2.q.out +++ b/ql/src/test/results/clientpositive/exchange_partition2.q.out @@ -48,8 +48,14 @@ POSTHOOK: Input: default@exchange_part_test2 ds=2013-04-05/hr=1 PREHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05', hr='1') WITH TABLE exchange_part_test2 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@exchange_part_test1 +PREHOOK: Output: default@exchange_part_test2 POSTHOOK: query: ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05', hr='1') WITH TABLE exchange_part_test2 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: default@exchange_part_test1 +POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=1 +POSTHOOK: Output: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=1 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@exchange_part_test1 http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/test/results/clientpositive/exchange_partition3.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/exchange_partition3.q.out b/ql/src/test/results/clientpositive/exchange_partition3.q.out index 3815861..014be7c 100644 --- a/ql/src/test/results/clientpositive/exchange_partition3.q.out +++ b/ql/src/test/results/clientpositive/exchange_partition3.q.out @@ -65,9 +65,17 @@ ds=2013-04-05/hr=2 PREHOOK: query: -- This will exchange both partitions hr=1 and hr=2 ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@exchange_part_test1 +PREHOOK: Output: default@exchange_part_test2 POSTHOOK: query: -- This will exchange both partitions hr=1 and hr=2 ALTER TABLE exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH TABLE exchange_part_test2 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: default@exchange_part_test1 +POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=1 +POSTHOOK: Output: default@exchange_part_test1@ds=2013-04-05/hr=2 +POSTHOOK: Output: default@exchange_part_test2 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=1 +POSTHOOK: Output: default@exchange_part_test2@ds=2013-04-05/hr=2 PREHOOK: query: SHOW PARTITIONS exchange_part_test1 PREHOOK: type: SHOWPARTITIONS PREHOOK: Input: default@exchange_part_test1 http://git-wip-us.apache.org/repos/asf/hive/blob/55a24f0a/ql/src/test/results/clientpositive/exchgpartition2lel.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/exchgpartition2lel.q.out b/ql/src/test/results/clientpositive/exchgpartition2lel.q.out index 5997d6b..3fd996a 100644 --- a/ql/src/test/results/clientpositive/exchgpartition2lel.q.out +++ b/ql/src/test/results/clientpositive/exchgpartition2lel.q.out @@ -113,8 +113,14 @@ POSTHOOK: Input: default@t3@d1=1/d2=1 100 1 1 PREHOOK: query: ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@t1 +PREHOOK: Output: default@t2 POSTHOOK: query: ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: default@t1 +POSTHOOK: Output: default@t1@d1=1 +POSTHOOK: Output: default@t2 +POSTHOOK: Output: default@t2@d1=1 PREHOOK: query: SELECT * FROM t1 PREHOOK: type: QUERY PREHOOK: Input: default@t1 @@ -136,8 +142,14 @@ POSTHOOK: Input: default@t2@d1=1 100 1 PREHOOK: query: ALTER TABLE t4 EXCHANGE PARTITION (d1 = 1, d2 = 1) WITH TABLE t3 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@t3 +PREHOOK: Output: default@t4 POSTHOOK: query: ALTER TABLE t4 EXCHANGE PARTITION (d1 = 1, d2 = 1) WITH TABLE t3 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: default@t3 +POSTHOOK: Output: default@t3@d1=1/d2=1 +POSTHOOK: Output: default@t4 +POSTHOOK: Output: default@t4@d1=1/d2=1 PREHOOK: query: SELECT * FROM t3 PREHOOK: type: QUERY PREHOOK: Input: default@t3 @@ -159,8 +171,14 @@ POSTHOOK: Input: default@t4@d1=1/d2=1 100 1 1 PREHOOK: query: ALTER TABLE t6 EXCHANGE PARTITION (d1 = 1, d2 = 1, d3 = 1) WITH TABLE t5 PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION +PREHOOK: Output: default@t5 +PREHOOK: Output: default@t6 POSTHOOK: query: ALTER TABLE t6 EXCHANGE PARTITION (d1 = 1, d2 = 1, d3 = 1) WITH TABLE t5 POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION +POSTHOOK: Output: default@t5 +POSTHOOK: Output: default@t5@d1=1/d2=1/d3=1 +POSTHOOK: Output: default@t6 +POSTHOOK: Output: default@t6@d1=1/d2=1/d3=1 PREHOOK: query: SELECT * FROM t5 PREHOOK: type: QUERY PREHOOK: Input: default@t5
