http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py b/standalone-metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py index faeeea0..972db1f 100644 --- a/standalone-metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py +++ b/standalone-metastore/src/gen/thrift/gen-py/hive_metastore/ttypes.py @@ -11085,6 +11085,8 @@ class OpenTxnRequest: - user - hostname - agentInfo + - replPolicy + - replSrcTxnIds """ thrift_spec = ( @@ -11093,13 +11095,17 @@ class OpenTxnRequest: (2, TType.STRING, 'user', None, None, ), # 2 (3, TType.STRING, 'hostname', None, None, ), # 3 (4, TType.STRING, 'agentInfo', None, "Unknown", ), # 4 + (5, TType.STRING, 'replPolicy', None, None, ), # 5 + (6, TType.LIST, 'replSrcTxnIds', (TType.I64,None), None, ), # 6 ) - def __init__(self, num_txns=None, user=None, hostname=None, agentInfo=thrift_spec[4][4],): + def __init__(self, num_txns=None, user=None, hostname=None, agentInfo=thrift_spec[4][4], replPolicy=None, replSrcTxnIds=None,): self.num_txns = num_txns self.user = user self.hostname = hostname self.agentInfo = agentInfo + self.replPolicy = replPolicy + self.replSrcTxnIds = replSrcTxnIds 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: @@ -11130,6 +11136,21 @@ class OpenTxnRequest: self.agentInfo = iprot.readString() else: iprot.skip(ftype) + elif fid == 5: + if ftype == TType.STRING: + self.replPolicy = iprot.readString() + else: + iprot.skip(ftype) + elif fid == 6: + if ftype == TType.LIST: + self.replSrcTxnIds = [] + (_etype505, _size502) = iprot.readListBegin() + for _i506 in xrange(_size502): + _elem507 = iprot.readI64() + self.replSrcTxnIds.append(_elem507) + iprot.readListEnd() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -11156,6 +11177,17 @@ class OpenTxnRequest: oprot.writeFieldBegin('agentInfo', TType.STRING, 4) oprot.writeString(self.agentInfo) oprot.writeFieldEnd() + if self.replPolicy is not None: + oprot.writeFieldBegin('replPolicy', TType.STRING, 5) + oprot.writeString(self.replPolicy) + oprot.writeFieldEnd() + if self.replSrcTxnIds is not None: + oprot.writeFieldBegin('replSrcTxnIds', TType.LIST, 6) + oprot.writeListBegin(TType.I64, len(self.replSrcTxnIds)) + for iter508 in self.replSrcTxnIds: + oprot.writeI64(iter508) + oprot.writeListEnd() + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11175,6 +11207,8 @@ class OpenTxnRequest: value = (value * 31) ^ hash(self.user) value = (value * 31) ^ hash(self.hostname) value = (value * 31) ^ hash(self.agentInfo) + value = (value * 31) ^ hash(self.replPolicy) + value = (value * 31) ^ hash(self.replSrcTxnIds) return value def __repr__(self): @@ -11214,10 +11248,10 @@ class OpenTxnsResponse: if fid == 1: if ftype == TType.LIST: self.txn_ids = [] - (_etype505, _size502) = iprot.readListBegin() - for _i506 in xrange(_size502): - _elem507 = iprot.readI64() - self.txn_ids.append(_elem507) + (_etype512, _size509) = iprot.readListBegin() + for _i513 in xrange(_size509): + _elem514 = iprot.readI64() + self.txn_ids.append(_elem514) iprot.readListEnd() else: iprot.skip(ftype) @@ -11234,8 +11268,8 @@ class OpenTxnsResponse: if self.txn_ids is not None: oprot.writeFieldBegin('txn_ids', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.txn_ids)) - for iter508 in self.txn_ids: - oprot.writeI64(iter508) + for iter515 in self.txn_ids: + oprot.writeI64(iter515) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11267,15 +11301,18 @@ class AbortTxnRequest: """ Attributes: - txnid + - replPolicy """ thrift_spec = ( None, # 0 (1, TType.I64, 'txnid', None, None, ), # 1 + (2, TType.STRING, 'replPolicy', None, None, ), # 2 ) - def __init__(self, txnid=None,): + def __init__(self, txnid=None, replPolicy=None,): self.txnid = txnid + self.replPolicy = replPolicy 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: @@ -11291,6 +11328,11 @@ class AbortTxnRequest: self.txnid = iprot.readI64() else: iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.replPolicy = iprot.readString() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -11305,6 +11347,10 @@ class AbortTxnRequest: oprot.writeFieldBegin('txnid', TType.I64, 1) oprot.writeI64(self.txnid) oprot.writeFieldEnd() + if self.replPolicy is not None: + oprot.writeFieldBegin('replPolicy', TType.STRING, 2) + oprot.writeString(self.replPolicy) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11317,6 +11363,7 @@ class AbortTxnRequest: def __hash__(self): value = 17 value = (value * 31) ^ hash(self.txnid) + value = (value * 31) ^ hash(self.replPolicy) return value def __repr__(self): @@ -11356,10 +11403,10 @@ class AbortTxnsRequest: if fid == 1: if ftype == TType.LIST: self.txn_ids = [] - (_etype512, _size509) = iprot.readListBegin() - for _i513 in xrange(_size509): - _elem514 = iprot.readI64() - self.txn_ids.append(_elem514) + (_etype519, _size516) = iprot.readListBegin() + for _i520 in xrange(_size516): + _elem521 = iprot.readI64() + self.txn_ids.append(_elem521) iprot.readListEnd() else: iprot.skip(ftype) @@ -11376,8 +11423,8 @@ class AbortTxnsRequest: if self.txn_ids is not None: oprot.writeFieldBegin('txn_ids', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.txn_ids)) - for iter515 in self.txn_ids: - oprot.writeI64(iter515) + for iter522 in self.txn_ids: + oprot.writeI64(iter522) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11409,15 +11456,18 @@ class CommitTxnRequest: """ Attributes: - txnid + - replPolicy """ thrift_spec = ( None, # 0 (1, TType.I64, 'txnid', None, None, ), # 1 + (2, TType.STRING, 'replPolicy', None, None, ), # 2 ) - def __init__(self, txnid=None,): + def __init__(self, txnid=None, replPolicy=None,): self.txnid = txnid + self.replPolicy = replPolicy 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: @@ -11433,6 +11483,11 @@ class CommitTxnRequest: self.txnid = iprot.readI64() else: iprot.skip(ftype) + elif fid == 2: + if ftype == TType.STRING: + self.replPolicy = iprot.readString() + else: + iprot.skip(ftype) else: iprot.skip(ftype) iprot.readFieldEnd() @@ -11447,6 +11502,10 @@ class CommitTxnRequest: oprot.writeFieldBegin('txnid', TType.I64, 1) oprot.writeI64(self.txnid) oprot.writeFieldEnd() + if self.replPolicy is not None: + oprot.writeFieldBegin('replPolicy', TType.STRING, 2) + oprot.writeString(self.replPolicy) + oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -11459,6 +11518,7 @@ class CommitTxnRequest: def __hash__(self): value = 17 value = (value * 31) ^ hash(self.txnid) + value = (value * 31) ^ hash(self.replPolicy) return value def __repr__(self): @@ -11501,10 +11561,10 @@ class GetValidWriteIdsRequest: if fid == 1: if ftype == TType.LIST: self.fullTableNames = [] - (_etype519, _size516) = iprot.readListBegin() - for _i520 in xrange(_size516): - _elem521 = iprot.readString() - self.fullTableNames.append(_elem521) + (_etype526, _size523) = iprot.readListBegin() + for _i527 in xrange(_size523): + _elem528 = iprot.readString() + self.fullTableNames.append(_elem528) iprot.readListEnd() else: iprot.skip(ftype) @@ -11526,8 +11586,8 @@ class GetValidWriteIdsRequest: if self.fullTableNames is not None: oprot.writeFieldBegin('fullTableNames', TType.LIST, 1) oprot.writeListBegin(TType.STRING, len(self.fullTableNames)) - for iter522 in self.fullTableNames: - oprot.writeString(iter522) + for iter529 in self.fullTableNames: + oprot.writeString(iter529) oprot.writeListEnd() oprot.writeFieldEnd() if self.validTxnList is not None: @@ -11610,10 +11670,10 @@ class TableValidWriteIds: elif fid == 3: if ftype == TType.LIST: self.invalidWriteIds = [] - (_etype526, _size523) = iprot.readListBegin() - for _i527 in xrange(_size523): - _elem528 = iprot.readI64() - self.invalidWriteIds.append(_elem528) + (_etype533, _size530) = iprot.readListBegin() + for _i534 in xrange(_size530): + _elem535 = iprot.readI64() + self.invalidWriteIds.append(_elem535) iprot.readListEnd() else: iprot.skip(ftype) @@ -11648,8 +11708,8 @@ class TableValidWriteIds: if self.invalidWriteIds is not None: oprot.writeFieldBegin('invalidWriteIds', TType.LIST, 3) oprot.writeListBegin(TType.I64, len(self.invalidWriteIds)) - for iter529 in self.invalidWriteIds: - oprot.writeI64(iter529) + for iter536 in self.invalidWriteIds: + oprot.writeI64(iter536) oprot.writeListEnd() oprot.writeFieldEnd() if self.minOpenWriteId is not None: @@ -11721,11 +11781,11 @@ class GetValidWriteIdsResponse: if fid == 1: if ftype == TType.LIST: self.tblValidWriteIds = [] - (_etype533, _size530) = iprot.readListBegin() - for _i534 in xrange(_size530): - _elem535 = TableValidWriteIds() - _elem535.read(iprot) - self.tblValidWriteIds.append(_elem535) + (_etype540, _size537) = iprot.readListBegin() + for _i541 in xrange(_size537): + _elem542 = TableValidWriteIds() + _elem542.read(iprot) + self.tblValidWriteIds.append(_elem542) iprot.readListEnd() else: iprot.skip(ftype) @@ -11742,8 +11802,8 @@ class GetValidWriteIdsResponse: if self.tblValidWriteIds is not None: oprot.writeFieldBegin('tblValidWriteIds', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.tblValidWriteIds)) - for iter536 in self.tblValidWriteIds: - iter536.write(oprot) + for iter543 in self.tblValidWriteIds: + iter543.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -11803,10 +11863,10 @@ class AllocateTableWriteIdsRequest: if fid == 1: if ftype == TType.LIST: self.txnIds = [] - (_etype540, _size537) = iprot.readListBegin() - for _i541 in xrange(_size537): - _elem542 = iprot.readI64() - self.txnIds.append(_elem542) + (_etype547, _size544) = iprot.readListBegin() + for _i548 in xrange(_size544): + _elem549 = iprot.readI64() + self.txnIds.append(_elem549) iprot.readListEnd() else: iprot.skip(ftype) @@ -11833,8 +11893,8 @@ class AllocateTableWriteIdsRequest: if self.txnIds is not None: oprot.writeFieldBegin('txnIds', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.txnIds)) - for iter543 in self.txnIds: - oprot.writeI64(iter543) + for iter550 in self.txnIds: + oprot.writeI64(iter550) oprot.writeListEnd() oprot.writeFieldEnd() if self.dbName is not None: @@ -11984,11 +12044,11 @@ class AllocateTableWriteIdsResponse: if fid == 1: if ftype == TType.LIST: self.txnToWriteIds = [] - (_etype547, _size544) = iprot.readListBegin() - for _i548 in xrange(_size544): - _elem549 = TxnToWriteId() - _elem549.read(iprot) - self.txnToWriteIds.append(_elem549) + (_etype554, _size551) = iprot.readListBegin() + for _i555 in xrange(_size551): + _elem556 = TxnToWriteId() + _elem556.read(iprot) + self.txnToWriteIds.append(_elem556) iprot.readListEnd() else: iprot.skip(ftype) @@ -12005,8 +12065,8 @@ class AllocateTableWriteIdsResponse: if self.txnToWriteIds is not None: oprot.writeFieldBegin('txnToWriteIds', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.txnToWriteIds)) - for iter550 in self.txnToWriteIds: - iter550.write(oprot) + for iter557 in self.txnToWriteIds: + iter557.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -12234,11 +12294,11 @@ class LockRequest: if fid == 1: if ftype == TType.LIST: self.component = [] - (_etype554, _size551) = iprot.readListBegin() - for _i555 in xrange(_size551): - _elem556 = LockComponent() - _elem556.read(iprot) - self.component.append(_elem556) + (_etype561, _size558) = iprot.readListBegin() + for _i562 in xrange(_size558): + _elem563 = LockComponent() + _elem563.read(iprot) + self.component.append(_elem563) iprot.readListEnd() else: iprot.skip(ftype) @@ -12275,8 +12335,8 @@ class LockRequest: if self.component is not None: oprot.writeFieldBegin('component', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.component)) - for iter557 in self.component: - iter557.write(oprot) + for iter564 in self.component: + iter564.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.txnid is not None: @@ -12974,11 +13034,11 @@ class ShowLocksResponse: if fid == 1: if ftype == TType.LIST: self.locks = [] - (_etype561, _size558) = iprot.readListBegin() - for _i562 in xrange(_size558): - _elem563 = ShowLocksResponseElement() - _elem563.read(iprot) - self.locks.append(_elem563) + (_etype568, _size565) = iprot.readListBegin() + for _i569 in xrange(_size565): + _elem570 = ShowLocksResponseElement() + _elem570.read(iprot) + self.locks.append(_elem570) iprot.readListEnd() else: iprot.skip(ftype) @@ -12995,8 +13055,8 @@ class ShowLocksResponse: if self.locks is not None: oprot.writeFieldBegin('locks', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.locks)) - for iter564 in self.locks: - iter564.write(oprot) + for iter571 in self.locks: + iter571.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13211,20 +13271,20 @@ class HeartbeatTxnRangeResponse: if fid == 1: if ftype == TType.SET: self.aborted = set() - (_etype568, _size565) = iprot.readSetBegin() - for _i569 in xrange(_size565): - _elem570 = iprot.readI64() - self.aborted.add(_elem570) + (_etype575, _size572) = iprot.readSetBegin() + for _i576 in xrange(_size572): + _elem577 = iprot.readI64() + self.aborted.add(_elem577) iprot.readSetEnd() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.SET: self.nosuch = set() - (_etype574, _size571) = iprot.readSetBegin() - for _i575 in xrange(_size571): - _elem576 = iprot.readI64() - self.nosuch.add(_elem576) + (_etype581, _size578) = iprot.readSetBegin() + for _i582 in xrange(_size578): + _elem583 = iprot.readI64() + self.nosuch.add(_elem583) iprot.readSetEnd() else: iprot.skip(ftype) @@ -13241,15 +13301,15 @@ class HeartbeatTxnRangeResponse: if self.aborted is not None: oprot.writeFieldBegin('aborted', TType.SET, 1) oprot.writeSetBegin(TType.I64, len(self.aborted)) - for iter577 in self.aborted: - oprot.writeI64(iter577) + for iter584 in self.aborted: + oprot.writeI64(iter584) oprot.writeSetEnd() oprot.writeFieldEnd() if self.nosuch is not None: oprot.writeFieldBegin('nosuch', TType.SET, 2) oprot.writeSetBegin(TType.I64, len(self.nosuch)) - for iter578 in self.nosuch: - oprot.writeI64(iter578) + for iter585 in self.nosuch: + oprot.writeI64(iter585) oprot.writeSetEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13346,11 +13406,11 @@ class CompactionRequest: elif fid == 6: if ftype == TType.MAP: self.properties = {} - (_ktype580, _vtype581, _size579 ) = iprot.readMapBegin() - for _i583 in xrange(_size579): - _key584 = iprot.readString() - _val585 = iprot.readString() - self.properties[_key584] = _val585 + (_ktype587, _vtype588, _size586 ) = iprot.readMapBegin() + for _i590 in xrange(_size586): + _key591 = iprot.readString() + _val592 = iprot.readString() + self.properties[_key591] = _val592 iprot.readMapEnd() else: iprot.skip(ftype) @@ -13387,9 +13447,9 @@ class CompactionRequest: if self.properties is not None: oprot.writeFieldBegin('properties', TType.MAP, 6) oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.properties)) - for kiter586,viter587 in self.properties.items(): - oprot.writeString(kiter586) - oprot.writeString(viter587) + for kiter593,viter594 in self.properties.items(): + oprot.writeString(kiter593) + oprot.writeString(viter594) oprot.writeMapEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13824,11 +13884,11 @@ class ShowCompactResponse: if fid == 1: if ftype == TType.LIST: self.compacts = [] - (_etype591, _size588) = iprot.readListBegin() - for _i592 in xrange(_size588): - _elem593 = ShowCompactResponseElement() - _elem593.read(iprot) - self.compacts.append(_elem593) + (_etype598, _size595) = iprot.readListBegin() + for _i599 in xrange(_size595): + _elem600 = ShowCompactResponseElement() + _elem600.read(iprot) + self.compacts.append(_elem600) iprot.readListEnd() else: iprot.skip(ftype) @@ -13845,8 +13905,8 @@ class ShowCompactResponse: if self.compacts is not None: oprot.writeFieldBegin('compacts', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.compacts)) - for iter594 in self.compacts: - iter594.write(oprot) + for iter601 in self.compacts: + iter601.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -13935,10 +13995,10 @@ class AddDynamicPartitions: elif fid == 5: if ftype == TType.LIST: self.partitionnames = [] - (_etype598, _size595) = iprot.readListBegin() - for _i599 in xrange(_size595): - _elem600 = iprot.readString() - self.partitionnames.append(_elem600) + (_etype605, _size602) = iprot.readListBegin() + for _i606 in xrange(_size602): + _elem607 = iprot.readString() + self.partitionnames.append(_elem607) iprot.readListEnd() else: iprot.skip(ftype) @@ -13976,8 +14036,8 @@ class AddDynamicPartitions: if self.partitionnames is not None: oprot.writeFieldBegin('partitionnames', TType.LIST, 5) oprot.writeListBegin(TType.STRING, len(self.partitionnames)) - for iter601 in self.partitionnames: - oprot.writeString(iter601) + for iter608 in self.partitionnames: + oprot.writeString(iter608) oprot.writeListEnd() oprot.writeFieldEnd() if self.operationType is not None: @@ -14207,10 +14267,10 @@ class CreationMetadata: elif fid == 4: if ftype == TType.SET: self.tablesUsed = set() - (_etype605, _size602) = iprot.readSetBegin() - for _i606 in xrange(_size602): - _elem607 = iprot.readString() - self.tablesUsed.add(_elem607) + (_etype612, _size609) = iprot.readSetBegin() + for _i613 in xrange(_size609): + _elem614 = iprot.readString() + self.tablesUsed.add(_elem614) iprot.readSetEnd() else: iprot.skip(ftype) @@ -14244,8 +14304,8 @@ class CreationMetadata: if self.tablesUsed is not None: oprot.writeFieldBegin('tablesUsed', TType.SET, 4) oprot.writeSetBegin(TType.STRING, len(self.tablesUsed)) - for iter608 in self.tablesUsed: - oprot.writeString(iter608) + for iter615 in self.tablesUsed: + oprot.writeString(iter615) oprot.writeSetEnd() oprot.writeFieldEnd() if self.validTxnList is not None: @@ -14557,11 +14617,11 @@ class NotificationEventResponse: if fid == 1: if ftype == TType.LIST: self.events = [] - (_etype612, _size609) = iprot.readListBegin() - for _i613 in xrange(_size609): - _elem614 = NotificationEvent() - _elem614.read(iprot) - self.events.append(_elem614) + (_etype619, _size616) = iprot.readListBegin() + for _i620 in xrange(_size616): + _elem621 = NotificationEvent() + _elem621.read(iprot) + self.events.append(_elem621) iprot.readListEnd() else: iprot.skip(ftype) @@ -14578,8 +14638,8 @@ class NotificationEventResponse: if self.events is not None: oprot.writeFieldBegin('events', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.events)) - for iter615 in self.events: - iter615.write(oprot) + for iter622 in self.events: + iter622.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -14873,20 +14933,20 @@ class InsertEventRequestData: elif fid == 2: if ftype == TType.LIST: self.filesAdded = [] - (_etype619, _size616) = iprot.readListBegin() - for _i620 in xrange(_size616): - _elem621 = iprot.readString() - self.filesAdded.append(_elem621) + (_etype626, _size623) = iprot.readListBegin() + for _i627 in xrange(_size623): + _elem628 = iprot.readString() + self.filesAdded.append(_elem628) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.LIST: self.filesAddedChecksum = [] - (_etype625, _size622) = iprot.readListBegin() - for _i626 in xrange(_size622): - _elem627 = iprot.readString() - self.filesAddedChecksum.append(_elem627) + (_etype632, _size629) = iprot.readListBegin() + for _i633 in xrange(_size629): + _elem634 = iprot.readString() + self.filesAddedChecksum.append(_elem634) iprot.readListEnd() else: iprot.skip(ftype) @@ -14907,15 +14967,15 @@ class InsertEventRequestData: if self.filesAdded is not None: oprot.writeFieldBegin('filesAdded', TType.LIST, 2) oprot.writeListBegin(TType.STRING, len(self.filesAdded)) - for iter628 in self.filesAdded: - oprot.writeString(iter628) + for iter635 in self.filesAdded: + oprot.writeString(iter635) oprot.writeListEnd() oprot.writeFieldEnd() if self.filesAddedChecksum is not None: oprot.writeFieldBegin('filesAddedChecksum', TType.LIST, 3) oprot.writeListBegin(TType.STRING, len(self.filesAddedChecksum)) - for iter629 in self.filesAddedChecksum: - oprot.writeString(iter629) + for iter636 in self.filesAddedChecksum: + oprot.writeString(iter636) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15073,10 +15133,10 @@ class FireEventRequest: elif fid == 5: if ftype == TType.LIST: self.partitionVals = [] - (_etype633, _size630) = iprot.readListBegin() - for _i634 in xrange(_size630): - _elem635 = iprot.readString() - self.partitionVals.append(_elem635) + (_etype640, _size637) = iprot.readListBegin() + for _i641 in xrange(_size637): + _elem642 = iprot.readString() + self.partitionVals.append(_elem642) iprot.readListEnd() else: iprot.skip(ftype) @@ -15114,8 +15174,8 @@ class FireEventRequest: if self.partitionVals is not None: oprot.writeFieldBegin('partitionVals', TType.LIST, 5) oprot.writeListBegin(TType.STRING, len(self.partitionVals)) - for iter636 in self.partitionVals: - oprot.writeString(iter636) + for iter643 in self.partitionVals: + oprot.writeString(iter643) oprot.writeListEnd() oprot.writeFieldEnd() if self.catName is not None: @@ -15307,12 +15367,12 @@ class GetFileMetadataByExprResult: if fid == 1: if ftype == TType.MAP: self.metadata = {} - (_ktype638, _vtype639, _size637 ) = iprot.readMapBegin() - for _i641 in xrange(_size637): - _key642 = iprot.readI64() - _val643 = MetadataPpdResult() - _val643.read(iprot) - self.metadata[_key642] = _val643 + (_ktype645, _vtype646, _size644 ) = iprot.readMapBegin() + for _i648 in xrange(_size644): + _key649 = iprot.readI64() + _val650 = MetadataPpdResult() + _val650.read(iprot) + self.metadata[_key649] = _val650 iprot.readMapEnd() else: iprot.skip(ftype) @@ -15334,9 +15394,9 @@ class GetFileMetadataByExprResult: if self.metadata is not None: oprot.writeFieldBegin('metadata', TType.MAP, 1) oprot.writeMapBegin(TType.I64, TType.STRUCT, len(self.metadata)) - for kiter644,viter645 in self.metadata.items(): - oprot.writeI64(kiter644) - viter645.write(oprot) + for kiter651,viter652 in self.metadata.items(): + oprot.writeI64(kiter651) + viter652.write(oprot) oprot.writeMapEnd() oprot.writeFieldEnd() if self.isSupported is not None: @@ -15406,10 +15466,10 @@ class GetFileMetadataByExprRequest: if fid == 1: if ftype == TType.LIST: self.fileIds = [] - (_etype649, _size646) = iprot.readListBegin() - for _i650 in xrange(_size646): - _elem651 = iprot.readI64() - self.fileIds.append(_elem651) + (_etype656, _size653) = iprot.readListBegin() + for _i657 in xrange(_size653): + _elem658 = iprot.readI64() + self.fileIds.append(_elem658) iprot.readListEnd() else: iprot.skip(ftype) @@ -15441,8 +15501,8 @@ class GetFileMetadataByExprRequest: if self.fileIds is not None: oprot.writeFieldBegin('fileIds', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.fileIds)) - for iter652 in self.fileIds: - oprot.writeI64(iter652) + for iter659 in self.fileIds: + oprot.writeI64(iter659) oprot.writeListEnd() oprot.writeFieldEnd() if self.expr is not None: @@ -15516,11 +15576,11 @@ class GetFileMetadataResult: if fid == 1: if ftype == TType.MAP: self.metadata = {} - (_ktype654, _vtype655, _size653 ) = iprot.readMapBegin() - for _i657 in xrange(_size653): - _key658 = iprot.readI64() - _val659 = iprot.readString() - self.metadata[_key658] = _val659 + (_ktype661, _vtype662, _size660 ) = iprot.readMapBegin() + for _i664 in xrange(_size660): + _key665 = iprot.readI64() + _val666 = iprot.readString() + self.metadata[_key665] = _val666 iprot.readMapEnd() else: iprot.skip(ftype) @@ -15542,9 +15602,9 @@ class GetFileMetadataResult: if self.metadata is not None: oprot.writeFieldBegin('metadata', TType.MAP, 1) oprot.writeMapBegin(TType.I64, TType.STRING, len(self.metadata)) - for kiter660,viter661 in self.metadata.items(): - oprot.writeI64(kiter660) - oprot.writeString(viter661) + for kiter667,viter668 in self.metadata.items(): + oprot.writeI64(kiter667) + oprot.writeString(viter668) oprot.writeMapEnd() oprot.writeFieldEnd() if self.isSupported is not None: @@ -15605,10 +15665,10 @@ class GetFileMetadataRequest: if fid == 1: if ftype == TType.LIST: self.fileIds = [] - (_etype665, _size662) = iprot.readListBegin() - for _i666 in xrange(_size662): - _elem667 = iprot.readI64() - self.fileIds.append(_elem667) + (_etype672, _size669) = iprot.readListBegin() + for _i673 in xrange(_size669): + _elem674 = iprot.readI64() + self.fileIds.append(_elem674) iprot.readListEnd() else: iprot.skip(ftype) @@ -15625,8 +15685,8 @@ class GetFileMetadataRequest: if self.fileIds is not None: oprot.writeFieldBegin('fileIds', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.fileIds)) - for iter668 in self.fileIds: - oprot.writeI64(iter668) + for iter675 in self.fileIds: + oprot.writeI64(iter675) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -15732,20 +15792,20 @@ class PutFileMetadataRequest: if fid == 1: if ftype == TType.LIST: self.fileIds = [] - (_etype672, _size669) = iprot.readListBegin() - for _i673 in xrange(_size669): - _elem674 = iprot.readI64() - self.fileIds.append(_elem674) + (_etype679, _size676) = iprot.readListBegin() + for _i680 in xrange(_size676): + _elem681 = iprot.readI64() + self.fileIds.append(_elem681) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.LIST: self.metadata = [] - (_etype678, _size675) = iprot.readListBegin() - for _i679 in xrange(_size675): - _elem680 = iprot.readString() - self.metadata.append(_elem680) + (_etype685, _size682) = iprot.readListBegin() + for _i686 in xrange(_size682): + _elem687 = iprot.readString() + self.metadata.append(_elem687) iprot.readListEnd() else: iprot.skip(ftype) @@ -15767,15 +15827,15 @@ class PutFileMetadataRequest: if self.fileIds is not None: oprot.writeFieldBegin('fileIds', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.fileIds)) - for iter681 in self.fileIds: - oprot.writeI64(iter681) + for iter688 in self.fileIds: + oprot.writeI64(iter688) oprot.writeListEnd() oprot.writeFieldEnd() if self.metadata is not None: oprot.writeFieldBegin('metadata', TType.LIST, 2) oprot.writeListBegin(TType.STRING, len(self.metadata)) - for iter682 in self.metadata: - oprot.writeString(iter682) + for iter689 in self.metadata: + oprot.writeString(iter689) oprot.writeListEnd() oprot.writeFieldEnd() if self.type is not None: @@ -15883,10 +15943,10 @@ class ClearFileMetadataRequest: if fid == 1: if ftype == TType.LIST: self.fileIds = [] - (_etype686, _size683) = iprot.readListBegin() - for _i687 in xrange(_size683): - _elem688 = iprot.readI64() - self.fileIds.append(_elem688) + (_etype693, _size690) = iprot.readListBegin() + for _i694 in xrange(_size690): + _elem695 = iprot.readI64() + self.fileIds.append(_elem695) iprot.readListEnd() else: iprot.skip(ftype) @@ -15903,8 +15963,8 @@ class ClearFileMetadataRequest: if self.fileIds is not None: oprot.writeFieldBegin('fileIds', TType.LIST, 1) oprot.writeListBegin(TType.I64, len(self.fileIds)) - for iter689 in self.fileIds: - oprot.writeI64(iter689) + for iter696 in self.fileIds: + oprot.writeI64(iter696) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16133,11 +16193,11 @@ class GetAllFunctionsResponse: if fid == 1: if ftype == TType.LIST: self.functions = [] - (_etype693, _size690) = iprot.readListBegin() - for _i694 in xrange(_size690): - _elem695 = Function() - _elem695.read(iprot) - self.functions.append(_elem695) + (_etype700, _size697) = iprot.readListBegin() + for _i701 in xrange(_size697): + _elem702 = Function() + _elem702.read(iprot) + self.functions.append(_elem702) iprot.readListEnd() else: iprot.skip(ftype) @@ -16154,8 +16214,8 @@ class GetAllFunctionsResponse: if self.functions is not None: oprot.writeFieldBegin('functions', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.functions)) - for iter696 in self.functions: - iter696.write(oprot) + for iter703 in self.functions: + iter703.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16207,10 +16267,10 @@ class ClientCapabilities: if fid == 1: if ftype == TType.LIST: self.values = [] - (_etype700, _size697) = iprot.readListBegin() - for _i701 in xrange(_size697): - _elem702 = iprot.readI32() - self.values.append(_elem702) + (_etype707, _size704) = iprot.readListBegin() + for _i708 in xrange(_size704): + _elem709 = iprot.readI32() + self.values.append(_elem709) iprot.readListEnd() else: iprot.skip(ftype) @@ -16227,8 +16287,8 @@ class ClientCapabilities: if self.values is not None: oprot.writeFieldBegin('values', TType.LIST, 1) oprot.writeListBegin(TType.I32, len(self.values)) - for iter703 in self.values: - oprot.writeI32(iter703) + for iter710 in self.values: + oprot.writeI32(iter710) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16473,10 +16533,10 @@ class GetTablesRequest: elif fid == 2: if ftype == TType.LIST: self.tblNames = [] - (_etype707, _size704) = iprot.readListBegin() - for _i708 in xrange(_size704): - _elem709 = iprot.readString() - self.tblNames.append(_elem709) + (_etype714, _size711) = iprot.readListBegin() + for _i715 in xrange(_size711): + _elem716 = iprot.readString() + self.tblNames.append(_elem716) iprot.readListEnd() else: iprot.skip(ftype) @@ -16508,8 +16568,8 @@ class GetTablesRequest: if self.tblNames is not None: oprot.writeFieldBegin('tblNames', TType.LIST, 2) oprot.writeListBegin(TType.STRING, len(self.tblNames)) - for iter710 in self.tblNames: - oprot.writeString(iter710) + for iter717 in self.tblNames: + oprot.writeString(iter717) oprot.writeListEnd() oprot.writeFieldEnd() if self.capabilities is not None: @@ -16574,11 +16634,11 @@ class GetTablesResult: if fid == 1: if ftype == TType.LIST: self.tables = [] - (_etype714, _size711) = iprot.readListBegin() - for _i715 in xrange(_size711): - _elem716 = Table() - _elem716.read(iprot) - self.tables.append(_elem716) + (_etype721, _size718) = iprot.readListBegin() + for _i722 in xrange(_size718): + _elem723 = Table() + _elem723.read(iprot) + self.tables.append(_elem723) iprot.readListEnd() else: iprot.skip(ftype) @@ -16595,8 +16655,8 @@ class GetTablesResult: if self.tables is not None: oprot.writeFieldBegin('tables', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.tables)) - for iter717 in self.tables: - iter717.write(oprot) + for iter724 in self.tables: + iter724.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -16907,10 +16967,10 @@ class Materialization: if fid == 1: if ftype == TType.SET: self.tablesUsed = set() - (_etype721, _size718) = iprot.readSetBegin() - for _i722 in xrange(_size718): - _elem723 = iprot.readString() - self.tablesUsed.add(_elem723) + (_etype728, _size725) = iprot.readSetBegin() + for _i729 in xrange(_size725): + _elem730 = iprot.readString() + self.tablesUsed.add(_elem730) iprot.readSetEnd() else: iprot.skip(ftype) @@ -16937,8 +16997,8 @@ class Materialization: if self.tablesUsed is not None: oprot.writeFieldBegin('tablesUsed', TType.SET, 1) oprot.writeSetBegin(TType.STRING, len(self.tablesUsed)) - for iter724 in self.tablesUsed: - oprot.writeString(iter724) + for iter731 in self.tablesUsed: + oprot.writeString(iter731) oprot.writeSetEnd() oprot.writeFieldEnd() if self.validTxnList is not None: @@ -17840,44 +17900,44 @@ class WMFullResourcePlan: elif fid == 2: if ftype == TType.LIST: self.pools = [] - (_etype728, _size725) = iprot.readListBegin() - for _i729 in xrange(_size725): - _elem730 = WMPool() - _elem730.read(iprot) - self.pools.append(_elem730) + (_etype735, _size732) = iprot.readListBegin() + for _i736 in xrange(_size732): + _elem737 = WMPool() + _elem737.read(iprot) + self.pools.append(_elem737) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 3: if ftype == TType.LIST: self.mappings = [] - (_etype734, _size731) = iprot.readListBegin() - for _i735 in xrange(_size731): - _elem736 = WMMapping() - _elem736.read(iprot) - self.mappings.append(_elem736) + (_etype741, _size738) = iprot.readListBegin() + for _i742 in xrange(_size738): + _elem743 = WMMapping() + _elem743.read(iprot) + self.mappings.append(_elem743) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 4: if ftype == TType.LIST: self.triggers = [] - (_etype740, _size737) = iprot.readListBegin() - for _i741 in xrange(_size737): - _elem742 = WMTrigger() - _elem742.read(iprot) - self.triggers.append(_elem742) + (_etype747, _size744) = iprot.readListBegin() + for _i748 in xrange(_size744): + _elem749 = WMTrigger() + _elem749.read(iprot) + self.triggers.append(_elem749) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 5: if ftype == TType.LIST: self.poolTriggers = [] - (_etype746, _size743) = iprot.readListBegin() - for _i747 in xrange(_size743): - _elem748 = WMPoolTrigger() - _elem748.read(iprot) - self.poolTriggers.append(_elem748) + (_etype753, _size750) = iprot.readListBegin() + for _i754 in xrange(_size750): + _elem755 = WMPoolTrigger() + _elem755.read(iprot) + self.poolTriggers.append(_elem755) iprot.readListEnd() else: iprot.skip(ftype) @@ -17898,29 +17958,29 @@ class WMFullResourcePlan: if self.pools is not None: oprot.writeFieldBegin('pools', TType.LIST, 2) oprot.writeListBegin(TType.STRUCT, len(self.pools)) - for iter749 in self.pools: - iter749.write(oprot) + for iter756 in self.pools: + iter756.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.mappings is not None: oprot.writeFieldBegin('mappings', TType.LIST, 3) oprot.writeListBegin(TType.STRUCT, len(self.mappings)) - for iter750 in self.mappings: - iter750.write(oprot) + for iter757 in self.mappings: + iter757.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.triggers is not None: oprot.writeFieldBegin('triggers', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.triggers)) - for iter751 in self.triggers: - iter751.write(oprot) + for iter758 in self.triggers: + iter758.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.poolTriggers is not None: oprot.writeFieldBegin('poolTriggers', TType.LIST, 5) oprot.writeListBegin(TType.STRUCT, len(self.poolTriggers)) - for iter752 in self.poolTriggers: - iter752.write(oprot) + for iter759 in self.poolTriggers: + iter759.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18394,11 +18454,11 @@ class WMGetAllResourcePlanResponse: if fid == 1: if ftype == TType.LIST: self.resourcePlans = [] - (_etype756, _size753) = iprot.readListBegin() - for _i757 in xrange(_size753): - _elem758 = WMResourcePlan() - _elem758.read(iprot) - self.resourcePlans.append(_elem758) + (_etype763, _size760) = iprot.readListBegin() + for _i764 in xrange(_size760): + _elem765 = WMResourcePlan() + _elem765.read(iprot) + self.resourcePlans.append(_elem765) iprot.readListEnd() else: iprot.skip(ftype) @@ -18415,8 +18475,8 @@ class WMGetAllResourcePlanResponse: if self.resourcePlans is not None: oprot.writeFieldBegin('resourcePlans', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.resourcePlans)) - for iter759 in self.resourcePlans: - iter759.write(oprot) + for iter766 in self.resourcePlans: + iter766.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -18720,20 +18780,20 @@ class WMValidateResourcePlanResponse: if fid == 1: if ftype == TType.LIST: self.errors = [] - (_etype763, _size760) = iprot.readListBegin() - for _i764 in xrange(_size760): - _elem765 = iprot.readString() - self.errors.append(_elem765) + (_etype770, _size767) = iprot.readListBegin() + for _i771 in xrange(_size767): + _elem772 = iprot.readString() + self.errors.append(_elem772) iprot.readListEnd() else: iprot.skip(ftype) elif fid == 2: if ftype == TType.LIST: self.warnings = [] - (_etype769, _size766) = iprot.readListBegin() - for _i770 in xrange(_size766): - _elem771 = iprot.readString() - self.warnings.append(_elem771) + (_etype776, _size773) = iprot.readListBegin() + for _i777 in xrange(_size773): + _elem778 = iprot.readString() + self.warnings.append(_elem778) iprot.readListEnd() else: iprot.skip(ftype) @@ -18750,15 +18810,15 @@ class WMValidateResourcePlanResponse: if self.errors is not None: oprot.writeFieldBegin('errors', TType.LIST, 1) oprot.writeListBegin(TType.STRING, len(self.errors)) - for iter772 in self.errors: - oprot.writeString(iter772) + for iter779 in self.errors: + oprot.writeString(iter779) oprot.writeListEnd() oprot.writeFieldEnd() if self.warnings is not None: oprot.writeFieldBegin('warnings', TType.LIST, 2) oprot.writeListBegin(TType.STRING, len(self.warnings)) - for iter773 in self.warnings: - oprot.writeString(iter773) + for iter780 in self.warnings: + oprot.writeString(iter780) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -19335,11 +19395,11 @@ class WMGetTriggersForResourePlanResponse: if fid == 1: if ftype == TType.LIST: self.triggers = [] - (_etype777, _size774) = iprot.readListBegin() - for _i778 in xrange(_size774): - _elem779 = WMTrigger() - _elem779.read(iprot) - self.triggers.append(_elem779) + (_etype784, _size781) = iprot.readListBegin() + for _i785 in xrange(_size781): + _elem786 = WMTrigger() + _elem786.read(iprot) + self.triggers.append(_elem786) iprot.readListEnd() else: iprot.skip(ftype) @@ -19356,8 +19416,8 @@ class WMGetTriggersForResourePlanResponse: if self.triggers is not None: oprot.writeFieldBegin('triggers', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.triggers)) - for iter780 in self.triggers: - iter780.write(oprot) + for iter787 in self.triggers: + iter787.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop() @@ -20541,11 +20601,11 @@ class SchemaVersion: elif fid == 4: if ftype == TType.LIST: self.cols = [] - (_etype784, _size781) = iprot.readListBegin() - for _i785 in xrange(_size781): - _elem786 = FieldSchema() - _elem786.read(iprot) - self.cols.append(_elem786) + (_etype791, _size788) = iprot.readListBegin() + for _i792 in xrange(_size788): + _elem793 = FieldSchema() + _elem793.read(iprot) + self.cols.append(_elem793) iprot.readListEnd() else: iprot.skip(ftype) @@ -20605,8 +20665,8 @@ class SchemaVersion: if self.cols is not None: oprot.writeFieldBegin('cols', TType.LIST, 4) oprot.writeListBegin(TType.STRUCT, len(self.cols)) - for iter787 in self.cols: - iter787.write(oprot) + for iter794 in self.cols: + iter794.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() if self.state is not None: @@ -20861,11 +20921,11 @@ class FindSchemasByColsResp: if fid == 1: if ftype == TType.LIST: self.schemaVersions = [] - (_etype791, _size788) = iprot.readListBegin() - for _i792 in xrange(_size788): - _elem793 = SchemaVersionDescriptor() - _elem793.read(iprot) - self.schemaVersions.append(_elem793) + (_etype798, _size795) = iprot.readListBegin() + for _i799 in xrange(_size795): + _elem800 = SchemaVersionDescriptor() + _elem800.read(iprot) + self.schemaVersions.append(_elem800) iprot.readListEnd() else: iprot.skip(ftype) @@ -20882,8 +20942,8 @@ class FindSchemasByColsResp: if self.schemaVersions is not None: oprot.writeFieldBegin('schemaVersions', TType.LIST, 1) oprot.writeListBegin(TType.STRUCT, len(self.schemaVersions)) - for iter794 in self.schemaVersions: - iter794.write(oprot) + for iter801 in self.schemaVersions: + iter801.write(oprot) oprot.writeListEnd() oprot.writeFieldEnd() oprot.writeFieldStop()
http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb b/standalone-metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb index 969f4ab..94454a1 100644 --- a/standalone-metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb +++ b/standalone-metastore/src/gen/thrift/gen-rb/hive_metastore_types.rb @@ -2477,12 +2477,16 @@ class OpenTxnRequest USER = 2 HOSTNAME = 3 AGENTINFO = 4 + REPLPOLICY = 5 + REPLSRCTXNIDS = 6 FIELDS = { NUM_TXNS => {:type => ::Thrift::Types::I32, :name => 'num_txns'}, USER => {:type => ::Thrift::Types::STRING, :name => 'user'}, HOSTNAME => {:type => ::Thrift::Types::STRING, :name => 'hostname'}, - AGENTINFO => {:type => ::Thrift::Types::STRING, :name => 'agentInfo', :default => %q"Unknown", :optional => true} + AGENTINFO => {:type => ::Thrift::Types::STRING, :name => 'agentInfo', :default => %q"Unknown", :optional => true}, + REPLPOLICY => {:type => ::Thrift::Types::STRING, :name => 'replPolicy', :optional => true}, + REPLSRCTXNIDS => {:type => ::Thrift::Types::LIST, :name => 'replSrcTxnIds', :element => {:type => ::Thrift::Types::I64}, :optional => true} } def struct_fields; FIELDS; end @@ -2516,9 +2520,11 @@ end class AbortTxnRequest include ::Thrift::Struct, ::Thrift::Struct_Union TXNID = 1 + REPLPOLICY = 2 FIELDS = { - TXNID => {:type => ::Thrift::Types::I64, :name => 'txnid'} + TXNID => {:type => ::Thrift::Types::I64, :name => 'txnid'}, + REPLPOLICY => {:type => ::Thrift::Types::STRING, :name => 'replPolicy', :optional => true} } def struct_fields; FIELDS; end @@ -2550,9 +2556,11 @@ end class CommitTxnRequest include ::Thrift::Struct, ::Thrift::Struct_Union TXNID = 1 + REPLPOLICY = 2 FIELDS = { - TXNID => {:type => ::Thrift::Types::I64, :name => 'txnid'} + TXNID => {:type => ::Thrift::Types::I64, :name => 'txnid'}, + REPLPOLICY => {:type => ::Thrift::Types::STRING, :name => 'replPolicy', :optional => true} } def struct_fields; FIELDS; end http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index 07fdcd7..8539fea 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -83,6 +83,7 @@ import org.apache.hadoop.hive.metastore.api.*; import org.apache.hadoop.hive.metastore.events.AddForeignKeyEvent; import org.apache.hadoop.hive.metastore.conf.MetastoreConf; import org.apache.hadoop.hive.metastore.conf.MetastoreConf.ConfVars; +import org.apache.hadoop.hive.metastore.events.AbortTxnEvent; import org.apache.hadoop.hive.metastore.events.AddNotNullConstraintEvent; import org.apache.hadoop.hive.metastore.events.AddPartitionEvent; import org.apache.hadoop.hive.metastore.events.AddPrimaryKeyEvent; @@ -92,6 +93,7 @@ import org.apache.hadoop.hive.metastore.events.AlterISchemaEvent; import org.apache.hadoop.hive.metastore.events.AlterPartitionEvent; import org.apache.hadoop.hive.metastore.events.AlterSchemaVersionEvent; import org.apache.hadoop.hive.metastore.events.AlterTableEvent; +import org.apache.hadoop.hive.metastore.events.CommitTxnEvent; import org.apache.hadoop.hive.metastore.events.ConfigChangeEvent; import org.apache.hadoop.hive.metastore.events.CreateCatalogEvent; import org.apache.hadoop.hive.metastore.events.CreateDatabaseEvent; @@ -109,6 +111,7 @@ import org.apache.hadoop.hive.metastore.events.DropSchemaVersionEvent; import org.apache.hadoop.hive.metastore.events.DropTableEvent; import org.apache.hadoop.hive.metastore.events.InsertEvent; import org.apache.hadoop.hive.metastore.events.LoadPartitionDoneEvent; +import org.apache.hadoop.hive.metastore.events.OpenTxnEvent; import org.apache.hadoop.hive.metastore.events.PreAddPartitionEvent; import org.apache.hadoop.hive.metastore.events.PreAlterDatabaseEvent; import org.apache.hadoop.hive.metastore.events.PreAlterISchemaEvent; @@ -178,7 +181,6 @@ import org.iq80.leveldb.DB; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import com.facebook.fb303.FacebookBase; import com.facebook.fb303.fb_status; import com.google.common.annotations.VisibleForTesting; @@ -6947,22 +6949,42 @@ public class HiveMetaStore extends ThriftHiveMetastore { @Override public OpenTxnsResponse open_txns(OpenTxnRequest rqst) throws TException { - return getTxnHandler().openTxns(rqst); + OpenTxnsResponse response = getTxnHandler().openTxns(rqst); + List<Long> txnIds = response.getTxn_ids(); + if (txnIds != null && listeners != null && !listeners.isEmpty()) { + MetaStoreListenerNotifier.notifyEvent(listeners, EventType.OPEN_TXN, + new OpenTxnEvent(txnIds, this)); + } + return response; } @Override public void abort_txn(AbortTxnRequest rqst) throws TException { getTxnHandler().abortTxn(rqst); + if (listeners != null && !listeners.isEmpty()) { + MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ABORT_TXN, + new AbortTxnEvent(rqst.getTxnid(), this)); + } } @Override public void abort_txns(AbortTxnsRequest rqst) throws TException { getTxnHandler().abortTxns(rqst); + if (listeners != null && !listeners.isEmpty()) { + for (Long txnId : rqst.getTxn_ids()) { + MetaStoreListenerNotifier.notifyEvent(listeners, EventType.ABORT_TXN, + new AbortTxnEvent(txnId, this)); + } + } } @Override public void commit_txn(CommitTxnRequest rqst) throws TException { getTxnHandler().commitTxn(rqst); + if (listeners != null && !listeners.isEmpty()) { + MetaStoreListenerNotifier.notifyEvent(listeners, EventType.COMMIT_TXN, + new CommitTxnEvent(rqst.getTxnid(), this)); + } } @Override http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java index 0794cc5..ebbf465 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java @@ -2344,20 +2344,43 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable { @Override public long openTxn(String user) throws TException { - OpenTxnsResponse txns = openTxns(user, 1); + OpenTxnsResponse txns = openTxnsIntr(user, 1, null, null); return txns.getTxn_ids().get(0); } @Override + public List<Long> replOpenTxn(String replPolicy, List<Long> srcTxnIds, String user) throws TException { + // As this is called from replication task, the user is the user who has fired the repl command. + // This is required for standalone metastore authentication. + OpenTxnsResponse txns = openTxnsIntr(user, srcTxnIds.size(), replPolicy, srcTxnIds); + return txns.getTxn_ids(); + } + + @Override public OpenTxnsResponse openTxns(String user, int numTxns) throws TException { - String hostname = null; + return openTxnsIntr(user, numTxns, null, null); + } + + private OpenTxnsResponse openTxnsIntr(String user, int numTxns, String replPolicy, + List<Long> srcTxnIds) throws TException { + String hostname; try { hostname = InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException e) { LOG.error("Unable to resolve my host name " + e.getMessage()); throw new RuntimeException(e); } - return client.open_txns(new OpenTxnRequest(numTxns, user, hostname)); + OpenTxnRequest rqst = new OpenTxnRequest(numTxns, user, hostname); + if (replPolicy != null) { + assert srcTxnIds != null; + assert numTxns == srcTxnIds.size(); + // need to set this only for replication tasks + rqst.setReplPolicy(replPolicy); + rqst.setReplSrcTxnIds(srcTxnIds); + } else { + assert srcTxnIds == null; + } + return client.open_txns(rqst); } @Override @@ -2366,12 +2389,27 @@ public class HiveMetaStoreClient implements IMetaStoreClient, AutoCloseable { } @Override + public void replRollbackTxn(long srcTxnId, String replPolicy) throws NoSuchTxnException, TException { + AbortTxnRequest rqst = new AbortTxnRequest(srcTxnId); + rqst.setReplPolicy(replPolicy); + client.abort_txn(rqst); + } + + @Override public void commitTxn(long txnid) - throws NoSuchTxnException, TxnAbortedException, TException { + throws NoSuchTxnException, TxnAbortedException, TException { client.commit_txn(new CommitTxnRequest(txnid)); } @Override + public void replCommitTxn(long srcTxnId, String replPolicy) + throws NoSuchTxnException, TxnAbortedException, TException { + CommitTxnRequest rqst = new CommitTxnRequest(srcTxnId); + rqst.setReplPolicy(replPolicy); + client.commit_txn(rqst); + } + + @Override public GetOpenTxnsInfoResponse showTxns() throws TException { return client.get_open_txns_info(); } http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java index 2e146f3..b2c40c2 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java @@ -2771,6 +2771,16 @@ public interface IMetaStoreClient { long openTxn(String user) throws TException; /** + * Initiate a transaction at the target cluster. + * @param replPolicy The replication policy to uniquely identify the source cluster. + * @param srcTxnIds The list of transaction ids at the source cluster + * @param user The user who has fired the repl load command. + * @return transaction identifiers + * @throws TException + */ + List<Long> replOpenTxn(String replPolicy, List<Long> srcTxnIds, String user) throws TException; + + /** * Initiate a batch of transactions. It is not guaranteed that the * requested number of transactions will be instantiated. The system has a * maximum number instantiated per request, controlled by hive.txn.max @@ -2809,6 +2819,18 @@ public interface IMetaStoreClient { void rollbackTxn(long txnid) throws NoSuchTxnException, TException; /** + * Rollback a transaction. This will also unlock any locks associated with + * this transaction. + * @param txnid id of transaction to be rolled back. + * @param replPolicy the replication policy to identify the source cluster + * @throws NoSuchTxnException if the requested transaction does not exist. + * Note that this can result from the transaction having timed out and been + * deleted. + * @throws TException + */ + void replRollbackTxn(long txnid, String replPolicy) throws NoSuchTxnException, TException; + + /** * Commit a transaction. This will also unlock any locks associated with * this transaction. * @param txnid id of transaction to be committed. @@ -2823,6 +2845,21 @@ public interface IMetaStoreClient { throws NoSuchTxnException, TxnAbortedException, TException; /** + * Commit a transaction. This will also unlock any locks associated with + * this transaction. + * @param txnid id of transaction to be committed. + * @param replPolicy the replication policy to identify the source cluster + * @throws NoSuchTxnException if the requested transaction does not exist. + * This can result fro the transaction having timed out and been deleted by + * the compactor. + * @throws TxnAbortedException if the requested transaction has been + * aborted. This can result from the transaction timing out. + * @throws TException + */ + void replCommitTxn(long txnid, String replPolicy) + throws NoSuchTxnException, TxnAbortedException, TException; + + /** * Abort a list of transactions. This is for use by "ABORT TRANSACTIONS" in the grammar. * @throws TException */ http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreEventListener.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreEventListener.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreEventListener.java index 569fff0..7b3a80c 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreEventListener.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreEventListener.java @@ -50,6 +50,9 @@ import org.apache.hadoop.hive.metastore.events.DropSchemaVersionEvent; import org.apache.hadoop.hive.metastore.events.DropTableEvent; import org.apache.hadoop.hive.metastore.events.InsertEvent; import org.apache.hadoop.hive.metastore.events.LoadPartitionDoneEvent; +import org.apache.hadoop.hive.metastore.events.OpenTxnEvent; +import org.apache.hadoop.hive.metastore.events.CommitTxnEvent; +import org.apache.hadoop.hive.metastore.events.AbortTxnEvent; /** * This abstract class needs to be extended to provide implementation of actions that needs @@ -166,7 +169,6 @@ public abstract class MetaStoreEventListener implements Configurable { * @throws MetaException */ public void onInsert(InsertEvent insertEvent) throws MetaException { - } /** @@ -230,6 +232,30 @@ public abstract class MetaStoreEventListener implements Configurable { public void onDropCatalog(DropCatalogEvent dropCatalogEvent) throws MetaException { } + /** + * This will be called when a new transaction is started. + * @param openTxnEvent + * @throws MetaException + */ + public void onOpenTxn(OpenTxnEvent openTxnEvent) throws MetaException { + } + + /** + * This will be called to commit a transaction. + * @param commitTxnEvent + * @throws MetaException + */ + public void onCommitTxn(CommitTxnEvent commitTxnEvent) throws MetaException { + } + + /** + * This will be called to abort a transaction. + * @param abortTxnEvent + * @throws MetaException + */ + public void onAbortTxn(AbortTxnEvent abortTxnEvent) throws MetaException { + } + @Override public Configuration getConf() { return this.conf; @@ -239,7 +265,4 @@ public abstract class MetaStoreEventListener implements Configurable { public void setConf(Configuration config) { this.conf = config; } - - - } http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java index 988fca6..e9bbfdc 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreListenerNotifier.java @@ -49,6 +49,9 @@ import org.apache.hadoop.hive.metastore.events.DropSchemaVersionEvent; import org.apache.hadoop.hive.metastore.events.DropTableEvent; import org.apache.hadoop.hive.metastore.events.InsertEvent; import org.apache.hadoop.hive.metastore.events.ListenerEvent; +import org.apache.hadoop.hive.metastore.events.OpenTxnEvent; +import org.apache.hadoop.hive.metastore.events.CommitTxnEvent; +import org.apache.hadoop.hive.metastore.events.AbortTxnEvent; import java.util.List; import java.util.Map; @@ -206,6 +209,26 @@ public class MetaStoreListenerNotifier { (listener, event) -> listener.onCreateCatalog((CreateCatalogEvent)event)) .put(EventType.DROP_CATALOG, (listener, event) -> listener.onDropCatalog((DropCatalogEvent)event)) + .put(EventType.OPEN_TXN, new EventNotifier() { + @Override + public void notify(MetaStoreEventListener listener, ListenerEvent event) throws MetaException { + listener.onOpenTxn((OpenTxnEvent)event); + } + }) + .put(EventType.COMMIT_TXN, new EventNotifier() { + @Override + public void notify(MetaStoreEventListener listener, ListenerEvent event) + throws MetaException { + listener.onCommitTxn((CommitTxnEvent) event); + } + }) + .put(EventType.ABORT_TXN, new EventNotifier() { + @Override + public void notify(MetaStoreEventListener listener, ListenerEvent event) + throws MetaException { + listener.onAbortTxn((AbortTxnEvent) event); + } + }) .build() ); http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/AbortTxnEvent.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/AbortTxnEvent.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/AbortTxnEvent.java new file mode 100644 index 0000000..062e719 --- /dev/null +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/AbortTxnEvent.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.events; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.hive.metastore.IHMSHandler; +import org.apache.hadoop.hive.metastore.tools.SQLGenerator; +import java.sql.Connection; + +/** + * AbortTxnEvent + * Event generated for roll backing a transaction + */ +@InterfaceAudience.Public +@InterfaceStability.Stable +public class AbortTxnEvent extends ListenerEvent { + + private final Long txnId; + Connection connection; + SQLGenerator sqlGenerator; + + /** + * + * @param transactionId Unique identification for the transaction that got rolledback. + * @param handler handler that is firing the event + */ + public AbortTxnEvent(Long transactionId, IHMSHandler handler) { + super(true, handler); + txnId = transactionId; + connection = null; + sqlGenerator = null; + } + + /** + * @param transactionId Unique identification for the transaction just got aborted. + * @param connection connection to execute direct SQL statement within same transaction + * @param sqlGenerator generates db specific SQL query + */ + public AbortTxnEvent(Long transactionId, Connection connection, SQLGenerator sqlGenerator) { + super(true, null); + this.txnId = transactionId; + this.connection = connection; + this.sqlGenerator = sqlGenerator; + } + + /** + * @return Long txnId + */ + public Long getTxnId() { + return txnId; + } + + /** + * @return Connection connection - used only by DbNotificationListener + */ + public Connection getConnection() { + return connection; + } + + /** + * @return SQLGenerator sqlGenerator - used only by DbNotificationListener + */ + public SQLGenerator getSqlGenerator() { + return sqlGenerator; + } +} http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/CommitTxnEvent.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/CommitTxnEvent.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/CommitTxnEvent.java new file mode 100644 index 0000000..7262e6b --- /dev/null +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/CommitTxnEvent.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.events; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.hive.metastore.IHMSHandler; +import org.apache.hadoop.hive.metastore.tools.SQLGenerator; +import java.sql.Connection; + +/** + * CommitTxnEvent + * Event generated for commit transaction operation + */ +@InterfaceAudience.Public +@InterfaceStability.Stable +public class CommitTxnEvent extends ListenerEvent { + + private final Long txnId; + Connection connection; + SQLGenerator sqlGenerator; + + /** + * + * @param transactionId Unique identification for the transaction just got committed. + * @param handler handler that is firing the event + */ + public CommitTxnEvent(Long transactionId, IHMSHandler handler) { + super(true, handler); + this.txnId = transactionId; + this.connection = null; + this.sqlGenerator = null; + } + + /** + * @param transactionId Unique identification for the transaction just got committed. + * @param connection connection to execute direct SQL statement within same transaction + * @param sqlGenerator generates db specific SQL query + */ + public CommitTxnEvent(Long transactionId, Connection connection, SQLGenerator sqlGenerator) { + super(true, null); + this.txnId = transactionId; + this.connection = connection; + this.sqlGenerator = sqlGenerator; + } + + /** + * @return Long txnId + */ + public Long getTxnId() { + return txnId; + } + + /** + * @return Connection connection - used only by DbNotificationListener + */ + public Connection getConnection() { + return connection; + } + + /** + * @return SQLGenerator sqlGenerator - used only by DbNotificationListener + */ + public SQLGenerator getSqlGenerator() { + return sqlGenerator; + } +} http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/ListenerEvent.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/ListenerEvent.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/ListenerEvent.java index 56eb9ed..b542afc 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/ListenerEvent.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/ListenerEvent.java @@ -23,8 +23,9 @@ import org.apache.hadoop.classification.InterfaceStability; import org.apache.hadoop.hive.metastore.HiveMetaStore; import org.apache.hadoop.hive.metastore.IHMSHandler; import org.apache.hadoop.hive.metastore.api.EnvironmentContext; - +import org.apache.hadoop.hive.metastore.tools.SQLGenerator; import javax.annotation.concurrent.NotThreadSafe; +import java.sql.Connection; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -162,6 +163,20 @@ public abstract class ListenerEvent { } /** + * Used by ACID/transaction related events for generating direct SQL in DBNotificationListener. + */ + public Connection getConnection() { + return null; + } + + /** + * Used by ACID/transaction related events for generating direct SQL in DBNotificationListener. + */ + public SQLGenerator getSqlGenerator() { + return null; + } + + /** * Put a parameter to the listener event only if the parameter is absent. * * Overridden parameters is not allowed, and an exception may be thrown to avoid a mis-configuration http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/OpenTxnEvent.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/OpenTxnEvent.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/OpenTxnEvent.java new file mode 100644 index 0000000..088a6a1 --- /dev/null +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/events/OpenTxnEvent.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.events; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.hive.metastore.IHMSHandler; +import com.google.common.collect.Lists; +import org.apache.hadoop.hive.metastore.tools.SQLGenerator; +import java.sql.Connection; +import java.util.List; + +/** + * OpenTxnEvent + * Event generated for open transaction event. + */ +@InterfaceAudience.Public +@InterfaceStability.Stable +public class OpenTxnEvent extends ListenerEvent { + private List<Long> txnIds; + Connection connection; + SQLGenerator sqlGenerator; + + /** + * @param txnIds List of unique identification for the transaction just opened. + * @param handler handler that is firing the event + */ + public OpenTxnEvent(List<Long> txnIds, IHMSHandler handler) { + super(true, handler); + this.txnIds = Lists.newArrayList(txnIds); + this.connection = null; + this.sqlGenerator = null; + } + + /** + * @param txnIds List of unique identification for the transaction just opened. + * @param connection connection to execute direct SQL statement within same transaction + * @param sqlGenerator generates db specific SQL query + */ + public OpenTxnEvent(List<Long> txnIds, Connection connection, SQLGenerator sqlGenerator) { + super(true, null); + this.txnIds = Lists.newArrayList(txnIds); + this.connection = connection; + this.sqlGenerator = sqlGenerator; + } + + /** + * @return List<Long> txnIds + */ + public List<Long> getTxnIds() { + return txnIds; + } + + /** + * @return Connection connection - used only by DbNotificationListener + */ + public Connection getConnection() { + return connection; + } + + /** + * @return SQLGenerator sqlGenerator - used only by DbNotificationListener + */ + public SQLGenerator getSqlGenerator() { + return sqlGenerator; + } +} http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/AbortTxnMessage.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/AbortTxnMessage.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/AbortTxnMessage.java new file mode 100644 index 0000000..1f75585 --- /dev/null +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/AbortTxnMessage.java @@ -0,0 +1,36 @@ +/* * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.messaging; + +/** + * HCat message sent when an abort transaction is done. + */ +public abstract class AbortTxnMessage extends EventMessage { + + protected AbortTxnMessage() { + super(EventType.ABORT_TXN); + } + + /** + * Get the transaction id to be aborted. + * + * @return The TxnId + */ + public abstract Long getTxnId(); + +} http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/CommitTxnMessage.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/CommitTxnMessage.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/CommitTxnMessage.java new file mode 100644 index 0000000..49004f2 --- /dev/null +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/CommitTxnMessage.java @@ -0,0 +1,36 @@ +/* * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.metastore.messaging; + +/** + * HCat message sent when an commit transaction is done. + */ +public abstract class CommitTxnMessage extends EventMessage { + + protected CommitTxnMessage() { + super(EventType.COMMIT_TXN); + } + + /** + * Get the transaction id to be committed. + * + * @return The TxnId + */ + public abstract Long getTxnId(); + +} http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/EventMessage.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/EventMessage.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/EventMessage.java index 3cbfa55..5137c86 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/EventMessage.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/EventMessage.java @@ -55,7 +55,10 @@ public abstract class EventMessage { ALTER_SCHEMA_VERSION(MessageFactory.ALTER_SCHEMA_VERSION_EVENT), DROP_SCHEMA_VERSION(MessageFactory.DROP_SCHEMA_VERSION_EVENT), CREATE_CATALOG(MessageFactory.CREATE_CATALOG_EVENT), - DROP_CATALOG(MessageFactory.DROP_CATALOG_EVENT); + DROP_CATALOG(MessageFactory.DROP_CATALOG_EVENT), + OPEN_TXN(MessageFactory.OPEN_TXN_EVENT), + COMMIT_TXN(MessageFactory.COMMIT_TXN_EVENT), + ABORT_TXN(MessageFactory.ABORT_TXN_EVENT); private String typeString; http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageDeserializer.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageDeserializer.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageDeserializer.java index 0fd4601..6583cc7 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageDeserializer.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageDeserializer.java @@ -64,6 +64,12 @@ public abstract class MessageDeserializer { return getAddNotNullConstraintMessage(messageBody); case DROP_CONSTRAINT: return getDropConstraintMessage(messageBody); + case OPEN_TXN: + return getOpenTxnMessage(messageBody); + case COMMIT_TXN: + return getCommitTxnMessage(messageBody); + case ABORT_TXN: + return getAbortTxnMessage(messageBody); default: throw new IllegalArgumentException("Unsupported event-type: " + eventTypeString); } @@ -160,6 +166,21 @@ public abstract class MessageDeserializer { */ public abstract DropConstraintMessage getDropConstraintMessage(String messageBody); + /** + * Method to de-serialize OpenTxnMessage instance. + */ + public abstract OpenTxnMessage getOpenTxnMessage(String messageBody); + + /** + * Method to de-serialize CommitTxnMessage instance. + */ + public abstract CommitTxnMessage getCommitTxnMessage(String messageBody); + + /** + * Method to de-serialize AbortTxnMessage instance. + */ + public abstract AbortTxnMessage getAbortTxnMessage(String messageBody); + // Protection against construction. protected MessageDeserializer() {} } http://git-wip-us.apache.org/repos/asf/hive/blob/59483bca/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageFactory.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageFactory.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageFactory.java index ab93f82..dc4420e 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageFactory.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/messaging/MessageFactory.java @@ -68,7 +68,9 @@ public abstract class MessageFactory { public static final String DROP_SCHEMA_VERSION_EVENT = "DROP_SCHEMA_VERSION"; public static final String CREATE_CATALOG_EVENT = "CREATE_CATALOG"; public static final String DROP_CATALOG_EVENT = "DROP_CATALOG"; - + public static final String OPEN_TXN_EVENT = "OPEN_TXN"; + public static final String COMMIT_TXN_EVENT = "COMMIT_TXN"; + public static final String ABORT_TXN_EVENT = "ABORT_TXN"; private static MessageFactory instance = null; @@ -238,6 +240,31 @@ public abstract class MessageFactory { public abstract InsertMessage buildInsertMessage(Table tableObj, Partition ptnObj, boolean replace, Iterator<String> files); + /** + * Factory method for building open txn message using start and end transaction range + * + * @param fromTxnId start transaction id (inclusive) + * @param toTxnId end transaction id (inclusive) + * @return instance of OpenTxnMessage + */ + public abstract OpenTxnMessage buildOpenTxnMessage(Long fromTxnId, Long toTxnId); + + /** + * Factory method for building commit txn message + * + * @param txnId Id of the transaction to be committed + * @return instance of CommitTxnMessage + */ + public abstract CommitTxnMessage buildCommitTxnMessage(Long txnId); + + /** + * Factory method for building abort txn message + * + * @param txnId Id of the transaction to be aborted + * @return instance of AbortTxnMessage + */ + public abstract AbortTxnMessage buildAbortTxnMessage(Long txnId); + /*** * Factory method for building add primary key message *