FAQ
Repository: hive
Updated Branches:
   refs/heads/llap 81b26df9e -> 2945c3b2d


http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/shims/common/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java
----------------------------------------------------------------------
diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java
index de39d3d..d6dc079 100644
--- a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java
+++ b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/DBTokenStore.java
@@ -33,13 +33,14 @@ import org.slf4j.LoggerFactory;

  public class DBTokenStore implements DelegationTokenStore {
    private static final Logger LOG = LoggerFactory.getLogger(DBTokenStore.class);
+ private Configuration conf;

    @Override
    public int addMasterKey(String s) throws TokenStoreException {
      if (LOG.isTraceEnabled()) {
        LOG.trace("addMasterKey: s = " + s);
      }
- return (Integer)invokeOnRawStore("addMasterKey", new Object[]{s},String.class);
+ return (Integer)invokeOnTokenStore("addMasterKey", new Object[]{s},String.class);
    }

    @Override
@@ -47,19 +48,19 @@ public class DBTokenStore implements DelegationTokenStore {
      if (LOG.isTraceEnabled()) {
        LOG.trace("updateMasterKey: s = " + s + ", keySeq = " + keySeq);
      }
- invokeOnRawStore("updateMasterKey", new Object[] {Integer.valueOf(keySeq), s},
+ invokeOnTokenStore("updateMasterKey", new Object[] {Integer.valueOf(keySeq), s},
          Integer.class, String.class);
    }

    @Override
    public boolean removeMasterKey(int keySeq) {
- return (Boolean)invokeOnRawStore("removeMasterKey", new Object[] {Integer.valueOf(keySeq)},
+ return (Boolean)invokeOnTokenStore("removeMasterKey", new Object[] {Integer.valueOf(keySeq)},
        Integer.class);
    }

    @Override
    public String[] getMasterKeys() throws TokenStoreException {
- return (String[])invokeOnRawStore("getMasterKeys", new Object[0]);
+ return (String[])invokeOnTokenStore("getMasterKeys", new Object[0]);
    }

    @Override
@@ -70,7 +71,7 @@ public class DBTokenStore implements DelegationTokenStore {
        String identifier = TokenStoreDelegationTokenSecretManager.encodeWritable(tokenIdentifier);
        String tokenStr = Base64.encodeBase64URLSafeString(
          HiveDelegationTokenSupport.encodeDelegationTokenInformation(token));
- boolean result = (Boolean)invokeOnRawStore("addToken", new Object[] {identifier, tokenStr},
+ boolean result = (Boolean)invokeOnTokenStore("addToken", new Object[] {identifier, tokenStr},
          String.class, String.class);
        if (LOG.isTraceEnabled()) {
          LOG.trace("addToken: tokenIdentifier = " + tokenIdentifier + ", added = " + result);
@@ -85,7 +86,7 @@ public class DBTokenStore implements DelegationTokenStore {
    public DelegationTokenInformation getToken(DelegationTokenIdentifier tokenIdentifier)
        throws TokenStoreException {
      try {
- String tokenStr = (String)invokeOnRawStore("getToken", new Object[] {
+ String tokenStr = (String)invokeOnTokenStore("getToken", new Object[] {
            TokenStoreDelegationTokenSecretManager.encodeWritable(tokenIdentifier)}, String.class);
        DelegationTokenInformation result = null;
        if (tokenStr != null) {
@@ -103,7 +104,7 @@ public class DBTokenStore implements DelegationTokenStore {
    @Override
    public boolean removeToken(DelegationTokenIdentifier tokenIdentifier) throws TokenStoreException{
      try {
- boolean result = (Boolean)invokeOnRawStore("removeToken", new Object[] {
+ boolean result = (Boolean)invokeOnTokenStore("removeToken", new Object[] {
          TokenStoreDelegationTokenSecretManager.encodeWritable(tokenIdentifier)}, String.class);
        if (LOG.isTraceEnabled()) {
          LOG.trace("removeToken: tokenIdentifier = " + tokenIdentifier + ", removed = " + result);
@@ -117,7 +118,7 @@ public class DBTokenStore implements DelegationTokenStore {
    @Override
    public List<DelegationTokenIdentifier> getAllDelegationTokenIdentifiers() throws TokenStoreException{

- List<String> tokenIdents = (List<String>)invokeOnRawStore("getAllTokenIdentifiers", new Object[0]);
+ List<String> tokenIdents = (List<String>)invokeOnTokenStore("getAllTokenIdentifiers", new Object[0]);
      List<DelegationTokenIdentifier> delTokenIdents = new ArrayList<DelegationTokenIdentifier>(tokenIdents.size());

      for (String tokenIdent : tokenIdents) {
@@ -132,19 +133,33 @@ public class DBTokenStore implements DelegationTokenStore {
      return delTokenIdents;
    }

- private Object hmsHandler;
+ private Object handler;
+ private ServerMode smode;

    @Override
- public void init(Object hms, ServerMode smode) throws TokenStoreException {
- this.hmsHandler = hms;
+ public void init(Object handler, ServerMode smode) throws TokenStoreException {
+ this.handler = handler;
+ this.smode = smode;
    }

- private Object invokeOnRawStore(String methName, Object[] params, Class<?> ... paramTypes)
+ private Object invokeOnTokenStore(String methName, Object[] params, Class<?> ... paramTypes)
        throws TokenStoreException{
-
+ Object tokenStore;
      try {
- Object rawStore = hmsHandler.getClass().getMethod("getMS").invoke(hmsHandler);
- return rawStore.getClass().getMethod(methName, paramTypes).invoke(rawStore, params);
+ switch (smode) {
+ case METASTORE :
+ tokenStore = handler.getClass().getMethod("getMS").invoke(handler);
+ break;
+ case HIVESERVER2 :
+ Object hiveObject = ((Class<?>)handler)
+ .getMethod("get", org.apache.hadoop.conf.Configuration.class, java.lang.Class.class)
+ .invoke(handler, conf, DBTokenStore.class);
+ tokenStore = ((Class<?>)handler).getMethod("getMSC").invoke(hiveObject);
+ break;
+ default:
+ throw new TokenStoreException(new Exception("unknown server mode"));
+ }
+ return tokenStore.getClass().getMethod(methName, paramTypes).invoke(tokenStore, params);
      } catch (IllegalArgumentException e) {
          throw new TokenStoreException(e);
      } catch (SecurityException e) {
@@ -160,12 +175,12 @@ public class DBTokenStore implements DelegationTokenStore {

    @Override
    public void setConf(Configuration conf) {
- // No-op
+ this.conf = conf;
    }

    @Override
    public Configuration getConf() {
- return null;
+ return conf;
    }

    @Override

http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HiveDelegationTokenManager.java
----------------------------------------------------------------------
diff --git a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HiveDelegationTokenManager.java b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HiveDelegationTokenManager.java
index 9ecb0ee..b3e4a76 100644
--- a/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HiveDelegationTokenManager.java
+++ b/shims/common/src/main/java/org/apache/hadoop/hive/thrift/HiveDelegationTokenManager.java
@@ -89,6 +89,7 @@ public class HiveDelegationTokenManager {
          conf.getLong(DELEGATION_TOKEN_GC_INTERVAL, DELEGATION_TOKEN_GC_INTERVAL_DEFAULT);

      DelegationTokenStore dts = getTokenStore(conf);
+ dts.setConf(conf);
      dts.init(hms, smode);
      secretManager =
          new TokenStoreDelegationTokenSecretManager(secretKeyInterval, tokenMaxLifetime,

Search Discussions

  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php b/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
    index a546247..05a0749 100644
    --- a/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
    +++ b/metastore/src/gen/thrift/gen-php/metastore/ThriftHiveMetastore.php
    @@ -956,6 +956,48 @@ interface ThriftHiveMetastoreIf extends \FacebookServiceIf {
         */
        public function cancel_delegation_token($token_str_form);
        /**
    + * @param string $token_identifier
    + * @param string $delegation_token
    + * @return bool
    + */
    + public function add_token($token_identifier, $delegation_token);
    + /**
    + * @param string $token_identifier
    + * @return bool
    + */
    + public function remove_token($token_identifier);
    + /**
    + * @param string $token_identifier
    + * @return string
    + */
    + public function get_token($token_identifier);
    + /**
    + * @return string[]
    + */
    + public function get_all_token_identifiers();
    + /**
    + * @param string $key
    + * @return int
    + * @throws \metastore\MetaException
    + */
    + public function add_master_key($key);
    + /**
    + * @param int $seq_number
    + * @param string $key
    + * @throws \metastore\NoSuchObjectException
    + * @throws \metastore\MetaException
    + */
    + public function update_master_key($seq_number, $key);
    + /**
    + * @param int $key_seq
    + * @return bool
    + */
    + public function remove_master_key($key_seq);
    + /**
    + * @return string[]
    + */
    + public function get_master_keys();
    + /**
         * @return \metastore\GetOpenTxnsResponse
         */
        public function get_open_txns();
    @@ -7561,6 +7603,420 @@ class ThriftHiveMetastoreClient extends \FacebookServiceClient implements \metas
          return;
        }

    + public function add_token($token_identifier, $delegation_token)
    + {
    + $this->send_add_token($token_identifier, $delegation_token);
    + return $this->recv_add_token();
    + }
    +
    + public function send_add_token($token_identifier, $delegation_token)
    + {
    + $args = new \metastore\ThriftHiveMetastore_add_token_args();
    + $args->token_identifier = $token_identifier;
    + $args->delegation_token = $delegation_token;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'add_token', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('add_token', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_add_token()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_add_token_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_add_token_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("add_token failed: unknown result");
    + }
    +
    + public function remove_token($token_identifier)
    + {
    + $this->send_remove_token($token_identifier);
    + return $this->recv_remove_token();
    + }
    +
    + public function send_remove_token($token_identifier)
    + {
    + $args = new \metastore\ThriftHiveMetastore_remove_token_args();
    + $args->token_identifier = $token_identifier;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'remove_token', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('remove_token', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_remove_token()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_remove_token_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_remove_token_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("remove_token failed: unknown result");
    + }
    +
    + public function get_token($token_identifier)
    + {
    + $this->send_get_token($token_identifier);
    + return $this->recv_get_token();
    + }
    +
    + public function send_get_token($token_identifier)
    + {
    + $args = new \metastore\ThriftHiveMetastore_get_token_args();
    + $args->token_identifier = $token_identifier;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'get_token', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('get_token', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_get_token()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_get_token_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_get_token_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("get_token failed: unknown result");
    + }
    +
    + public function get_all_token_identifiers()
    + {
    + $this->send_get_all_token_identifiers();
    + return $this->recv_get_all_token_identifiers();
    + }
    +
    + public function send_get_all_token_identifiers()
    + {
    + $args = new \metastore\ThriftHiveMetastore_get_all_token_identifiers_args();
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'get_all_token_identifiers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('get_all_token_identifiers', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_get_all_token_identifiers()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_get_all_token_identifiers_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_get_all_token_identifiers_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("get_all_token_identifiers failed: unknown result");
    + }
    +
    + public function add_master_key($key)
    + {
    + $this->send_add_master_key($key);
    + return $this->recv_add_master_key();
    + }
    +
    + public function send_add_master_key($key)
    + {
    + $args = new \metastore\ThriftHiveMetastore_add_master_key_args();
    + $args->key = $key;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'add_master_key', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('add_master_key', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_add_master_key()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_add_master_key_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_add_master_key_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + if ($result->o1 !== null) {
    + throw $result->o1;
    + }
    + throw new \Exception("add_master_key failed: unknown result");
    + }
    +
    + public function update_master_key($seq_number, $key)
    + {
    + $this->send_update_master_key($seq_number, $key);
    + $this->recv_update_master_key();
    + }
    +
    + public function send_update_master_key($seq_number, $key)
    + {
    + $args = new \metastore\ThriftHiveMetastore_update_master_key_args();
    + $args->seq_number = $seq_number;
    + $args->key = $key;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'update_master_key', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('update_master_key', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_update_master_key()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_update_master_key_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_update_master_key_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->o1 !== null) {
    + throw $result->o1;
    + }
    + if ($result->o2 !== null) {
    + throw $result->o2;
    + }
    + return;
    + }
    +
    + public function remove_master_key($key_seq)
    + {
    + $this->send_remove_master_key($key_seq);
    + return $this->recv_remove_master_key();
    + }
    +
    + public function send_remove_master_key($key_seq)
    + {
    + $args = new \metastore\ThriftHiveMetastore_remove_master_key_args();
    + $args->key_seq = $key_seq;
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'remove_master_key', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('remove_master_key', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_remove_master_key()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_remove_master_key_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_remove_master_key_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("remove_master_key failed: unknown result");
    + }
    +
    + public function get_master_keys()
    + {
    + $this->send_get_master_keys();
    + return $this->recv_get_master_keys();
    + }
    +
    + public function send_get_master_keys()
    + {
    + $args = new \metastore\ThriftHiveMetastore_get_master_keys_args();
    + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    + if ($bin_accel)
    + {
    + thrift_protocol_write_binary($this->output_, 'get_master_keys', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    + }
    + else
    + {
    + $this->output_->writeMessageBegin('get_master_keys', TMessageType::CALL, $this->seqid_);
    + $args->write($this->output_);
    + $this->output_->writeMessageEnd();
    + $this->output_->getTransport()->flush();
    + }
    + }
    +
    + public function recv_get_master_keys()
    + {
    + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\metastore\ThriftHiveMetastore_get_master_keys_result', $this->input_->isStrictRead());
    + else
    + {
    + $rseqid = 0;
    + $fname = null;
    + $mtype = 0;
    +
    + $this->input_->readMessageBegin($fname, $mtype, $rseqid);
    + if ($mtype == TMessageType::EXCEPTION) {
    + $x = new TApplicationException();
    + $x->read($this->input_);
    + $this->input_->readMessageEnd();
    + throw $x;
    + }
    + $result = new \metastore\ThriftHiveMetastore_get_master_keys_result();
    + $result->read($this->input_);
    + $this->input_->readMessageEnd();
    + }
    + if ($result->success !== null) {
    + return $result->success;
    + }
    + throw new \Exception("get_master_keys failed: unknown result");
    + }
    +
        public function get_open_txns()
        {
          $this->send_get_open_txns();
    @@ -36689,6 +37145,1306 @@ class ThriftHiveMetastore_cancel_delegation_token_result {

      }

    +class ThriftHiveMetastore_add_token_args {
    + static $_TSPEC;
    +
    + /**
    + * @var string
    + */
    + public $token_identifier = null;
    + /**
    + * @var string
    + */
    + public $delegation_token = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'token_identifier',
    + 'type' => TType::STRING,
    + ),
    + 2 => array(
    + 'var' => 'delegation_token',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['token_identifier'])) {
    + $this->token_identifier = $vals['token_identifier'];
    + }
    + if (isset($vals['delegation_token'])) {
    + $this->delegation_token = $vals['delegation_token'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_add_token_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->token_identifier);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + case 2:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->delegation_token);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_add_token_args');
    + if ($this->token_identifier !== null) {
    + $xfer += $output->writeFieldBegin('token_identifier', TType::STRING, 1);
    + $xfer += $output->writeString($this->token_identifier);
    + $xfer += $output->writeFieldEnd();
    + }
    + if ($this->delegation_token !== null) {
    + $xfer += $output->writeFieldBegin('delegation_token', TType::STRING, 2);
    + $xfer += $output->writeString($this->delegation_token);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_add_token_result {
    + static $_TSPEC;
    +
    + /**
    + * @var bool
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::BOOL,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_add_token_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::BOOL) {
    + $xfer += $input->readBool($this->success);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_add_token_result');
    + if ($this->success !== null) {
    + $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
    + $xfer += $output->writeBool($this->success);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_remove_token_args {
    + static $_TSPEC;
    +
    + /**
    + * @var string
    + */
    + public $token_identifier = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'token_identifier',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['token_identifier'])) {
    + $this->token_identifier = $vals['token_identifier'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_remove_token_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->token_identifier);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_remove_token_args');
    + if ($this->token_identifier !== null) {
    + $xfer += $output->writeFieldBegin('token_identifier', TType::STRING, 1);
    + $xfer += $output->writeString($this->token_identifier);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_remove_token_result {
    + static $_TSPEC;
    +
    + /**
    + * @var bool
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::BOOL,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_remove_token_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::BOOL) {
    + $xfer += $input->readBool($this->success);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_remove_token_result');
    + if ($this->success !== null) {
    + $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
    + $xfer += $output->writeBool($this->success);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_token_args {
    + static $_TSPEC;
    +
    + /**
    + * @var string
    + */
    + public $token_identifier = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'token_identifier',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['token_identifier'])) {
    + $this->token_identifier = $vals['token_identifier'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_token_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->token_identifier);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_token_args');
    + if ($this->token_identifier !== null) {
    + $xfer += $output->writeFieldBegin('token_identifier', TType::STRING, 1);
    + $xfer += $output->writeString($this->token_identifier);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_token_result {
    + static $_TSPEC;
    +
    + /**
    + * @var string
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_token_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->success);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_token_result');
    + if ($this->success !== null) {
    + $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
    + $xfer += $output->writeString($this->success);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_all_token_identifiers_args {
    + static $_TSPEC;
    +
    +
    + public function __construct() {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + );
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_all_token_identifiers_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_all_token_identifiers_args');
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_all_token_identifiers_result {
    + static $_TSPEC;
    +
    + /**
    + * @var string[]
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::LST,
    + 'etype' => TType::STRING,
    + 'elem' => array(
    + 'type' => TType::STRING,
    + ),
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_all_token_identifiers_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::LST) {
    + $this->success = array();
    + $_size950 = 0;
    + $_etype953 = 0;
    + $xfer += $input->readListBegin($_etype953, $_size950);
    + for ($_i954 = 0; $_i954 < $_size950; ++$_i954)
    + {
    + $elem955 = null;
    + $xfer += $input->readString($elem955);
    + $this->success []= $elem955;
    + }
    + $xfer += $input->readListEnd();
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_all_token_identifiers_result');
    + if ($this->success !== null) {
    + if (!is_array($this->success)) {
    + throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
    + }
    + $xfer += $output->writeFieldBegin('success', TType::LST, 0);
    + {
    + $output->writeListBegin(TType::STRING, count($this->success));
    + {
    + foreach ($this->success as $iter956)
    + {
    + $xfer += $output->writeString($iter956);
    + }
    + }
    + $output->writeListEnd();
    + }
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_add_master_key_args {
    + static $_TSPEC;
    +
    + /**
    + * @var string
    + */
    + public $key = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'key',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['key'])) {
    + $this->key = $vals['key'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_add_master_key_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->key);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_add_master_key_args');
    + if ($this->key !== null) {
    + $xfer += $output->writeFieldBegin('key', TType::STRING, 1);
    + $xfer += $output->writeString($this->key);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_add_master_key_result {
    + static $_TSPEC;
    +
    + /**
    + * @var int
    + */
    + public $success = null;
    + /**
    + * @var \metastore\MetaException
    + */
    + public $o1 = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::I32,
    + ),
    + 1 => array(
    + 'var' => 'o1',
    + 'type' => TType::STRUCT,
    + 'class' => '\metastore\MetaException',
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + if (isset($vals['o1'])) {
    + $this->o1 = $vals['o1'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_add_master_key_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::I32) {
    + $xfer += $input->readI32($this->success);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + case 1:
    + if ($ftype == TType::STRUCT) {
    + $this->o1 = new \metastore\MetaException();
    + $xfer += $this->o1->read($input);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_add_master_key_result');
    + if ($this->success !== null) {
    + $xfer += $output->writeFieldBegin('success', TType::I32, 0);
    + $xfer += $output->writeI32($this->success);
    + $xfer += $output->writeFieldEnd();
    + }
    + if ($this->o1 !== null) {
    + $xfer += $output->writeFieldBegin('o1', TType::STRUCT, 1);
    + $xfer += $this->o1->write($output);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_update_master_key_args {
    + static $_TSPEC;
    +
    + /**
    + * @var int
    + */
    + public $seq_number = null;
    + /**
    + * @var string
    + */
    + public $key = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'seq_number',
    + 'type' => TType::I32,
    + ),
    + 2 => array(
    + 'var' => 'key',
    + 'type' => TType::STRING,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['seq_number'])) {
    + $this->seq_number = $vals['seq_number'];
    + }
    + if (isset($vals['key'])) {
    + $this->key = $vals['key'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_update_master_key_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::I32) {
    + $xfer += $input->readI32($this->seq_number);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + case 2:
    + if ($ftype == TType::STRING) {
    + $xfer += $input->readString($this->key);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_update_master_key_args');
    + if ($this->seq_number !== null) {
    + $xfer += $output->writeFieldBegin('seq_number', TType::I32, 1);
    + $xfer += $output->writeI32($this->seq_number);
    + $xfer += $output->writeFieldEnd();
    + }
    + if ($this->key !== null) {
    + $xfer += $output->writeFieldBegin('key', TType::STRING, 2);
    + $xfer += $output->writeString($this->key);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_update_master_key_result {
    + static $_TSPEC;
    +
    + /**
    + * @var \metastore\NoSuchObjectException
    + */
    + public $o1 = null;
    + /**
    + * @var \metastore\MetaException
    + */
    + public $o2 = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'o1',
    + 'type' => TType::STRUCT,
    + 'class' => '\metastore\NoSuchObjectException',
    + ),
    + 2 => array(
    + 'var' => 'o2',
    + 'type' => TType::STRUCT,
    + 'class' => '\metastore\MetaException',
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['o1'])) {
    + $this->o1 = $vals['o1'];
    + }
    + if (isset($vals['o2'])) {
    + $this->o2 = $vals['o2'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_update_master_key_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::STRUCT) {
    + $this->o1 = new \metastore\NoSuchObjectException();
    + $xfer += $this->o1->read($input);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + case 2:
    + if ($ftype == TType::STRUCT) {
    + $this->o2 = new \metastore\MetaException();
    + $xfer += $this->o2->read($input);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_update_master_key_result');
    + if ($this->o1 !== null) {
    + $xfer += $output->writeFieldBegin('o1', TType::STRUCT, 1);
    + $xfer += $this->o1->write($output);
    + $xfer += $output->writeFieldEnd();
    + }
    + if ($this->o2 !== null) {
    + $xfer += $output->writeFieldBegin('o2', TType::STRUCT, 2);
    + $xfer += $this->o2->write($output);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_remove_master_key_args {
    + static $_TSPEC;
    +
    + /**
    + * @var int
    + */
    + public $key_seq = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 1 => array(
    + 'var' => 'key_seq',
    + 'type' => TType::I32,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['key_seq'])) {
    + $this->key_seq = $vals['key_seq'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_remove_master_key_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 1:
    + if ($ftype == TType::I32) {
    + $xfer += $input->readI32($this->key_seq);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_remove_master_key_args');
    + if ($this->key_seq !== null) {
    + $xfer += $output->writeFieldBegin('key_seq', TType::I32, 1);
    + $xfer += $output->writeI32($this->key_seq);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_remove_master_key_result {
    + static $_TSPEC;
    +
    + /**
    + * @var bool
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::BOOL,
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_remove_master_key_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::BOOL) {
    + $xfer += $input->readBool($this->success);
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_remove_master_key_result');
    + if ($this->success !== null) {
    + $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
    + $xfer += $output->writeBool($this->success);
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_master_keys_args {
    + static $_TSPEC;
    +
    +
    + public function __construct() {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + );
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_master_keys_args';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_master_keys_args');
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
    +class ThriftHiveMetastore_get_master_keys_result {
    + static $_TSPEC;
    +
    + /**
    + * @var string[]
    + */
    + public $success = null;
    +
    + public function __construct($vals=null) {
    + if (!isset(self::$_TSPEC)) {
    + self::$_TSPEC = array(
    + 0 => array(
    + 'var' => 'success',
    + 'type' => TType::LST,
    + 'etype' => TType::STRING,
    + 'elem' => array(
    + 'type' => TType::STRING,
    + ),
    + ),
    + );
    + }
    + if (is_array($vals)) {
    + if (isset($vals['success'])) {
    + $this->success = $vals['success'];
    + }
    + }
    + }
    +
    + public function getName() {
    + return 'ThriftHiveMetastore_get_master_keys_result';
    + }
    +
    + public function read($input)
    + {
    + $xfer = 0;
    + $fname = null;
    + $ftype = 0;
    + $fid = 0;
    + $xfer += $input->readStructBegin($fname);
    + while (true)
    + {
    + $xfer += $input->readFieldBegin($fname, $ftype, $fid);
    + if ($ftype == TType::STOP) {
    + break;
    + }
    + switch ($fid)
    + {
    + case 0:
    + if ($ftype == TType::LST) {
    + $this->success = array();
    + $_size957 = 0;
    + $_etype960 = 0;
    + $xfer += $input->readListBegin($_etype960, $_size957);
    + for ($_i961 = 0; $_i961 < $_size957; ++$_i961)
    + {
    + $elem962 = null;
    + $xfer += $input->readString($elem962);
    + $this->success []= $elem962;
    + }
    + $xfer += $input->readListEnd();
    + } else {
    + $xfer += $input->skip($ftype);
    + }
    + break;
    + default:
    + $xfer += $input->skip($ftype);
    + break;
    + }
    + $xfer += $input->readFieldEnd();
    + }
    + $xfer += $input->readStructEnd();
    + return $xfer;
    + }
    +
    + public function write($output) {
    + $xfer = 0;
    + $xfer += $output->writeStructBegin('ThriftHiveMetastore_get_master_keys_result');
    + if ($this->success !== null) {
    + if (!is_array($this->success)) {
    + throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
    + }
    + $xfer += $output->writeFieldBegin('success', TType::LST, 0);
    + {
    + $output->writeListBegin(TType::STRING, count($this->success));
    + {
    + foreach ($this->success as $iter963)
    + {
    + $xfer += $output->writeString($iter963);
    + }
    + }
    + $output->writeListEnd();
    + }
    + $xfer += $output->writeFieldEnd();
    + }
    + $xfer += $output->writeFieldStop();
    + $xfer += $output->writeStructEnd();
    + return $xfer;
    + }
    +
    +}
    +
      class ThriftHiveMetastore_get_open_txns_args {
        static $_TSPEC;


    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote
    index 9a53d56..516b926 100755
    --- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote
    +++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore-remote
    @@ -135,6 +135,14 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help':
        print(' string get_delegation_token(string token_owner, string renewer_kerberos_principal_name)')
        print(' i64 renew_delegation_token(string token_str_form)')
        print(' void cancel_delegation_token(string token_str_form)')
    + print(' bool add_token(string token_identifier, string delegation_token)')
    + print(' bool remove_token(string token_identifier)')
    + print(' string get_token(string token_identifier)')
    + print(' get_all_token_identifiers()')
    + print(' i32 add_master_key(string key)')
    + print(' void update_master_key(i32 seq_number, string key)')
    + print(' bool remove_master_key(i32 key_seq)')
    + print(' get_master_keys()')
        print(' GetOpenTxnsResponse get_open_txns()')
        print(' GetOpenTxnsInfoResponse get_open_txns_info()')
        print(' OpenTxnsResponse open_txns(OpenTxnRequest rqst)')
    @@ -894,6 +902,54 @@ elif cmd == 'cancel_delegation_token':
          sys.exit(1)
        pp.pprint(client.cancel_delegation_token(args[0],))

    +elif cmd == 'add_token':
    + if len(args) != 2:
    + print('add_token requires 2 args')
    + sys.exit(1)
    + pp.pprint(client.add_token(args[0],args[1],))
    +
    +elif cmd == 'remove_token':
    + if len(args) != 1:
    + print('remove_token requires 1 args')
    + sys.exit(1)
    + pp.pprint(client.remove_token(args[0],))
    +
    +elif cmd == 'get_token':
    + if len(args) != 1:
    + print('get_token requires 1 args')
    + sys.exit(1)
    + pp.pprint(client.get_token(args[0],))
    +
    +elif cmd == 'get_all_token_identifiers':
    + if len(args) != 0:
    + print('get_all_token_identifiers requires 0 args')
    + sys.exit(1)
    + pp.pprint(client.get_all_token_identifiers())
    +
    +elif cmd == 'add_master_key':
    + if len(args) != 1:
    + print('add_master_key requires 1 args')
    + sys.exit(1)
    + pp.pprint(client.add_master_key(args[0],))
    +
    +elif cmd == 'update_master_key':
    + if len(args) != 2:
    + print('update_master_key requires 2 args')
    + sys.exit(1)
    + pp.pprint(client.update_master_key(eval(args[0]),args[1],))
    +
    +elif cmd == 'remove_master_key':
    + if len(args) != 1:
    + print('remove_master_key requires 1 args')
    + sys.exit(1)
    + pp.pprint(client.remove_master_key(eval(args[0]),))
    +
    +elif cmd == 'get_master_keys':
    + if len(args) != 0:
    + print('get_master_keys requires 0 args')
    + sys.exit(1)
    + pp.pprint(client.get_master_keys())
    +
      elif cmd == 'get_open_txns':
        if len(args) != 0:
          print('get_open_txns requires 0 args')
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13222: Move rc-file-v0.rc used on TestRCFile.java to src/test/resources (Sergio Pena, reviewed by Szehon Ho)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/61b66449
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/61b66449
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/61b66449

    Branch: refs/heads/llap
    Commit: 61b66449b12ce48fbdfcea696e9a0bdbaa6c4290
    Parents: 415373b
    Author: Sergio Pena <sergio.pena@cloudera.com>
    Authored: Wed Mar 9 09:50:09 2016 -0600
    Committer: Sergio Pena <sergio.pena@cloudera.com>
    Committed: Wed Mar 9 09:50:09 2016 -0600

    ----------------------------------------------------------------------
      ql/src/test/data/rc-file-v0.rc | Bin 216 -> 0 bytes
      .../org/apache/hadoop/hive/ql/io/TestRCFile.java | 3 ++-
      ql/src/test/resources/rc-file-v0.rc | Bin 0 -> 216 bytes
      3 files changed, 2 insertions(+), 1 deletion(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/61b66449/ql/src/test/data/rc-file-v0.rc
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/data/rc-file-v0.rc b/ql/src/test/data/rc-file-v0.rc
    deleted file mode 100644
    index 767d83e..0000000
    Binary files a/ql/src/test/data/rc-file-v0.rc and /dev/null differ

    http://git-wip-us.apache.org/repos/asf/hive/blob/61b66449/ql/src/test/org/apache/hadoop/hive/ql/io/TestRCFile.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/TestRCFile.java b/ql/src/test/org/apache/hadoop/hive/ql/io/TestRCFile.java
    index 2914194..19b97e4 100644
    --- a/ql/src/test/org/apache/hadoop/hive/ql/io/TestRCFile.java
    +++ b/ql/src/test/org/apache/hadoop/hive/ql/io/TestRCFile.java
    @@ -70,6 +70,7 @@ import org.apache.hadoop.mapred.InputSplit;
      import org.apache.hadoop.mapred.JobConf;
      import org.apache.hadoop.mapred.RecordReader;
      import org.apache.hadoop.mapred.Reporter;
    +import org.apache.hive.common.util.HiveTestUtils;
      import org.junit.After;
      import org.junit.Before;
      import org.junit.Test;
    @@ -391,7 +392,7 @@ public class TestRCFile {
          String[] row = new String[]{"Tester", "Bart", "333 X St.", "Reno", "NV",
                                      "USA"};
          RCFile.Reader reader =
    - new RCFile.Reader(fs, new Path("src/test/data/rc-file-v0.rc"), conf);
    + new RCFile.Reader(fs, new Path(HiveTestUtils.getFileFromClasspath("rc-file-v0.rc")), conf);
          LongWritable rowID = new LongWritable();
          BytesRefArrayWritable cols = new BytesRefArrayWritable();
          assertTrue("old file reader first row", reader.next(rowID));

    http://git-wip-us.apache.org/repos/asf/hive/blob/61b66449/ql/src/test/resources/rc-file-v0.rc
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/resources/rc-file-v0.rc b/ql/src/test/resources/rc-file-v0.rc
    new file mode 100644
    index 0000000..767d83e
    Binary files /dev/null and b/ql/src/test/resources/rc-file-v0.rc differ
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/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 0da1acf..ac8d8a4 100644
    --- a/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
    +++ b/metastore/src/gen/thrift/gen-py/hive_metastore/ThriftHiveMetastore.py
    @@ -954,6 +954,56 @@ class Iface(fb303.FacebookService.Iface):
          """
          pass

    + def add_token(self, token_identifier, delegation_token):
    + """
    + Parameters:
    + - token_identifier
    + - delegation_token
    + """
    + pass
    +
    + def remove_token(self, token_identifier):
    + """
    + Parameters:
    + - token_identifier
    + """
    + pass
    +
    + def get_token(self, token_identifier):
    + """
    + Parameters:
    + - token_identifier
    + """
    + pass
    +
    + def get_all_token_identifiers(self):
    + pass
    +
    + def add_master_key(self, key):
    + """
    + Parameters:
    + - key
    + """
    + pass
    +
    + def update_master_key(self, seq_number, key):
    + """
    + Parameters:
    + - seq_number
    + - key
    + """
    + pass
    +
    + def remove_master_key(self, key_seq):
    + """
    + Parameters:
    + - key_seq
    + """
    + pass
    +
    + def get_master_keys(self):
    + pass
    +
        def get_open_txns(self):
          pass

    @@ -5306,6 +5356,252 @@ class Client(fb303.FacebookService.Client, Iface):
            raise result.o1
          return

    + def add_token(self, token_identifier, delegation_token):
    + """
    + Parameters:
    + - token_identifier
    + - delegation_token
    + """
    + self.send_add_token(token_identifier, delegation_token)
    + return self.recv_add_token()
    +
    + def send_add_token(self, token_identifier, delegation_token):
    + self._oprot.writeMessageBegin('add_token', TMessageType.CALL, self._seqid)
    + args = add_token_args()
    + args.token_identifier = token_identifier
    + args.delegation_token = delegation_token
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_add_token(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = add_token_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "add_token failed: unknown result")
    +
    + def remove_token(self, token_identifier):
    + """
    + Parameters:
    + - token_identifier
    + """
    + self.send_remove_token(token_identifier)
    + return self.recv_remove_token()
    +
    + def send_remove_token(self, token_identifier):
    + self._oprot.writeMessageBegin('remove_token', TMessageType.CALL, self._seqid)
    + args = remove_token_args()
    + args.token_identifier = token_identifier
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_remove_token(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = remove_token_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "remove_token failed: unknown result")
    +
    + def get_token(self, token_identifier):
    + """
    + Parameters:
    + - token_identifier
    + """
    + self.send_get_token(token_identifier)
    + return self.recv_get_token()
    +
    + def send_get_token(self, token_identifier):
    + self._oprot.writeMessageBegin('get_token', TMessageType.CALL, self._seqid)
    + args = get_token_args()
    + args.token_identifier = token_identifier
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_get_token(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = get_token_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_token failed: unknown result")
    +
    + def get_all_token_identifiers(self):
    + self.send_get_all_token_identifiers()
    + return self.recv_get_all_token_identifiers()
    +
    + def send_get_all_token_identifiers(self):
    + self._oprot.writeMessageBegin('get_all_token_identifiers', TMessageType.CALL, self._seqid)
    + args = get_all_token_identifiers_args()
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_get_all_token_identifiers(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = get_all_token_identifiers_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_all_token_identifiers failed: unknown result")
    +
    + def add_master_key(self, key):
    + """
    + Parameters:
    + - key
    + """
    + self.send_add_master_key(key)
    + return self.recv_add_master_key()
    +
    + def send_add_master_key(self, key):
    + self._oprot.writeMessageBegin('add_master_key', TMessageType.CALL, self._seqid)
    + args = add_master_key_args()
    + args.key = key
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_add_master_key(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = add_master_key_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + if result.o1 is not None:
    + raise result.o1
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "add_master_key failed: unknown result")
    +
    + def update_master_key(self, seq_number, key):
    + """
    + Parameters:
    + - seq_number
    + - key
    + """
    + self.send_update_master_key(seq_number, key)
    + self.recv_update_master_key()
    +
    + def send_update_master_key(self, seq_number, key):
    + self._oprot.writeMessageBegin('update_master_key', TMessageType.CALL, self._seqid)
    + args = update_master_key_args()
    + args.seq_number = seq_number
    + args.key = key
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_update_master_key(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = update_master_key_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.o1 is not None:
    + raise result.o1
    + if result.o2 is not None:
    + raise result.o2
    + return
    +
    + def remove_master_key(self, key_seq):
    + """
    + Parameters:
    + - key_seq
    + """
    + self.send_remove_master_key(key_seq)
    + return self.recv_remove_master_key()
    +
    + def send_remove_master_key(self, key_seq):
    + self._oprot.writeMessageBegin('remove_master_key', TMessageType.CALL, self._seqid)
    + args = remove_master_key_args()
    + args.key_seq = key_seq
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_remove_master_key(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = remove_master_key_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "remove_master_key failed: unknown result")
    +
    + def get_master_keys(self):
    + self.send_get_master_keys()
    + return self.recv_get_master_keys()
    +
    + def send_get_master_keys(self):
    + self._oprot.writeMessageBegin('get_master_keys', TMessageType.CALL, self._seqid)
    + args = get_master_keys_args()
    + args.write(self._oprot)
    + self._oprot.writeMessageEnd()
    + self._oprot.trans.flush()
    +
    + def recv_get_master_keys(self):
    + iprot = self._iprot
    + (fname, mtype, rseqid) = iprot.readMessageBegin()
    + if mtype == TMessageType.EXCEPTION:
    + x = TApplicationException()
    + x.read(iprot)
    + iprot.readMessageEnd()
    + raise x
    + result = get_master_keys_result()
    + result.read(iprot)
    + iprot.readMessageEnd()
    + if result.success is not None:
    + return result.success
    + raise TApplicationException(TApplicationException.MISSING_RESULT, "get_master_keys failed: unknown result")
    +
        def get_open_txns(self):
          self.send_get_open_txns()
          return self.recv_get_open_txns()
    @@ -6161,6 +6457,14 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor):
          self._processMap["get_delegation_token"] = Processor.process_get_delegation_token
          self._processMap["renew_delegation_token"] = Processor.process_renew_delegation_token
          self._processMap["cancel_delegation_token"] = Processor.process_cancel_delegation_token
    + self._processMap["add_token"] = Processor.process_add_token
    + self._processMap["remove_token"] = Processor.process_remove_token
    + self._processMap["get_token"] = Processor.process_get_token
    + self._processMap["get_all_token_identifiers"] = Processor.process_get_all_token_identifiers
    + self._processMap["add_master_key"] = Processor.process_add_master_key
    + self._processMap["update_master_key"] = Processor.process_update_master_key
    + self._processMap["remove_master_key"] = Processor.process_remove_master_key
    + self._processMap["get_master_keys"] = Processor.process_get_master_keys
          self._processMap["get_open_txns"] = Processor.process_get_open_txns
          self._processMap["get_open_txns_info"] = Processor.process_get_open_txns_info
          self._processMap["open_txns"] = Processor.process_open_txns
    @@ -9027,13 +9331,13 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor):
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_get_open_txns(self, seqid, iprot, oprot):
    - args = get_open_txns_args()
    + def process_add_token(self, seqid, iprot, oprot):
    + args = add_token_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = get_open_txns_result()
    + result = add_token_result()
          try:
    - result.success = self._handler.get_open_txns()
    + result.success = self._handler.add_token(args.token_identifier, args.delegation_token)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    @@ -9041,18 +9345,18 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor):
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("get_open_txns", msg_type, seqid)
    + oprot.writeMessageBegin("add_token", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_get_open_txns_info(self, seqid, iprot, oprot):
    - args = get_open_txns_info_args()
    + def process_remove_token(self, seqid, iprot, oprot):
    + args = remove_token_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = get_open_txns_info_result()
    + result = remove_token_result()
          try:
    - result.success = self._handler.get_open_txns_info()
    + result.success = self._handler.remove_token(args.token_identifier)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    @@ -9060,18 +9364,18 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor):
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("get_open_txns_info", msg_type, seqid)
    + oprot.writeMessageBegin("remove_token", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_open_txns(self, seqid, iprot, oprot):
    - args = open_txns_args()
    + def process_get_token(self, seqid, iprot, oprot):
    + args = get_token_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = open_txns_result()
    + result = get_token_result()
          try:
    - result.success = self._handler.open_txns(args.rqst)
    + result.success = self._handler.get_token(args.token_identifier)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    @@ -9079,112 +9383,273 @@ class Processor(fb303.FacebookService.Processor, Iface, TProcessor):
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("open_txns", msg_type, seqid)
    + oprot.writeMessageBegin("get_token", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_abort_txn(self, seqid, iprot, oprot):
    - args = abort_txn_args()
    + def process_get_all_token_identifiers(self, seqid, iprot, oprot):
    + args = get_all_token_identifiers_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = abort_txn_result()
    + result = get_all_token_identifiers_result()
          try:
    - self._handler.abort_txn(args.rqst)
    + result.success = self._handler.get_all_token_identifiers()
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    - except NoSuchTxnException as o1:
    - msg_type = TMessageType.REPLY
    - result.o1 = o1
          except Exception as ex:
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("abort_txn", msg_type, seqid)
    + oprot.writeMessageBegin("get_all_token_identifiers", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_commit_txn(self, seqid, iprot, oprot):
    - args = commit_txn_args()
    + def process_add_master_key(self, seqid, iprot, oprot):
    + args = add_master_key_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = commit_txn_result()
    + result = add_master_key_result()
          try:
    - self._handler.commit_txn(args.rqst)
    + result.success = self._handler.add_master_key(args.key)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    - except NoSuchTxnException as o1:
    + except MetaException as o1:
            msg_type = TMessageType.REPLY
            result.o1 = o1
    - except TxnAbortedException as o2:
    - msg_type = TMessageType.REPLY
    - result.o2 = o2
          except Exception as ex:
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("commit_txn", msg_type, seqid)
    + oprot.writeMessageBegin("add_master_key", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_lock(self, seqid, iprot, oprot):
    - args = lock_args()
    + def process_update_master_key(self, seqid, iprot, oprot):
    + args = update_master_key_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = lock_result()
    + result = update_master_key_result()
          try:
    - result.success = self._handler.lock(args.rqst)
    + self._handler.update_master_key(args.seq_number, args.key)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    - except NoSuchTxnException as o1:
    + except NoSuchObjectException as o1:
            msg_type = TMessageType.REPLY
            result.o1 = o1
    - except TxnAbortedException as o2:
    + except MetaException as o2:
            msg_type = TMessageType.REPLY
            result.o2 = o2
          except Exception as ex:
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("lock", msg_type, seqid)
    + oprot.writeMessageBegin("update_master_key", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_check_lock(self, seqid, iprot, oprot):
    - args = check_lock_args()
    + def process_remove_master_key(self, seqid, iprot, oprot):
    + args = remove_master_key_args()
          args.read(iprot)
          iprot.readMessageEnd()
    - result = check_lock_result()
    + result = remove_master_key_result()
          try:
    - result.success = self._handler.check_lock(args.rqst)
    + result.success = self._handler.remove_master_key(args.key_seq)
            msg_type = TMessageType.REPLY
          except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
            raise
    - except NoSuchTxnException as o1:
    - msg_type = TMessageType.REPLY
    - result.o1 = o1
    - except TxnAbortedException as o2:
    - msg_type = TMessageType.REPLY
    - result.o2 = o2
    - except NoSuchLockException as o3:
    - msg_type = TMessageType.REPLY
    - result.o3 = o3
          except Exception as ex:
            msg_type = TMessageType.EXCEPTION
            logging.exception(ex)
            result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    - oprot.writeMessageBegin("check_lock", msg_type, seqid)
    + oprot.writeMessageBegin("remove_master_key", msg_type, seqid)
          result.write(oprot)
          oprot.writeMessageEnd()
          oprot.trans.flush()

    - def process_unlock(self, seqid, iprot, oprot):
    + def process_get_master_keys(self, seqid, iprot, oprot):
    + args = get_master_keys_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = get_master_keys_result()
    + try:
    + result.success = self._handler.get_master_keys()
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("get_master_keys", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_get_open_txns(self, seqid, iprot, oprot):
    + args = get_open_txns_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = get_open_txns_result()
    + try:
    + result.success = self._handler.get_open_txns()
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("get_open_txns", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_get_open_txns_info(self, seqid, iprot, oprot):
    + args = get_open_txns_info_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = get_open_txns_info_result()
    + try:
    + result.success = self._handler.get_open_txns_info()
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("get_open_txns_info", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_open_txns(self, seqid, iprot, oprot):
    + args = open_txns_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = open_txns_result()
    + try:
    + result.success = self._handler.open_txns(args.rqst)
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("open_txns", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_abort_txn(self, seqid, iprot, oprot):
    + args = abort_txn_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = abort_txn_result()
    + try:
    + self._handler.abort_txn(args.rqst)
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except NoSuchTxnException as o1:
    + msg_type = TMessageType.REPLY
    + result.o1 = o1
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("abort_txn", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_commit_txn(self, seqid, iprot, oprot):
    + args = commit_txn_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = commit_txn_result()
    + try:
    + self._handler.commit_txn(args.rqst)
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except NoSuchTxnException as o1:
    + msg_type = TMessageType.REPLY
    + result.o1 = o1
    + except TxnAbortedException as o2:
    + msg_type = TMessageType.REPLY
    + result.o2 = o2
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("commit_txn", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_lock(self, seqid, iprot, oprot):
    + args = lock_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = lock_result()
    + try:
    + result.success = self._handler.lock(args.rqst)
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except NoSuchTxnException as o1:
    + msg_type = TMessageType.REPLY
    + result.o1 = o1
    + except TxnAbortedException as o2:
    + msg_type = TMessageType.REPLY
    + result.o2 = o2
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("lock", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_check_lock(self, seqid, iprot, oprot):
    + args = check_lock_args()
    + args.read(iprot)
    + iprot.readMessageEnd()
    + result = check_lock_result()
    + try:
    + result.success = self._handler.check_lock(args.rqst)
    + msg_type = TMessageType.REPLY
    + except (TTransport.TTransportException, KeyboardInterrupt, SystemExit):
    + raise
    + except NoSuchTxnException as o1:
    + msg_type = TMessageType.REPLY
    + result.o1 = o1
    + except TxnAbortedException as o2:
    + msg_type = TMessageType.REPLY
    + result.o2 = o2
    + except NoSuchLockException as o3:
    + msg_type = TMessageType.REPLY
    + result.o3 = o3
    + except Exception as ex:
    + msg_type = TMessageType.EXCEPTION
    + logging.exception(ex)
    + result = TApplicationException(TApplicationException.INTERNAL_ERROR, 'Internal error')
    + oprot.writeMessageBegin("check_lock", msg_type, seqid)
    + result.write(oprot)
    + oprot.writeMessageEnd()
    + oprot.trans.flush()
    +
    + def process_unlock(self, seqid, iprot, oprot):
          args = unlock_args()
          args.read(iprot)
          iprot.readMessageEnd()
    @@ -29618,6 +30083,1072 @@ class cancel_delegation_token_result:
        def __ne__(self, other):
          return not (self == other)

    +class add_token_args:
    + """
    + Attributes:
    + - token_identifier
    + - delegation_token
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.STRING, 'token_identifier', None, None, ), # 1
    + (2, TType.STRING, 'delegation_token', None, None, ), # 2
    + )
    +
    + def __init__(self, token_identifier=None, delegation_token=None,):
    + self.token_identifier = token_identifier
    + self.delegation_token = delegation_token
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 1:
    + if ftype == TType.STRING:
    + self.token_identifier = iprot.readString()
    + else:
    + iprot.skip(ftype)
    + elif fid == 2:
    + if ftype == TType.STRING:
    + self.delegation_token = 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('add_token_args')
    + if self.token_identifier is not None:
    + oprot.writeFieldBegin('token_identifier', TType.STRING, 1)
    + oprot.writeString(self.token_identifier)
    + oprot.writeFieldEnd()
    + if self.delegation_token is not None:
    + oprot.writeFieldBegin('delegation_token', TType.STRING, 2)
    + oprot.writeString(self.delegation_token)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.token_identifier)
    + value = (value * 31) ^ hash(self.delegation_token)
    + 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 add_token_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.BOOL, 'success', None, None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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.BOOL:
    + self.success = iprot.readBool()
    + 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('add_token_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.BOOL, 0)
    + oprot.writeBool(self.success)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + 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 remove_token_args:
    + """
    + Attributes:
    + - token_identifier
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.STRING, 'token_identifier', None, None, ), # 1
    + )
    +
    + def __init__(self, token_identifier=None,):
    + self.token_identifier = token_identifier
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 1:
    + if ftype == TType.STRING:
    + self.token_identifier = 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('remove_token_args')
    + if self.token_identifier is not None:
    + oprot.writeFieldBegin('token_identifier', TType.STRING, 1)
    + oprot.writeString(self.token_identifier)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.token_identifier)
    + 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 remove_token_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.BOOL, 'success', None, None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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.BOOL:
    + self.success = iprot.readBool()
    + 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('remove_token_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.BOOL, 0)
    + oprot.writeBool(self.success)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + 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_token_args:
    + """
    + Attributes:
    + - token_identifier
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.STRING, 'token_identifier', None, None, ), # 1
    + )
    +
    + def __init__(self, token_identifier=None,):
    + self.token_identifier = token_identifier
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 1:
    + if ftype == TType.STRING:
    + self.token_identifier = 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('get_token_args')
    + if self.token_identifier is not None:
    + oprot.writeFieldBegin('token_identifier', TType.STRING, 1)
    + oprot.writeString(self.token_identifier)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.token_identifier)
    + 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_token_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.STRING, 'success', None, None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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.STRING:
    + self.success = 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('get_token_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.STRING, 0)
    + oprot.writeString(self.success)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + return value
    +
    + def __repr__(self):
    + L = ['%s=%r' % (key, value)
    + for key, value in self.__dict__.iteritems()]
    + return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
    +
    + def __eq__(self, other):
    + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
    +
    + def __ne__(self, other):
    + return not (self == other)
    +
    +class get_all_token_identifiers_args:
    +
    + thrift_spec = (
    + )
    +
    + 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
    + else:
    + iprot.skip(ftype)
    + iprot.readFieldEnd()
    + iprot.readStructEnd()
    +
    + def write(self, oprot):
    + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
    + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
    + return
    + oprot.writeStructBegin('get_all_token_identifiers_args')
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + return value
    +
    + def __repr__(self):
    + L = ['%s=%r' % (key, value)
    + for key, value in self.__dict__.iteritems()]
    + return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
    +
    + def __eq__(self, other):
    + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
    +
    + def __ne__(self, other):
    + return not (self == other)
    +
    +class get_all_token_identifiers_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.LIST, 'success', (TType.STRING,None), None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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 = []
    + (_etype950, _size947) = iprot.readListBegin()
    + for _i951 in xrange(_size947):
    + _elem952 = iprot.readString()
    + self.success.append(_elem952)
    + iprot.readListEnd()
    + else:
    + iprot.skip(ftype)
    + else:
    + iprot.skip(ftype)
    + iprot.readFieldEnd()
    + iprot.readStructEnd()
    +
    + def write(self, oprot):
    + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
    + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
    + return
    + oprot.writeStructBegin('get_all_token_identifiers_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.LIST, 0)
    + oprot.writeListBegin(TType.STRING, len(self.success))
    + for iter953 in self.success:
    + oprot.writeString(iter953)
    + oprot.writeListEnd()
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + 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 add_master_key_args:
    + """
    + Attributes:
    + - key
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.STRING, 'key', None, None, ), # 1
    + )
    +
    + def __init__(self, key=None,):
    + self.key = key
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 1:
    + if ftype == TType.STRING:
    + self.key = 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('add_master_key_args')
    + if self.key is not None:
    + oprot.writeFieldBegin('key', TType.STRING, 1)
    + oprot.writeString(self.key)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.key)
    + 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 add_master_key_result:
    + """
    + Attributes:
    + - success
    + - o1
    + """
    +
    + thrift_spec = (
    + (0, TType.I32, 'success', None, None, ), # 0
    + (1, TType.STRUCT, 'o1', (MetaException, MetaException.thrift_spec), None, ), # 1
    + )
    +
    + def __init__(self, success=None, o1=None,):
    + self.success = success
    + self.o1 = o1
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 0:
    + if ftype == TType.I32:
    + self.success = iprot.readI32()
    + else:
    + iprot.skip(ftype)
    + elif fid == 1:
    + if ftype == TType.STRUCT:
    + self.o1 = MetaException()
    + self.o1.read(iprot)
    + else:
    + iprot.skip(ftype)
    + else:
    + iprot.skip(ftype)
    + iprot.readFieldEnd()
    + iprot.readStructEnd()
    +
    + def write(self, oprot):
    + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
    + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
    + return
    + oprot.writeStructBegin('add_master_key_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.I32, 0)
    + oprot.writeI32(self.success)
    + oprot.writeFieldEnd()
    + if self.o1 is not None:
    + oprot.writeFieldBegin('o1', TType.STRUCT, 1)
    + self.o1.write(oprot)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + value = (value * 31) ^ hash(self.o1)
    + return value
    +
    + def __repr__(self):
    + L = ['%s=%r' % (key, value)
    + for key, value in self.__dict__.iteritems()]
    + return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
    +
    + def __eq__(self, other):
    + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__
    +
    + def __ne__(self, other):
    + return not (self == other)
    +
    +class update_master_key_args:
    + """
    + Attributes:
    + - seq_number
    + - key
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.I32, 'seq_number', None, None, ), # 1
    + (2, TType.STRING, 'key', None, None, ), # 2
    + )
    +
    + def __init__(self, seq_number=None, key=None,):
    + self.seq_number = seq_number
    + self.key = key
    +
    + 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.I32:
    + self.seq_number = iprot.readI32()
    + else:
    + iprot.skip(ftype)
    + elif fid == 2:
    + if ftype == TType.STRING:
    + self.key = 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('update_master_key_args')
    + if self.seq_number is not None:
    + oprot.writeFieldBegin('seq_number', TType.I32, 1)
    + oprot.writeI32(self.seq_number)
    + oprot.writeFieldEnd()
    + if self.key is not None:
    + oprot.writeFieldBegin('key', TType.STRING, 2)
    + oprot.writeString(self.key)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.seq_number)
    + value = (value * 31) ^ hash(self.key)
    + 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 update_master_key_result:
    + """
    + Attributes:
    + - o1
    + - o2
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.STRUCT, 'o1', (NoSuchObjectException, NoSuchObjectException.thrift_spec), None, ), # 1
    + (2, TType.STRUCT, 'o2', (MetaException, MetaException.thrift_spec), None, ), # 2
    + )
    +
    + def __init__(self, o1=None, o2=None,):
    + self.o1 = o1
    + self.o2 = o2
    +
    + def read(self, iprot):
    + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
    + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
    + return
    + iprot.readStructBegin()
    + while True:
    + (fname, ftype, fid) = iprot.readFieldBegin()
    + if ftype == TType.STOP:
    + break
    + if fid == 1:
    + if ftype == TType.STRUCT:
    + self.o1 = NoSuchObjectException()
    + self.o1.read(iprot)
    + else:
    + iprot.skip(ftype)
    + elif fid == 2:
    + if ftype == TType.STRUCT:
    + self.o2 = MetaException()
    + self.o2.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('update_master_key_result')
    + 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()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.o1)
    + value = (value * 31) ^ hash(self.o2)
    + 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 remove_master_key_args:
    + """
    + Attributes:
    + - key_seq
    + """
    +
    + thrift_spec = (
    + None, # 0
    + (1, TType.I32, 'key_seq', None, None, ), # 1
    + )
    +
    + def __init__(self, key_seq=None,):
    + self.key_seq = key_seq
    +
    + 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.I32:
    + self.key_seq = iprot.readI32()
    + 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('remove_master_key_args')
    + if self.key_seq is not None:
    + oprot.writeFieldBegin('key_seq', TType.I32, 1)
    + oprot.writeI32(self.key_seq)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.key_seq)
    + 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 remove_master_key_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.BOOL, 'success', None, None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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.BOOL:
    + self.success = iprot.readBool()
    + 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('remove_master_key_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.BOOL, 0)
    + oprot.writeBool(self.success)
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + 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_master_keys_args:
    +
    + thrift_spec = (
    + )
    +
    + 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
    + else:
    + iprot.skip(ftype)
    + iprot.readFieldEnd()
    + iprot.readStructEnd()
    +
    + def write(self, oprot):
    + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
    + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
    + return
    + oprot.writeStructBegin('get_master_keys_args')
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + 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_master_keys_result:
    + """
    + Attributes:
    + - success
    + """
    +
    + thrift_spec = (
    + (0, TType.LIST, 'success', (TType.STRING,None), None, ), # 0
    + )
    +
    + def __init__(self, success=None,):
    + self.success = success
    +
    + 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 = []
    + (_etype957, _size954) = iprot.readListBegin()
    + for _i958 in xrange(_size954):
    + _elem959 = iprot.readString()
    + self.success.append(_elem959)
    + iprot.readListEnd()
    + else:
    + iprot.skip(ftype)
    + else:
    + iprot.skip(ftype)
    + iprot.readFieldEnd()
    + iprot.readStructEnd()
    +
    + def write(self, oprot):
    + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
    + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
    + return
    + oprot.writeStructBegin('get_master_keys_result')
    + if self.success is not None:
    + oprot.writeFieldBegin('success', TType.LIST, 0)
    + oprot.writeListBegin(TType.STRING, len(self.success))
    + for iter960 in self.success:
    + oprot.writeString(iter960)
    + oprot.writeListEnd()
    + oprot.writeFieldEnd()
    + oprot.writeFieldStop()
    + oprot.writeStructEnd()
    +
    + def validate(self):
    + return
    +
    +
    + def __hash__(self):
    + value = 17
    + value = (value * 31) ^ hash(self.success)
    + 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_open_txns_args:

        thrift_spec = (

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/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 de316ae..e782bb5 100644
    --- a/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb
    +++ b/metastore/src/gen/thrift/gen-rb/thrift_hive_metastore.rb
    @@ -1894,6 +1894,128 @@ module ThriftHiveMetastore
            return
          end

    + def add_token(token_identifier, delegation_token)
    + send_add_token(token_identifier, delegation_token)
    + return recv_add_token()
    + end
    +
    + def send_add_token(token_identifier, delegation_token)
    + send_message('add_token', Add_token_args, :token_identifier => token_identifier, :delegation_token => delegation_token)
    + end
    +
    + def recv_add_token()
    + result = receive_message(Add_token_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_token failed: unknown result')
    + end
    +
    + def remove_token(token_identifier)
    + send_remove_token(token_identifier)
    + return recv_remove_token()
    + end
    +
    + def send_remove_token(token_identifier)
    + send_message('remove_token', Remove_token_args, :token_identifier => token_identifier)
    + end
    +
    + def recv_remove_token()
    + result = receive_message(Remove_token_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'remove_token failed: unknown result')
    + end
    +
    + def get_token(token_identifier)
    + send_get_token(token_identifier)
    + return recv_get_token()
    + end
    +
    + def send_get_token(token_identifier)
    + send_message('get_token', Get_token_args, :token_identifier => token_identifier)
    + end
    +
    + def recv_get_token()
    + result = receive_message(Get_token_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_token failed: unknown result')
    + end
    +
    + def get_all_token_identifiers()
    + send_get_all_token_identifiers()
    + return recv_get_all_token_identifiers()
    + end
    +
    + def send_get_all_token_identifiers()
    + send_message('get_all_token_identifiers', Get_all_token_identifiers_args)
    + end
    +
    + def recv_get_all_token_identifiers()
    + result = receive_message(Get_all_token_identifiers_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_all_token_identifiers failed: unknown result')
    + end
    +
    + def add_master_key(key)
    + send_add_master_key(key)
    + return recv_add_master_key()
    + end
    +
    + def send_add_master_key(key)
    + send_message('add_master_key', Add_master_key_args, :key => key)
    + end
    +
    + def recv_add_master_key()
    + result = receive_message(Add_master_key_result)
    + return result.success unless result.success.nil?
    + raise result.o1 unless result.o1.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_master_key failed: unknown result')
    + end
    +
    + def update_master_key(seq_number, key)
    + send_update_master_key(seq_number, key)
    + recv_update_master_key()
    + end
    +
    + def send_update_master_key(seq_number, key)
    + send_message('update_master_key', Update_master_key_args, :seq_number => seq_number, :key => key)
    + end
    +
    + def recv_update_master_key()
    + result = receive_message(Update_master_key_result)
    + raise result.o1 unless result.o1.nil?
    + raise result.o2 unless result.o2.nil?
    + return
    + end
    +
    + def remove_master_key(key_seq)
    + send_remove_master_key(key_seq)
    + return recv_remove_master_key()
    + end
    +
    + def send_remove_master_key(key_seq)
    + send_message('remove_master_key', Remove_master_key_args, :key_seq => key_seq)
    + end
    +
    + def recv_remove_master_key()
    + result = receive_message(Remove_master_key_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'remove_master_key failed: unknown result')
    + end
    +
    + def get_master_keys()
    + send_get_master_keys()
    + return recv_get_master_keys()
    + end
    +
    + def send_get_master_keys()
    + send_message('get_master_keys', Get_master_keys_args)
    + end
    +
    + def recv_get_master_keys()
    + result = receive_message(Get_master_keys_result)
    + return result.success unless result.success.nil?
    + raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_master_keys failed: unknown result')
    + end
    +
          def get_open_txns()
            send_get_open_txns()
            return recv_get_open_txns()
    @@ -3744,6 +3866,72 @@ module ThriftHiveMetastore
            write_result(result, oprot, 'cancel_delegation_token', seqid)
          end

    + def process_add_token(seqid, iprot, oprot)
    + args = read_args(iprot, Add_token_args)
    + result = Add_token_result.new()
    + result.success = @handler.add_token(args.token_identifier, args.delegation_token)
    + write_result(result, oprot, 'add_token', seqid)
    + end
    +
    + def process_remove_token(seqid, iprot, oprot)
    + args = read_args(iprot, Remove_token_args)
    + result = Remove_token_result.new()
    + result.success = @handler.remove_token(args.token_identifier)
    + write_result(result, oprot, 'remove_token', seqid)
    + end
    +
    + def process_get_token(seqid, iprot, oprot)
    + args = read_args(iprot, Get_token_args)
    + result = Get_token_result.new()
    + result.success = @handler.get_token(args.token_identifier)
    + write_result(result, oprot, 'get_token', seqid)
    + end
    +
    + def process_get_all_token_identifiers(seqid, iprot, oprot)
    + args = read_args(iprot, Get_all_token_identifiers_args)
    + result = Get_all_token_identifiers_result.new()
    + result.success = @handler.get_all_token_identifiers()
    + write_result(result, oprot, 'get_all_token_identifiers', seqid)
    + end
    +
    + def process_add_master_key(seqid, iprot, oprot)
    + args = read_args(iprot, Add_master_key_args)
    + result = Add_master_key_result.new()
    + begin
    + result.success = @handler.add_master_key(args.key)
    + rescue ::MetaException => o1
    + result.o1 = o1
    + end
    + write_result(result, oprot, 'add_master_key', seqid)
    + end
    +
    + def process_update_master_key(seqid, iprot, oprot)
    + args = read_args(iprot, Update_master_key_args)
    + result = Update_master_key_result.new()
    + begin
    + @handler.update_master_key(args.seq_number, args.key)
    + rescue ::NoSuchObjectException => o1
    + result.o1 = o1
    + rescue ::MetaException => o2
    + result.o2 = o2
    + end
    + write_result(result, oprot, 'update_master_key', seqid)
    + end
    +
    + def process_remove_master_key(seqid, iprot, oprot)
    + args = read_args(iprot, Remove_master_key_args)
    + result = Remove_master_key_result.new()
    + result.success = @handler.remove_master_key(args.key_seq)
    + write_result(result, oprot, 'remove_master_key', seqid)
    + end
    +
    + def process_get_master_keys(seqid, iprot, oprot)
    + args = read_args(iprot, Get_master_keys_args)
    + result = Get_master_keys_result.new()
    + result.success = @handler.get_master_keys()
    + write_result(result, oprot, 'get_master_keys', seqid)
    + end
    +
          def process_get_open_txns(seqid, iprot, oprot)
            args = read_args(iprot, Get_open_txns_args)
            result = Get_open_txns_result.new()
    @@ -8296,6 +8484,268 @@ module ThriftHiveMetastore
          ::Thrift::Struct.generate_accessors self
        end

    + class Add_token_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + TOKEN_IDENTIFIER = 1
    + DELEGATION_TOKEN = 2
    +
    + FIELDS = {
    + TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'},
    + DELEGATION_TOKEN => {:type => ::Thrift::Types::STRING, :name => 'delegation_token'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Add_token_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Remove_token_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + TOKEN_IDENTIFIER = 1
    +
    + FIELDS = {
    + TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Remove_token_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_token_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + TOKEN_IDENTIFIER = 1
    +
    + FIELDS = {
    + TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_token_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_all_token_identifiers_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    +
    + FIELDS = {
    +
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_all_token_identifiers_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Add_master_key_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + KEY = 1
    +
    + FIELDS = {
    + KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Add_master_key_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    + O1 = 1
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
    + O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Update_master_key_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SEQ_NUMBER = 1
    + KEY = 2
    +
    + FIELDS = {
    + SEQ_NUMBER => {:type => ::Thrift::Types::I32, :name => 'seq_number'},
    + KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Update_master_key_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + O1 = 1
    + O2 = 2
    +
    + FIELDS = {
    + O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
    + O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Remove_master_key_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + KEY_SEQ = 1
    +
    + FIELDS = {
    + KEY_SEQ => {:type => ::Thrift::Types::I32, :name => 'key_seq'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Remove_master_key_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_master_keys_args
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    +
    + FIELDS = {
    +
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
    + class Get_master_keys_result
    + include ::Thrift::Struct, ::Thrift::Struct_Union
    + SUCCESS = 0
    +
    + FIELDS = {
    + SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
    + }
    +
    + def struct_fields; FIELDS; end
    +
    + def validate
    + end
    +
    + ::Thrift::Struct.generate_accessors self
    + end
    +
        class Get_open_txns_args
          include ::Thrift::Struct, ::Thrift::Struct_Union


    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/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 50b38fa..0e8a157 100644
    --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
    +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
    @@ -5271,6 +5271,165 @@ public class HiveMetaStore extends ThriftHiveMetastore {
          }

          @Override
    + public boolean add_token(String token_identifier, String delegation_token) throws TException {
    + startFunction("add_token", ": " + token_identifier);
    + boolean ret = false;
    + Exception ex = null;
    + try {
    + ret = getMS().addToken(token_identifier, delegation_token);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("add_token", ret == true, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public boolean remove_token(String token_identifier) throws TException {
    + startFunction("remove_token", ": " + token_identifier);
    + boolean ret = false;
    + Exception ex = null;
    + try {
    + ret = getMS().removeToken(token_identifier);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("remove_token", ret == true, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public String get_token(String token_identifier) throws TException {
    + startFunction("get_token for", ": " + token_identifier);
    + String ret = null;
    + Exception ex = null;
    + try {
    + ret = getMS().getToken(token_identifier);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("get_token", ret != null, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public List<String> get_all_token_identifiers() throws TException {
    + startFunction("get_all_token_identifiers.");
    + List<String> ret = null;
    + Exception ex = null;
    + try {
    + ret = getMS().getAllTokenIdentifiers();
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("get_all_token_identifiers.", ex == null, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public int add_master_key(String key) throws MetaException, TException {
    + startFunction("add_master_key.");
    + int ret = -1;
    + Exception ex = null;
    + try {
    + ret = getMS().addMasterKey(key);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("add_master_key.", ex == null, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public void update_master_key(int seq_number, String key) throws NoSuchObjectException,
    + MetaException, TException {
    + startFunction("update_master_key.");
    + Exception ex = null;
    + try {
    + getMS().updateMasterKey(seq_number, key);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("update_master_key.", ex == null, ex);
    + }
    + }
    +
    + @Override
    + public boolean remove_master_key(int key_seq) throws TException {
    + startFunction("remove_master_key.");
    + Exception ex = null;
    + boolean ret;
    + try {
    + ret = getMS().removeMasterKey(key_seq);
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("remove_master_key.", ex == null, ex);
    + }
    + return ret;
    + }
    +
    + @Override
    + public List<String> get_master_keys() throws TException {
    + startFunction("get_master_keys.");
    + Exception ex = null;
    + String [] ret = null;
    + try {
    + ret = getMS().getMasterKeys();
    + } catch (Exception e) {
    + ex = e;
    + if (e instanceof MetaException) {
    + throw (MetaException) e;
    + } else {
    + throw newMetaException(e);
    + }
    + } finally {
    + endFunction("get_master_keys.", ret != null, ex);
    + }
    + return Arrays.asList(ret);
    + }
    +
    + @Override
          public void markPartitionForEvent(final String db_name, final String tbl_name,
              final Map<String, String> partName, final PartitionEventType evtType) throws
              MetaException, TException, NoSuchObjectException, UnknownDBException,

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/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 b5c4d1d..9048d45 100644
    --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
    +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java
    @@ -1938,6 +1938,48 @@ public class HiveMetaStoreClient implements IMetaStoreClient {
        }

        @Override
    + public boolean addToken(String tokenIdentifier, String delegationToken) throws TException {
    + return client.add_token(tokenIdentifier, delegationToken);
    + }
    +
    + @Override
    + public boolean removeToken(String tokenIdentifier) throws TException {
    + return client.remove_token(tokenIdentifier);
    + }
    +
    + @Override
    + public String getToken(String tokenIdentifier) throws TException {
    + return client.get_token(tokenIdentifier);
    + }
    +
    + @Override
    + public List<String> getAllTokenIdentifiers() throws TException {
    + return client.get_all_token_identifiers();
    + }
    +
    + @Override
    + public int addMasterKey(String key) throws MetaException, TException {
    + return client.add_master_key(key);
    + }
    +
    + @Override
    + public void updateMasterKey(Integer seqNo, String key)
    + throws NoSuchObjectException, MetaException, TException {
    + client.update_master_key(seqNo, key);
    + }
    +
    + @Override
    + public boolean removeMasterKey(Integer keySeq) throws TException {
    + return client.remove_master_key(keySeq);
    + }
    +
    + @Override
    + public String[] getMasterKeys() throws TException {
    + List<String> keyList = client.get_master_keys();
    + return keyList.toArray(new String[keyList.size()]);
    + }
    +
    + @Override
        public ValidTxnList getValidTxns() throws TException {
          return TxnUtils.createValidReadTxnList(client.get_open_txns(), 0);
        }

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/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 cb092d1..62677d1 100644
    --- a/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java
    +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/IMetaStoreClient.java
    @@ -1165,7 +1165,24 @@ public interface IMetaStoreClient {
         */
        void cancelDelegationToken(String tokenStrForm) throws MetaException, TException;

    - public String getTokenStrForm() throws IOException;
    + String getTokenStrForm() throws IOException;
    +
    + boolean addToken(String tokenIdentifier, String delegationToken) throws TException;
    +
    + boolean removeToken(String tokenIdentifier) throws TException;
    +
    + String getToken(String tokenIdentifier) throws TException;
    +
    + List<String> getAllTokenIdentifiers() throws TException;
    +
    + int addMasterKey(String key) throws MetaException, TException;
    +
    + void updateMasterKey(Integer seqNo, String key)
    + throws NoSuchObjectException, MetaException, TException;
    +
    + boolean removeMasterKey(Integer keySeq) throws TException;
    +
    + String[] getMasterKeys() throws TException;

        void createFunction(Function func)
            throws InvalidObjectException, MetaException, TException;

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/service-rpc/src/gen/thrift/gen-py/TCLIService/TCLIService-remote
    ----------------------------------------------------------------------
    diff --git a/service-rpc/src/gen/thrift/gen-py/TCLIService/TCLIService-remote b/service-rpc/src/gen/thrift/gen-py/TCLIService/TCLIService-remote
    old mode 100644
    new mode 100755

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
    ----------------------------------------------------------------------
    diff --git a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
    index 3d5e3a4..6992f62 100644
    --- a/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
    +++ b/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
    @@ -36,9 +36,9 @@ import javax.security.sasl.Sasl;

      import org.apache.hadoop.hive.conf.HiveConf;
      import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
    -import org.apache.hadoop.hive.metastore.HiveMetaStore;
    -import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler;
    +import org.apache.hadoop.hive.metastore.IMetaStoreClient;
      import org.apache.hadoop.hive.metastore.api.MetaException;
    +import org.apache.hadoop.hive.ql.metadata.Hive;
      import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
      import org.apache.hadoop.hive.shims.ShimLoader;
      import org.apache.hadoop.hive.thrift.DBTokenStore;
    @@ -48,7 +48,6 @@ import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode;
      import org.apache.hadoop.security.SecurityUtil;
      import org.apache.hadoop.security.UserGroupInformation;
      import org.apache.hadoop.security.authorize.ProxyUsers;
    -import org.apache.hive.service.ServiceException;
      import org.apache.hive.service.cli.HiveSQLException;
      import org.apache.hive.service.cli.thrift.ThriftCLIService;
      import org.apache.thrift.TProcessorFactory;
    @@ -105,7 +104,7 @@ public class HiveAuthFactory {
          transportMode = conf.getVar(HiveConf.ConfVars.HIVE_SERVER2_TRANSPORT_MODE);
          authTypeStr = conf.getVar(HiveConf.ConfVars.HIVE_SERVER2_AUTHENTICATION);

    - // ShimLoader.getHadoopShims().isSecurityEnabled() will only check that·
    + // ShimLoader.getHadoopShims().isSecurityEnabled() will only check that
          // hadoopAuth is not simple, it does not guarantee it is kerberos
          hadoopAuth = conf.get(HADOOP_SECURITY_AUTHENTICATION, "simple");

    @@ -127,18 +126,26 @@ public class HiveAuthFactory {
            // Start delegation token manager
            delegationTokenManager = new HiveDelegationTokenManager();
            try {
    - // baseHandler is only necessary for DBTokenStore
    - HMSHandler baseHandler = null;
    - String tokenStoreClass =
    - conf.getVar(HiveConf.ConfVars.METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_CLS);
    + Object baseHandler = null;
    + String tokenStoreClass = conf.getVar(HiveConf.ConfVars.METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_CLS);
    +
              if (tokenStoreClass.equals(DBTokenStore.class.getName())) {
    - baseHandler = new HiveMetaStore.HMSHandler("New db based metastore server", conf, true);
    + // IMetaStoreClient is needed to access token store if DBTokenStore is to be used. It
    + // will be got via Hive.get(conf).getMSC in a thread where the DelegationTokenStore
    + // is called. To avoid the cyclic reference, we pass the Hive class to DBTokenStore where
    + // it is used to get a threadLocal Hive object with a synchronized MetaStoreClient using
    + // Java reflection.
    + // Note: there will be two HS2 life-long opened MSCs, one is stored in HS2 thread local
    + // Hive object, the other is in a daemon thread spawned in DelegationTokenSecretManager
    + // to remove expired tokens.
    + baseHandler = Hive.class;
              }
    - delegationTokenManager.startDelegationTokenSecretManager(conf, baseHandler,
    - ServerMode.HIVESERVER2);
    +
    + delegationTokenManager.startDelegationTokenSecretManager(conf, baseHandler, ServerMode.HIVESERVER2);
              saslServer.setSecretManager(delegationTokenManager.getSecretManager());
    - } catch (MetaException | IOException e) {
    - throw new ServiceException("Failed to start token manager", e);
    + }
    + catch (IOException e) {
    + throw new TTransportException("Failed to start token manager", e);
            }
          }
        }
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
    index 18cb41a..6e5de20 100644
    --- a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
    +++ b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.cpp
    @@ -29527,11 +29527,11 @@ uint32_t ThriftHiveMetastore_cancel_delegation_token_presult::read(::apache::thr
      }


    -ThriftHiveMetastore_get_open_txns_args::~ThriftHiveMetastore_get_open_txns_args() throw() {
    +ThriftHiveMetastore_add_token_args::~ThriftHiveMetastore_add_token_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_add_token_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29550,7 +29550,28 @@ uint32_t ThriftHiveMetastore_get_open_txns_args::read(::apache::thrift::protocol
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - xfer += iprot->skip(ftype);
    + switch (fid)
    + {
    + case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->token_identifier);
    + this->__isset.token_identifier = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 2:
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->delegation_token);
    + this->__isset.delegation_token = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
          xfer += iprot->readFieldEnd();
        }

    @@ -29559,10 +29580,18 @@ uint32_t ThriftHiveMetastore_get_open_txns_args::read(::apache::thrift::protocol
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_get_open_txns_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_add_token_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_token_args");
    +
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString(this->token_identifier);
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldBegin("delegation_token", ::apache::thrift::protocol::T_STRING, 2);
    + xfer += oprot->writeString(this->delegation_token);
    + xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -29570,14 +29599,22 @@ uint32_t ThriftHiveMetastore_get_open_txns_args::write(::apache::thrift::protoco
      }


    -ThriftHiveMetastore_get_open_txns_pargs::~ThriftHiveMetastore_get_open_txns_pargs() throw() {
    +ThriftHiveMetastore_add_token_pargs::~ThriftHiveMetastore_add_token_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_add_token_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_token_pargs");
    +
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString((*(this->token_identifier)));
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldBegin("delegation_token", ::apache::thrift::protocol::T_STRING, 2);
    + xfer += oprot->writeString((*(this->delegation_token)));
    + xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -29585,11 +29622,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_pargs::write(::apache::thrift::protoc
      }


    -ThriftHiveMetastore_get_open_txns_result::~ThriftHiveMetastore_get_open_txns_result() throw() {
    +ThriftHiveMetastore_add_token_result::~ThriftHiveMetastore_add_token_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_add_token_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29611,8 +29648,8 @@ uint32_t ThriftHiveMetastore_get_open_txns_result::read(::apache::thrift::protoc
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool(this->success);
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -29630,15 +29667,15 @@ uint32_t ThriftHiveMetastore_get_open_txns_result::read(::apache::thrift::protoc
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_get_open_txns_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_add_token_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_token_result");

        if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_BOOL, 0);
    + xfer += oprot->writeBool(this->success);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -29647,11 +29684,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_result::write(::apache::thrift::proto
      }


    -ThriftHiveMetastore_get_open_txns_presult::~ThriftHiveMetastore_get_open_txns_presult() throw() {
    +ThriftHiveMetastore_add_token_presult::~ThriftHiveMetastore_add_token_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_add_token_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29673,8 +29710,8 @@ uint32_t ThriftHiveMetastore_get_open_txns_presult::read(::apache::thrift::proto
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool((*(this->success)));
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -29693,11 +29730,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_presult::read(::apache::thrift::proto
      }


    -ThriftHiveMetastore_get_open_txns_info_args::~ThriftHiveMetastore_get_open_txns_info_args() throw() {
    +ThriftHiveMetastore_remove_token_args::~ThriftHiveMetastore_remove_token_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_info_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_token_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29716,7 +29753,20 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_args::read(::apache::thrift::pro
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - xfer += iprot->skip(ftype);
    + switch (fid)
    + {
    + case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->token_identifier);
    + this->__isset.token_identifier = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
          xfer += iprot->readFieldEnd();
        }

    @@ -29725,10 +29775,14 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_args::read(::apache::thrift::pro
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_get_open_txns_info_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_token_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_token_args");
    +
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString(this->token_identifier);
    + xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -29736,14 +29790,18 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_args::write(::apache::thrift::pr
      }


    -ThriftHiveMetastore_get_open_txns_info_pargs::~ThriftHiveMetastore_get_open_txns_info_pargs() throw() {
    +ThriftHiveMetastore_remove_token_pargs::~ThriftHiveMetastore_remove_token_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_info_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_token_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_token_pargs");
    +
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString((*(this->token_identifier)));
    + xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -29751,11 +29809,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_pargs::write(::apache::thrift::p
      }


    -ThriftHiveMetastore_get_open_txns_info_result::~ThriftHiveMetastore_get_open_txns_info_result() throw() {
    +ThriftHiveMetastore_remove_token_result::~ThriftHiveMetastore_remove_token_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_info_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_token_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29777,8 +29835,8 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_result::read(::apache::thrift::p
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool(this->success);
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -29796,15 +29854,15 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_result::read(::apache::thrift::p
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_get_open_txns_info_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_token_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_token_result");

        if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_BOOL, 0);
    + xfer += oprot->writeBool(this->success);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -29813,11 +29871,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_result::write(::apache::thrift::
      }


    -ThriftHiveMetastore_get_open_txns_info_presult::~ThriftHiveMetastore_get_open_txns_info_presult() throw() {
    +ThriftHiveMetastore_remove_token_presult::~ThriftHiveMetastore_remove_token_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_get_open_txns_info_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_token_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29839,8 +29897,8 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_presult::read(::apache::thrift::
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool((*(this->success)));
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -29859,11 +29917,11 @@ uint32_t ThriftHiveMetastore_get_open_txns_info_presult::read(::apache::thrift::
      }


    -ThriftHiveMetastore_open_txns_args::~ThriftHiveMetastore_open_txns_args() throw() {
    +ThriftHiveMetastore_get_token_args::~ThriftHiveMetastore_get_token_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_open_txns_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_token_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29885,9 +29943,9 @@ uint32_t ThriftHiveMetastore_open_txns_args::read(::apache::thrift::protocol::TP
          switch (fid)
          {
            case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->token_identifier);
    + this->__isset.token_identifier = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -29904,13 +29962,13 @@ uint32_t ThriftHiveMetastore_open_txns_args::read(::apache::thrift::protocol::TP
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_open_txns_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_token_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_token_args");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString(this->token_identifier);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -29919,17 +29977,17 @@ uint32_t ThriftHiveMetastore_open_txns_args::write(::apache::thrift::protocol::T
      }


    -ThriftHiveMetastore_open_txns_pargs::~ThriftHiveMetastore_open_txns_pargs() throw() {
    +ThriftHiveMetastore_get_token_pargs::~ThriftHiveMetastore_get_token_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_open_txns_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_token_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_token_pargs");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    + xfer += oprot->writeFieldBegin("token_identifier", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString((*(this->token_identifier)));
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -29938,11 +29996,11 @@ uint32_t ThriftHiveMetastore_open_txns_pargs::write(::apache::thrift::protocol::
      }


    -ThriftHiveMetastore_open_txns_result::~ThriftHiveMetastore_open_txns_result() throw() {
    +ThriftHiveMetastore_get_token_result::~ThriftHiveMetastore_get_token_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_open_txns_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_token_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -29964,8 +30022,8 @@ uint32_t ThriftHiveMetastore_open_txns_result::read(::apache::thrift::protocol::
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->success);
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -29983,15 +30041,15 @@ uint32_t ThriftHiveMetastore_open_txns_result::read(::apache::thrift::protocol::
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_open_txns_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_token_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_token_result");

        if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRING, 0);
    + xfer += oprot->writeString(this->success);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -30000,11 +30058,11 @@ uint32_t ThriftHiveMetastore_open_txns_result::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_open_txns_presult::~ThriftHiveMetastore_open_txns_presult() throw() {
    +ThriftHiveMetastore_get_token_presult::~ThriftHiveMetastore_get_token_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_open_txns_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_token_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30026,8 +30084,8 @@ uint32_t ThriftHiveMetastore_open_txns_presult::read(::apache::thrift::protocol:
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString((*(this->success)));
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
    @@ -30046,11 +30104,69 @@ uint32_t ThriftHiveMetastore_open_txns_presult::read(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_abort_txn_args::~ThriftHiveMetastore_abort_txn_args() throw() {
    +ThriftHiveMetastore_get_all_token_identifiers_args::~ThriftHiveMetastore_get_all_token_identifiers_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_abort_txn_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +
    + apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
    + uint32_t xfer = 0;
    + std::string fname;
    + ::apache::thrift::protocol::TType ftype;
    + int16_t fid;
    +
    + xfer += iprot->readStructBegin(fname);
    +
    + using ::apache::thrift::protocol::TProtocolException;
    +
    +
    + while (true)
    + {
    + xfer += iprot->readFieldBegin(fname, ftype, fid);
    + if (ftype == ::apache::thrift::protocol::T_STOP) {
    + break;
    + }
    + xfer += iprot->skip(ftype);
    + xfer += iprot->readFieldEnd();
    + }
    +
    + xfer += iprot->readStructEnd();
    +
    + return xfer;
    +}
    +
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    + uint32_t xfer = 0;
    + apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_all_token_identifiers_args");
    +
    + xfer += oprot->writeFieldStop();
    + xfer += oprot->writeStructEnd();
    + return xfer;
    +}
    +
    +
    +ThriftHiveMetastore_get_all_token_identifiers_pargs::~ThriftHiveMetastore_get_all_token_identifiers_pargs() throw() {
    +}
    +
    +
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    + uint32_t xfer = 0;
    + apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_all_token_identifiers_pargs");
    +
    + xfer += oprot->writeFieldStop();
    + xfer += oprot->writeStructEnd();
    + return xfer;
    +}
    +
    +
    +ThriftHiveMetastore_get_all_token_identifiers_result::~ThriftHiveMetastore_get_all_token_identifiers_result() throw() {
    +}
    +
    +
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30071,10 +30187,22 @@ uint32_t ThriftHiveMetastore_abort_txn_args::read(::apache::thrift::protocol::TP
          }
          switch (fid)
          {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    + case 0:
    + if (ftype == ::apache::thrift::protocol::T_LIST) {
    + {
    + this->success.clear();
    + uint32_t _size1289;
    + ::apache::thrift::protocol::TType _etype1292;
    + xfer += iprot->readListBegin(_etype1292, _size1289);
    + this->success.resize(_size1289);
    + uint32_t _i1293;
    + for (_i1293 = 0; _i1293 < _size1289; ++_i1293)
    + {
    + xfer += iprot->readString(this->success[_i1293]);
    + }
    + xfer += iprot->readListEnd();
    + }
    + this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -30091,45 +30219,94 @@ uint32_t ThriftHiveMetastore_abort_txn_args::read(::apache::thrift::protocol::TP
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_abort_txn_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +
        uint32_t xfer = 0;
    - apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_args");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_all_token_identifiers_result");

    + if (this->__isset.success) {
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
    + {
    + xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
    + std::vector<std::string> ::const_iterator _iter1294;
    + for (_iter1294 = this->success.begin(); _iter1294 != this->success.end(); ++_iter1294)
    + {
    + xfer += oprot->writeString((*_iter1294));
    + }
    + xfer += oprot->writeListEnd();
    + }
    + xfer += oprot->writeFieldEnd();
    + }
        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
        return xfer;
      }


    -ThriftHiveMetastore_abort_txn_pargs::~ThriftHiveMetastore_abort_txn_pargs() throw() {
    +ThriftHiveMetastore_get_all_token_identifiers_presult::~ThriftHiveMetastore_get_all_token_identifiers_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_abort_txn_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_all_token_identifiers_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +
    + apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    - apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_pargs");
    + std::string fname;
    + ::apache::thrift::protocol::TType ftype;
    + int16_t fid;

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += iprot->readStructBegin(fname);
    +
    + using ::apache::thrift::protocol::TProtocolException;
    +
    +
    + while (true)
    + {
    + xfer += iprot->readFieldBegin(fname, ftype, fid);
    + if (ftype == ::apache::thrift::protocol::T_STOP) {
    + break;
    + }
    + switch (fid)
    + {
    + case 0:
    + if (ftype == ::apache::thrift::protocol::T_LIST) {
    + {
    + (*(this->success)).clear();
    + uint32_t _size1295;
    + ::apache::thrift::protocol::TType _etype1298;
    + xfer += iprot->readListBegin(_etype1298, _size1295);
    + (*(this->success)).resize(_size1295);
    + uint32_t _i1299;
    + for (_i1299 = 0; _i1299 < _size1295; ++_i1299)
    + {
    + xfer += iprot->readString((*(this->success))[_i1299]);
    + }
    + xfer += iprot->readListEnd();
    + }
    + this->__isset.success = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
    + xfer += iprot->readFieldEnd();
    + }
    +
    + xfer += iprot->readStructEnd();

    - xfer += oprot->writeFieldStop();
    - xfer += oprot->writeStructEnd();
        return xfer;
      }


    -ThriftHiveMetastore_abort_txn_result::~ThriftHiveMetastore_abort_txn_result() throw() {
    +ThriftHiveMetastore_add_master_key_args::~ThriftHiveMetastore_add_master_key_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_abort_txn_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_add_master_key_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30151,6 +30328,93 @@ uint32_t ThriftHiveMetastore_abort_txn_result::read(::apache::thrift::protocol::
          switch (fid)
          {
            case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->key);
    + this->__isset.key = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
    + xfer += iprot->readFieldEnd();
    + }
    +
    + xfer += iprot->readStructEnd();
    +
    + return xfer;
    +}
    +
    +uint32_t ThriftHiveMetastore_add_master_key_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    + uint32_t xfer = 0;
    + apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_master_key_args");
    +
    + xfer += oprot->writeFieldBegin("key", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString(this->key);
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldStop();
    + xfer += oprot->writeStructEnd();
    + return xfer;
    +}
    +
    +
    +ThriftHiveMetastore_add_master_key_pargs::~ThriftHiveMetastore_add_master_key_pargs() throw() {
    +}
    +
    +
    +uint32_t ThriftHiveMetastore_add_master_key_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    + uint32_t xfer = 0;
    + apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_master_key_pargs");
    +
    + xfer += oprot->writeFieldBegin("key", ::apache::thrift::protocol::T_STRING, 1);
    + xfer += oprot->writeString((*(this->key)));
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldStop();
    + xfer += oprot->writeStructEnd();
    + return xfer;
    +}
    +
    +
    +ThriftHiveMetastore_add_master_key_result::~ThriftHiveMetastore_add_master_key_result() throw() {
    +}
    +
    +
    +uint32_t ThriftHiveMetastore_add_master_key_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +
    + apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
    + uint32_t xfer = 0;
    + std::string fname;
    + ::apache::thrift::protocol::TType ftype;
    + int16_t fid;
    +
    + xfer += iprot->readStructBegin(fname);
    +
    + using ::apache::thrift::protocol::TProtocolException;
    +
    +
    + while (true)
    + {
    + xfer += iprot->readFieldBegin(fname, ftype, fid);
    + if (ftype == ::apache::thrift::protocol::T_STOP) {
    + break;
    + }
    + switch (fid)
    + {
    + case 0:
    + if (ftype == ::apache::thrift::protocol::T_I32) {
    + xfer += iprot->readI32(this->success);
    + this->__isset.success = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
                xfer += this->o1.read(iprot);
                this->__isset.o1 = true;
    @@ -30170,13 +30434,17 @@ uint32_t ThriftHiveMetastore_abort_txn_result::read(::apache::thrift::protocol::
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_abort_txn_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_add_master_key_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_add_master_key_result");

    - if (this->__isset.o1) {
    + if (this->__isset.success) {
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_I32, 0);
    + xfer += oprot->writeI32(this->success);
    + xfer += oprot->writeFieldEnd();
    + } else if (this->__isset.o1) {
          xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
          xfer += this->o1.write(oprot);
          xfer += oprot->writeFieldEnd();
    @@ -30187,11 +30455,11 @@ uint32_t ThriftHiveMetastore_abort_txn_result::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_abort_txn_presult::~ThriftHiveMetastore_abort_txn_presult() throw() {
    +ThriftHiveMetastore_add_master_key_presult::~ThriftHiveMetastore_add_master_key_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_abort_txn_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_add_master_key_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30212,6 +30480,14 @@ uint32_t ThriftHiveMetastore_abort_txn_presult::read(::apache::thrift::protocol:
          }
          switch (fid)
          {
    + case 0:
    + if (ftype == ::apache::thrift::protocol::T_I32) {
    + xfer += iprot->readI32((*(this->success)));
    + this->__isset.success = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
            case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
                xfer += this->o1.read(iprot);
    @@ -30233,11 +30509,11 @@ uint32_t ThriftHiveMetastore_abort_txn_presult::read(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_commit_txn_args::~ThriftHiveMetastore_commit_txn_args() throw() {
    +ThriftHiveMetastore_update_master_key_args::~ThriftHiveMetastore_update_master_key_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_commit_txn_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_update_master_key_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30259,9 +30535,17 @@ uint32_t ThriftHiveMetastore_commit_txn_args::read(::apache::thrift::protocol::T
          switch (fid)
          {
            case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    + if (ftype == ::apache::thrift::protocol::T_I32) {
    + xfer += iprot->readI32(this->seq_number);
    + this->__isset.seq_number = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 2:
    + if (ftype == ::apache::thrift::protocol::T_STRING) {
    + xfer += iprot->readString(this->key);
    + this->__isset.key = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -30278,13 +30562,17 @@ uint32_t ThriftHiveMetastore_commit_txn_args::read(::apache::thrift::protocol::T
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_commit_txn_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_update_master_key_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_update_master_key_args");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    + xfer += oprot->writeFieldBegin("seq_number", ::apache::thrift::protocol::T_I32, 1);
    + xfer += oprot->writeI32(this->seq_number);
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldBegin("key", ::apache::thrift::protocol::T_STRING, 2);
    + xfer += oprot->writeString(this->key);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -30293,17 +30581,21 @@ uint32_t ThriftHiveMetastore_commit_txn_args::write(::apache::thrift::protocol::
      }


    -ThriftHiveMetastore_commit_txn_pargs::~ThriftHiveMetastore_commit_txn_pargs() throw() {
    +ThriftHiveMetastore_update_master_key_pargs::~ThriftHiveMetastore_update_master_key_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_commit_txn_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_update_master_key_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_update_master_key_pargs");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    + xfer += oprot->writeFieldBegin("seq_number", ::apache::thrift::protocol::T_I32, 1);
    + xfer += oprot->writeI32((*(this->seq_number)));
    + xfer += oprot->writeFieldEnd();
    +
    + xfer += oprot->writeFieldBegin("key", ::apache::thrift::protocol::T_STRING, 2);
    + xfer += oprot->writeString((*(this->key)));
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -30312,11 +30604,11 @@ uint32_t ThriftHiveMetastore_commit_txn_pargs::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_commit_txn_result::~ThriftHiveMetastore_commit_txn_result() throw() {
    +ThriftHiveMetastore_update_master_key_result::~ThriftHiveMetastore_update_master_key_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_commit_txn_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_update_master_key_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30365,11 +30657,11 @@ uint32_t ThriftHiveMetastore_commit_txn_result::read(::apache::thrift::protocol:
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_commit_txn_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_update_master_key_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_update_master_key_result");

        if (this->__isset.o1) {
          xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    @@ -30386,11 +30678,11 @@ uint32_t ThriftHiveMetastore_commit_txn_result::write(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_commit_txn_presult::~ThriftHiveMetastore_commit_txn_presult() throw() {
    +ThriftHiveMetastore_update_master_key_presult::~ThriftHiveMetastore_update_master_key_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_commit_txn_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_update_master_key_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30440,11 +30732,11 @@ uint32_t ThriftHiveMetastore_commit_txn_presult::read(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_lock_args::~ThriftHiveMetastore_lock_args() throw() {
    +ThriftHiveMetastore_remove_master_key_args::~ThriftHiveMetastore_remove_master_key_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_lock_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_master_key_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30466,9 +30758,9 @@ uint32_t ThriftHiveMetastore_lock_args::read(::apache::thrift::protocol::TProtoc
          switch (fid)
          {
            case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    + if (ftype == ::apache::thrift::protocol::T_I32) {
    + xfer += iprot->readI32(this->key_seq);
    + this->__isset.key_seq = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -30485,13 +30777,13 @@ uint32_t ThriftHiveMetastore_lock_args::read(::apache::thrift::protocol::TProtoc
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_lock_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_master_key_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_lock_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_master_key_args");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    + xfer += oprot->writeFieldBegin("key_seq", ::apache::thrift::protocol::T_I32, 1);
    + xfer += oprot->writeI32(this->key_seq);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -30500,17 +30792,17 @@ uint32_t ThriftHiveMetastore_lock_args::write(::apache::thrift::protocol::TProto
      }


    -ThriftHiveMetastore_lock_pargs::~ThriftHiveMetastore_lock_pargs() throw() {
    +ThriftHiveMetastore_remove_master_key_pargs::~ThriftHiveMetastore_remove_master_key_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_lock_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_master_key_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_lock_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_master_key_pargs");

    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    + xfer += oprot->writeFieldBegin("key_seq", ::apache::thrift::protocol::T_I32, 1);
    + xfer += oprot->writeI32((*(this->key_seq)));
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -30519,11 +30811,11 @@ uint32_t ThriftHiveMetastore_lock_pargs::write(::apache::thrift::protocol::TProt
      }


    -ThriftHiveMetastore_lock_result::~ThriftHiveMetastore_lock_result() throw() {
    +ThriftHiveMetastore_remove_master_key_result::~ThriftHiveMetastore_remove_master_key_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_lock_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_master_key_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30545,29 +30837,13 @@ uint32_t ThriftHiveMetastore_lock_result::read(::apache::thrift::protocol::TProt
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool(this->success);
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
              break;
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
            default:
              xfer += iprot->skip(ftype);
              break;
    @@ -30580,23 +30856,15 @@ uint32_t ThriftHiveMetastore_lock_result::read(::apache::thrift::protocol::TProt
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_lock_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_remove_master_key_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_lock_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_remove_master_key_result");

        if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o1) {
    - xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->o1.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o2) {
    - xfer += oprot->writeFieldBegin("o2", ::apache::thrift::protocol::T_STRUCT, 2);
    - xfer += this->o2.write(oprot);
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_BOOL, 0);
    + xfer += oprot->writeBool(this->success);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -30605,11 +30873,11 @@ uint32_t ThriftHiveMetastore_lock_result::write(::apache::thrift::protocol::TPro
      }


    -ThriftHiveMetastore_lock_presult::~ThriftHiveMetastore_lock_presult() throw() {
    +ThriftHiveMetastore_remove_master_key_presult::~ThriftHiveMetastore_remove_master_key_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_lock_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_remove_master_key_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30631,29 +30899,13 @@ uint32_t ThriftHiveMetastore_lock_presult::read(::apache::thrift::protocol::TPro
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_BOOL) {
    + xfer += iprot->readBool((*(this->success)));
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
              break;
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
            default:
              xfer += iprot->skip(ftype);
              break;
    @@ -30667,11 +30919,11 @@ uint32_t ThriftHiveMetastore_lock_presult::read(::apache::thrift::protocol::TPro
      }


    -ThriftHiveMetastore_check_lock_args::~ThriftHiveMetastore_check_lock_args() throw() {
    +ThriftHiveMetastore_get_master_keys_args::~ThriftHiveMetastore_get_master_keys_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_check_lock_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_master_keys_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30690,20 +30942,7 @@ uint32_t ThriftHiveMetastore_check_lock_args::read(::apache::thrift::protocol::T
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - switch (fid)
    - {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - default:
    - xfer += iprot->skip(ftype);
    - break;
    - }
    + xfer += iprot->skip(ftype);
          xfer += iprot->readFieldEnd();
        }

    @@ -30712,14 +30951,10 @@ uint32_t ThriftHiveMetastore_check_lock_args::read(::apache::thrift::protocol::T
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_check_lock_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_master_keys_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_check_lock_args");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_master_keys_args");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -30727,18 +30962,14 @@ uint32_t ThriftHiveMetastore_check_lock_args::write(::apache::thrift::protocol::
      }


    -ThriftHiveMetastore_check_lock_pargs::~ThriftHiveMetastore_check_lock_pargs() throw() {
    +ThriftHiveMetastore_get_master_keys_pargs::~ThriftHiveMetastore_get_master_keys_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_check_lock_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_master_keys_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_check_lock_pargs");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_master_keys_pargs");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -30746,11 +30977,11 @@ uint32_t ThriftHiveMetastore_check_lock_pargs::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_check_lock_result::~ThriftHiveMetastore_check_lock_result() throw() {
    +ThriftHiveMetastore_get_master_keys_result::~ThriftHiveMetastore_get_master_keys_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_check_lock_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_master_keys_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30772,37 +31003,25 @@ uint32_t ThriftHiveMetastore_check_lock_result::read(::apache::thrift::protocol:
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_LIST) {
    + {
    + this->success.clear();
    + uint32_t _size1300;
    + ::apache::thrift::protocol::TType _etype1303;
    + xfer += iprot->readListBegin(_etype1303, _size1300);
    + this->success.resize(_size1300);
    + uint32_t _i1304;
    + for (_i1304 = 0; _i1304 < _size1300; ++_i1304)
    + {
    + xfer += iprot->readString(this->success[_i1304]);
    + }
    + xfer += iprot->readListEnd();
    + }
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
              break;
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 3:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o3.read(iprot);
    - this->__isset.o3 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
            default:
              xfer += iprot->skip(ftype);
              break;
    @@ -30815,27 +31034,23 @@ uint32_t ThriftHiveMetastore_check_lock_result::read(::apache::thrift::protocol:
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_check_lock_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_master_keys_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_check_lock_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_master_keys_result");

        if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o1) {
    - xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->o1.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o2) {
    - xfer += oprot->writeFieldBegin("o2", ::apache::thrift::protocol::T_STRUCT, 2);
    - xfer += this->o2.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o3) {
    - xfer += oprot->writeFieldBegin("o3", ::apache::thrift::protocol::T_STRUCT, 3);
    - xfer += this->o3.write(oprot);
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_LIST, 0);
    + {
    + xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->success.size()));
    + std::vector<std::string> ::const_iterator _iter1305;
    + for (_iter1305 = this->success.begin(); _iter1305 != this->success.end(); ++_iter1305)
    + {
    + xfer += oprot->writeString((*_iter1305));
    + }
    + xfer += oprot->writeListEnd();
    + }
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -30844,11 +31059,11 @@ uint32_t ThriftHiveMetastore_check_lock_result::write(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_check_lock_presult::~ThriftHiveMetastore_check_lock_presult() throw() {
    +ThriftHiveMetastore_get_master_keys_presult::~ThriftHiveMetastore_get_master_keys_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_check_lock_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_master_keys_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30870,37 +31085,25 @@ uint32_t ThriftHiveMetastore_check_lock_presult::read(::apache::thrift::protocol
          switch (fid)
          {
            case 0:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    + if (ftype == ::apache::thrift::protocol::T_LIST) {
    + {
    + (*(this->success)).clear();
    + uint32_t _size1306;
    + ::apache::thrift::protocol::TType _etype1309;
    + xfer += iprot->readListBegin(_etype1309, _size1306);
    + (*(this->success)).resize(_size1306);
    + uint32_t _i1310;
    + for (_i1310 = 0; _i1310 < _size1306; ++_i1310)
    + {
    + xfer += iprot->readString((*(this->success))[_i1310]);
    + }
    + xfer += iprot->readListEnd();
    + }
                this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
              break;
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 3:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o3.read(iprot);
    - this->__isset.o3 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
            default:
              xfer += iprot->skip(ftype);
              break;
    @@ -30914,11 +31117,11 @@ uint32_t ThriftHiveMetastore_check_lock_presult::read(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_unlock_args::~ThriftHiveMetastore_unlock_args() throw() {
    +ThriftHiveMetastore_get_open_txns_args::~ThriftHiveMetastore_get_open_txns_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_unlock_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -30937,20 +31140,7 @@ uint32_t ThriftHiveMetastore_unlock_args::read(::apache::thrift::protocol::TProt
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - switch (fid)
    - {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - default:
    - xfer += iprot->skip(ftype);
    - break;
    - }
    + xfer += iprot->skip(ftype);
          xfer += iprot->readFieldEnd();
        }

    @@ -30959,14 +31149,10 @@ uint32_t ThriftHiveMetastore_unlock_args::read(::apache::thrift::protocol::TProt
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_unlock_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_unlock_args");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_args");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -30974,18 +31160,14 @@ uint32_t ThriftHiveMetastore_unlock_args::write(::apache::thrift::protocol::TPro
      }


    -ThriftHiveMetastore_unlock_pargs::~ThriftHiveMetastore_unlock_pargs() throw() {
    +ThriftHiveMetastore_get_open_txns_pargs::~ThriftHiveMetastore_get_open_txns_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_unlock_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_unlock_pargs");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_pargs");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -30993,11 +31175,11 @@ uint32_t ThriftHiveMetastore_unlock_pargs::write(::apache::thrift::protocol::TPr
      }


    -ThriftHiveMetastore_unlock_result::~ThriftHiveMetastore_unlock_result() throw() {
    +ThriftHiveMetastore_get_open_txns_result::~ThriftHiveMetastore_get_open_txns_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_unlock_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31018,18 +31200,10 @@ uint32_t ThriftHiveMetastore_unlock_result::read(::apache::thrift::protocol::TPr
          }
          switch (fid)
          {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    + case 0:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    + xfer += this->success.read(iprot);
    + this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31046,19 +31220,15 @@ uint32_t ThriftHiveMetastore_unlock_result::read(::apache::thrift::protocol::TPr
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_unlock_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_unlock_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_result");

    - if (this->__isset.o1) {
    - xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->o1.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o2) {
    - xfer += oprot->writeFieldBegin("o2", ::apache::thrift::protocol::T_STRUCT, 2);
    - xfer += this->o2.write(oprot);
    + if (this->__isset.success) {
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    + xfer += this->success.write(oprot);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -31067,11 +31237,11 @@ uint32_t ThriftHiveMetastore_unlock_result::write(::apache::thrift::protocol::TP
      }


    -ThriftHiveMetastore_unlock_presult::~ThriftHiveMetastore_unlock_presult() throw() {
    +ThriftHiveMetastore_get_open_txns_presult::~ThriftHiveMetastore_get_open_txns_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_unlock_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31092,18 +31262,10 @@ uint32_t ThriftHiveMetastore_unlock_presult::read(::apache::thrift::protocol::TP
          }
          switch (fid)
          {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    + case 0:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    + xfer += (*(this->success)).read(iprot);
    + this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31121,11 +31283,11 @@ uint32_t ThriftHiveMetastore_unlock_presult::read(::apache::thrift::protocol::TP
      }


    -ThriftHiveMetastore_show_locks_args::~ThriftHiveMetastore_show_locks_args() throw() {
    +ThriftHiveMetastore_get_open_txns_info_args::~ThriftHiveMetastore_get_open_txns_info_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_locks_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31144,20 +31306,7 @@ uint32_t ThriftHiveMetastore_show_locks_args::read(::apache::thrift::protocol::T
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - switch (fid)
    - {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->rqst.read(iprot);
    - this->__isset.rqst = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - default:
    - xfer += iprot->skip(ftype);
    - break;
    - }
    + xfer += iprot->skip(ftype);
          xfer += iprot->readFieldEnd();
        }

    @@ -31166,14 +31315,10 @@ uint32_t ThriftHiveMetastore_show_locks_args::read(::apache::thrift::protocol::T
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_show_locks_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_show_locks_args");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->rqst.write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_args");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -31181,18 +31326,14 @@ uint32_t ThriftHiveMetastore_show_locks_args::write(::apache::thrift::protocol::
      }


    -ThriftHiveMetastore_show_locks_pargs::~ThriftHiveMetastore_show_locks_pargs() throw() {
    +ThriftHiveMetastore_get_open_txns_info_pargs::~ThriftHiveMetastore_get_open_txns_info_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_locks_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_show_locks_pargs");
    -
    - xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->rqst)).write(oprot);
    - xfer += oprot->writeFieldEnd();
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_pargs");

        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
    @@ -31200,11 +31341,11 @@ uint32_t ThriftHiveMetastore_show_locks_pargs::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_show_locks_result::~ThriftHiveMetastore_show_locks_result() throw() {
    +ThriftHiveMetastore_get_open_txns_info_result::~ThriftHiveMetastore_get_open_txns_info_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_locks_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31245,11 +31386,11 @@ uint32_t ThriftHiveMetastore_show_locks_result::read(::apache::thrift::protocol:
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_show_locks_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_show_locks_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_get_open_txns_info_result");

        if (this->__isset.success) {
          xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    @@ -31262,11 +31403,11 @@ uint32_t ThriftHiveMetastore_show_locks_result::write(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_show_locks_presult::~ThriftHiveMetastore_show_locks_presult() throw() {
    +ThriftHiveMetastore_get_open_txns_info_presult::~ThriftHiveMetastore_get_open_txns_info_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_locks_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_get_open_txns_info_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31308,11 +31449,11 @@ uint32_t ThriftHiveMetastore_show_locks_presult::read(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_heartbeat_args::~ThriftHiveMetastore_heartbeat_args() throw() {
    +ThriftHiveMetastore_open_txns_args::~ThriftHiveMetastore_open_txns_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_open_txns_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31335,8 +31476,8 @@ uint32_t ThriftHiveMetastore_heartbeat_args::read(::apache::thrift::protocol::TP
          {
            case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->ids.read(iprot);
    - this->__isset.ids = true;
    + xfer += this->rqst.read(iprot);
    + this->__isset.rqst = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31353,13 +31494,13 @@ uint32_t ThriftHiveMetastore_heartbeat_args::read(::apache::thrift::protocol::TP
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_heartbeat_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_open_txns_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_args");

    - xfer += oprot->writeFieldBegin("ids", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->ids.write(oprot);
    + xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += this->rqst.write(oprot);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -31368,17 +31509,17 @@ uint32_t ThriftHiveMetastore_heartbeat_args::write(::apache::thrift::protocol::T
      }


    -ThriftHiveMetastore_heartbeat_pargs::~ThriftHiveMetastore_heartbeat_pargs() throw() {
    +ThriftHiveMetastore_open_txns_pargs::~ThriftHiveMetastore_open_txns_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_open_txns_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_pargs");

    - xfer += oprot->writeFieldBegin("ids", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->ids)).write(oprot);
    + xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += (*(this->rqst)).write(oprot);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -31387,11 +31528,11 @@ uint32_t ThriftHiveMetastore_heartbeat_pargs::write(::apache::thrift::protocol::
      }


    -ThriftHiveMetastore_heartbeat_result::~ThriftHiveMetastore_heartbeat_result() throw() {
    +ThriftHiveMetastore_open_txns_result::~ThriftHiveMetastore_open_txns_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_open_txns_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31412,26 +31553,10 @@ uint32_t ThriftHiveMetastore_heartbeat_result::read(::apache::thrift::protocol::
          }
          switch (fid)
          {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 3:
    + case 0:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o3.read(iprot);
    - this->__isset.o3 = true;
    + xfer += this->success.read(iprot);
    + this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31448,23 +31573,15 @@ uint32_t ThriftHiveMetastore_heartbeat_result::read(::apache::thrift::protocol::
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_heartbeat_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_open_txns_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_open_txns_result");

    - if (this->__isset.o1) {
    - xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->o1.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o2) {
    - xfer += oprot->writeFieldBegin("o2", ::apache::thrift::protocol::T_STRUCT, 2);
    - xfer += this->o2.write(oprot);
    - xfer += oprot->writeFieldEnd();
    - } else if (this->__isset.o3) {
    - xfer += oprot->writeFieldBegin("o3", ::apache::thrift::protocol::T_STRUCT, 3);
    - xfer += this->o3.write(oprot);
    + if (this->__isset.success) {
    + xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    + xfer += this->success.write(oprot);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -31473,11 +31590,11 @@ uint32_t ThriftHiveMetastore_heartbeat_result::write(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_heartbeat_presult::~ThriftHiveMetastore_heartbeat_presult() throw() {
    +ThriftHiveMetastore_open_txns_presult::~ThriftHiveMetastore_open_txns_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_open_txns_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31498,26 +31615,10 @@ uint32_t ThriftHiveMetastore_heartbeat_presult::read(::apache::thrift::protocol:
          }
          switch (fid)
          {
    - case 1:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o1.read(iprot);
    - this->__isset.o1 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 2:
    - if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o2.read(iprot);
    - this->__isset.o2 = true;
    - } else {
    - xfer += iprot->skip(ftype);
    - }
    - break;
    - case 3:
    + case 0:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->o3.read(iprot);
    - this->__isset.o3 = true;
    + xfer += (*(this->success)).read(iprot);
    + this->__isset.success = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31535,11 +31636,11 @@ uint32_t ThriftHiveMetastore_heartbeat_presult::read(::apache::thrift::protocol:
      }


    -ThriftHiveMetastore_heartbeat_txn_range_args::~ThriftHiveMetastore_heartbeat_txn_range_args() throw() {
    +ThriftHiveMetastore_abort_txn_args::~ThriftHiveMetastore_abort_txn_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_abort_txn_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31562,8 +31663,8 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_args::read(::apache::thrift::pr
          {
            case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->txns.read(iprot);
    - this->__isset.txns = true;
    + xfer += this->rqst.read(iprot);
    + this->__isset.rqst = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31580,13 +31681,13 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_args::read(::apache::thrift::pr
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_abort_txn_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_txn_range_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_args");

    - xfer += oprot->writeFieldBegin("txns", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += this->txns.write(oprot);
    + xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += this->rqst.write(oprot);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -31595,17 +31696,17 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_args::write(::apache::thrift::p
      }


    -ThriftHiveMetastore_heartbeat_txn_range_pargs::~ThriftHiveMetastore_heartbeat_txn_range_pargs() throw() {
    +ThriftHiveMetastore_abort_txn_pargs::~ThriftHiveMetastore_abort_txn_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_abort_txn_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_txn_range_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_pargs");

    - xfer += oprot->writeFieldBegin("txns", ::apache::thrift::protocol::T_STRUCT, 1);
    - xfer += (*(this->txns)).write(oprot);
    + xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += (*(this->rqst)).write(oprot);
        xfer += oprot->writeFieldEnd();

        xfer += oprot->writeFieldStop();
    @@ -31614,11 +31715,11 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_pargs::write(::apache::thrift::
      }


    -ThriftHiveMetastore_heartbeat_txn_range_result::~ThriftHiveMetastore_heartbeat_txn_range_result() throw() {
    +ThriftHiveMetastore_abort_txn_result::~ThriftHiveMetastore_abort_txn_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_abort_txn_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31639,10 +31740,10 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_result::read(::apache::thrift::
          }
          switch (fid)
          {
    - case 0:
    + case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += this->success.read(iprot);
    - this->__isset.success = true;
    + xfer += this->o1.read(iprot);
    + this->__isset.o1 = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31659,15 +31760,15 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_result::read(::apache::thrift::
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_abort_txn_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_heartbeat_txn_range_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_abort_txn_result");

    - if (this->__isset.success) {
    - xfer += oprot->writeFieldBegin("success", ::apache::thrift::protocol::T_STRUCT, 0);
    - xfer += this->success.write(oprot);
    + if (this->__isset.o1) {
    + xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += this->o1.write(oprot);
          xfer += oprot->writeFieldEnd();
        }
        xfer += oprot->writeFieldStop();
    @@ -31676,11 +31777,11 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_result::write(::apache::thrift:
      }


    -ThriftHiveMetastore_heartbeat_txn_range_presult::~ThriftHiveMetastore_heartbeat_txn_range_presult() throw() {
    +ThriftHiveMetastore_abort_txn_presult::~ThriftHiveMetastore_abort_txn_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_heartbeat_txn_range_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_abort_txn_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31701,10 +31802,10 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_presult::read(::apache::thrift:
          }
          switch (fid)
          {
    - case 0:
    + case 1:
              if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    - xfer += (*(this->success)).read(iprot);
    - this->__isset.success = true;
    + xfer += this->o1.read(iprot);
    + this->__isset.o1 = true;
              } else {
                xfer += iprot->skip(ftype);
              }
    @@ -31722,11 +31823,11 @@ uint32_t ThriftHiveMetastore_heartbeat_txn_range_presult::read(::apache::thrift:
      }


    -ThriftHiveMetastore_compact_args::~ThriftHiveMetastore_compact_args() throw() {
    +ThriftHiveMetastore_commit_txn_args::~ThriftHiveMetastore_commit_txn_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_compact_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_commit_txn_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31767,10 +31868,10 @@ uint32_t ThriftHiveMetastore_compact_args::read(::apache::thrift::protocol::TPro
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_compact_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_commit_txn_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_compact_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_args");

        xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
        xfer += this->rqst.write(oprot);
    @@ -31782,14 +31883,14 @@ uint32_t ThriftHiveMetastore_compact_args::write(::apache::thrift::protocol::TPr
      }


    -ThriftHiveMetastore_compact_pargs::~ThriftHiveMetastore_compact_pargs() throw() {
    +ThriftHiveMetastore_commit_txn_pargs::~ThriftHiveMetastore_commit_txn_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_compact_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_commit_txn_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_compact_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_pargs");

        xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
        xfer += (*(this->rqst)).write(oprot);
    @@ -31801,11 +31902,11 @@ uint32_t ThriftHiveMetastore_compact_pargs::write(::apache::thrift::protocol::TP
      }


    -ThriftHiveMetastore_compact_result::~ThriftHiveMetastore_compact_result() throw() {
    +ThriftHiveMetastore_commit_txn_result::~ThriftHiveMetastore_commit_txn_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_compact_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_commit_txn_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31824,7 +31925,28 @@ uint32_t ThriftHiveMetastore_compact_result::read(::apache::thrift::protocol::TP
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - xfer += iprot->skip(ftype);
    + switch (fid)
    + {
    + case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o1.read(iprot);
    + this->__isset.o1 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 2:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o2.read(iprot);
    + this->__isset.o2 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
          xfer += iprot->readFieldEnd();
        }

    @@ -31833,23 +31955,32 @@ uint32_t ThriftHiveMetastore_compact_result::read(::apache::thrift::protocol::TP
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_compact_result::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_commit_txn_result::write(::apache::thrift::protocol::TProtocol* oprot) const {

        uint32_t xfer = 0;

    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_compact_result");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_commit_txn_result");

    + if (this->__isset.o1) {
    + xfer += oprot->writeFieldBegin("o1", ::apache::thrift::protocol::T_STRUCT, 1);
    + xfer += this->o1.write(oprot);
    + xfer += oprot->writeFieldEnd();
    + } else if (this->__isset.o2) {
    + xfer += oprot->writeFieldBegin("o2", ::apache::thrift::protocol::T_STRUCT, 2);
    + xfer += this->o2.write(oprot);
    + xfer += oprot->writeFieldEnd();
    + }
        xfer += oprot->writeFieldStop();
        xfer += oprot->writeStructEnd();
        return xfer;
      }


    -ThriftHiveMetastore_compact_presult::~ThriftHiveMetastore_compact_presult() throw() {
    +ThriftHiveMetastore_commit_txn_presult::~ThriftHiveMetastore_commit_txn_presult() throw() {
      }


    -uint32_t ThriftHiveMetastore_compact_presult::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_commit_txn_presult::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31868,7 +31999,28 @@ uint32_t ThriftHiveMetastore_compact_presult::read(::apache::thrift::protocol::T
          if (ftype == ::apache::thrift::protocol::T_STOP) {
            break;
          }
    - xfer += iprot->skip(ftype);
    + switch (fid)
    + {
    + case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o1.read(iprot);
    + this->__isset.o1 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 2:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o2.read(iprot);
    + this->__isset.o2 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + default:
    + xfer += iprot->skip(ftype);
    + break;
    + }
          xfer += iprot->readFieldEnd();
        }

    @@ -31878,11 +32030,11 @@ uint32_t ThriftHiveMetastore_compact_presult::read(::apache::thrift::protocol::T
      }


    -ThriftHiveMetastore_show_compact_args::~ThriftHiveMetastore_show_compact_args() throw() {
    +ThriftHiveMetastore_lock_args::~ThriftHiveMetastore_lock_args() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_compact_args::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_lock_args::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31923,10 +32075,10 @@ uint32_t ThriftHiveMetastore_show_compact_args::read(::apache::thrift::protocol:
        return xfer;
      }

    -uint32_t ThriftHiveMetastore_show_compact_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_lock_args::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_show_compact_args");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_lock_args");

        xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
        xfer += this->rqst.write(oprot);
    @@ -31938,14 +32090,14 @@ uint32_t ThriftHiveMetastore_show_compact_args::write(::apache::thrift::protocol
      }


    -ThriftHiveMetastore_show_compact_pargs::~ThriftHiveMetastore_show_compact_pargs() throw() {
    +ThriftHiveMetastore_lock_pargs::~ThriftHiveMetastore_lock_pargs() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_compact_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
    +uint32_t ThriftHiveMetastore_lock_pargs::write(::apache::thrift::protocol::TProtocol* oprot) const {
        uint32_t xfer = 0;
        apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot);
    - xfer += oprot->writeStructBegin("ThriftHiveMetastore_show_compact_pargs");
    + xfer += oprot->writeStructBegin("ThriftHiveMetastore_lock_pargs");

        xfer += oprot->writeFieldBegin("rqst", ::apache::thrift::protocol::T_STRUCT, 1);
        xfer += (*(this->rqst)).write(oprot);
    @@ -31957,11 +32109,11 @@ uint32_t ThriftHiveMetastore_show_compact_pargs::write(::apache::thrift::protoco
      }


    -ThriftHiveMetastore_show_compact_result::~ThriftHiveMetastore_show_compact_result() throw() {
    +ThriftHiveMetastore_lock_result::~ThriftHiveMetastore_lock_result() throw() {
      }


    -uint32_t ThriftHiveMetastore_show_compact_result::read(::apache::thrift::protocol::TProtocol* iprot) {
    +uint32_t ThriftHiveMetastore_lock_result::read(::apache::thrift::protocol::TProtocol* iprot) {

        apache::thrift::protocol::TInputRecursionTracker tracker(*iprot);
        uint32_t xfer = 0;
    @@ -31990,6 +32142,22 @@ uint32_t ThriftHiveMetastore_show_compact_result::read(::apache::thrift::protoco
                xfer += iprot->skip(ftype);
              }
              break;
    + case 1:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o1.read(iprot);
    + this->__isset.o1 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + break;
    + case 2:
    + if (ftype == ::apache::thrift::protocol::T_STRUCT) {
    + xfer += this->o2.read(iprot);
    + this->__isset.o2 = true;
    + } else {
    + xfer += iprot->skip(ftype);
    + }
    + b

    <TRUNCATED>
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
    index bcc7790..13e30db 100644
    --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
    +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ThriftHiveMetastore.java
    @@ -264,6 +264,22 @@ public class ThriftHiveMetastore {

          public void cancel_delegation_token(String token_str_form) throws MetaException, org.apache.thrift.TException;

    + public boolean add_token(String token_identifier, String delegation_token) throws org.apache.thrift.TException;
    +
    + public boolean remove_token(String token_identifier) throws org.apache.thrift.TException;
    +
    + public String get_token(String token_identifier) throws org.apache.thrift.TException;
    +
    + public List<String> get_all_token_identifiers() throws org.apache.thrift.TException;
    +
    + public int add_master_key(String key) throws MetaException, org.apache.thrift.TException;
    +
    + public void update_master_key(int seq_number, String key) throws NoSuchObjectException, MetaException, org.apache.thrift.TException;
    +
    + public boolean remove_master_key(int key_seq) throws org.apache.thrift.TException;
    +
    + public List<String> get_master_keys() throws org.apache.thrift.TException;
    +
          public GetOpenTxnsResponse get_open_txns() throws org.apache.thrift.TException;

          public GetOpenTxnsInfoResponse get_open_txns_info() throws org.apache.thrift.TException;
    @@ -538,6 +554,22 @@ public class ThriftHiveMetastore {

          public void cancel_delegation_token(String token_str_form, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;

    + public void add_token(String token_identifier, String delegation_token, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void remove_token(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void get_token(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void get_all_token_identifiers(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void add_master_key(String key, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void update_master_key(int seq_number, String key, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void remove_master_key(int key_seq, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
    + public void get_master_keys(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    +
          public void get_open_txns(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;

          public void get_open_txns_info(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
    @@ -3975,6 +4007,196 @@ public class ThriftHiveMetastore {
            return;
          }

    + public boolean add_token(String token_identifier, String delegation_token) throws org.apache.thrift.TException
    + {
    + send_add_token(token_identifier, delegation_token);
    + return recv_add_token();
    + }
    +
    + public void send_add_token(String token_identifier, String delegation_token) throws org.apache.thrift.TException
    + {
    + add_token_args args = new add_token_args();
    + args.setToken_identifier(token_identifier);
    + args.setDelegation_token(delegation_token);
    + sendBase("add_token", args);
    + }
    +
    + public boolean recv_add_token() throws org.apache.thrift.TException
    + {
    + add_token_result result = new add_token_result();
    + receiveBase(result, "add_token");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "add_token failed: unknown result");
    + }
    +
    + public boolean remove_token(String token_identifier) throws org.apache.thrift.TException
    + {
    + send_remove_token(token_identifier);
    + return recv_remove_token();
    + }
    +
    + public void send_remove_token(String token_identifier) throws org.apache.thrift.TException
    + {
    + remove_token_args args = new remove_token_args();
    + args.setToken_identifier(token_identifier);
    + sendBase("remove_token", args);
    + }
    +
    + public boolean recv_remove_token() throws org.apache.thrift.TException
    + {
    + remove_token_result result = new remove_token_result();
    + receiveBase(result, "remove_token");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "remove_token failed: unknown result");
    + }
    +
    + public String get_token(String token_identifier) throws org.apache.thrift.TException
    + {
    + send_get_token(token_identifier);
    + return recv_get_token();
    + }
    +
    + public void send_get_token(String token_identifier) throws org.apache.thrift.TException
    + {
    + get_token_args args = new get_token_args();
    + args.setToken_identifier(token_identifier);
    + sendBase("get_token", args);
    + }
    +
    + public String recv_get_token() throws org.apache.thrift.TException
    + {
    + get_token_result result = new get_token_result();
    + receiveBase(result, "get_token");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "get_token failed: unknown result");
    + }
    +
    + public List<String> get_all_token_identifiers() throws org.apache.thrift.TException
    + {
    + send_get_all_token_identifiers();
    + return recv_get_all_token_identifiers();
    + }
    +
    + public void send_get_all_token_identifiers() throws org.apache.thrift.TException
    + {
    + get_all_token_identifiers_args args = new get_all_token_identifiers_args();
    + sendBase("get_all_token_identifiers", args);
    + }
    +
    + public List<String> recv_get_all_token_identifiers() throws org.apache.thrift.TException
    + {
    + get_all_token_identifiers_result result = new get_all_token_identifiers_result();
    + receiveBase(result, "get_all_token_identifiers");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "get_all_token_identifiers failed: unknown result");
    + }
    +
    + public int add_master_key(String key) throws MetaException, org.apache.thrift.TException
    + {
    + send_add_master_key(key);
    + return recv_add_master_key();
    + }
    +
    + public void send_add_master_key(String key) throws org.apache.thrift.TException
    + {
    + add_master_key_args args = new add_master_key_args();
    + args.setKey(key);
    + sendBase("add_master_key", args);
    + }
    +
    + public int recv_add_master_key() throws MetaException, org.apache.thrift.TException
    + {
    + add_master_key_result result = new add_master_key_result();
    + receiveBase(result, "add_master_key");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + if (result.o1 != null) {
    + throw result.o1;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "add_master_key failed: unknown result");
    + }
    +
    + public void update_master_key(int seq_number, String key) throws NoSuchObjectException, MetaException, org.apache.thrift.TException
    + {
    + send_update_master_key(seq_number, key);
    + recv_update_master_key();
    + }
    +
    + public void send_update_master_key(int seq_number, String key) throws org.apache.thrift.TException
    + {
    + update_master_key_args args = new update_master_key_args();
    + args.setSeq_number(seq_number);
    + args.setKey(key);
    + sendBase("update_master_key", args);
    + }
    +
    + public void recv_update_master_key() throws NoSuchObjectException, MetaException, org.apache.thrift.TException
    + {
    + update_master_key_result result = new update_master_key_result();
    + receiveBase(result, "update_master_key");
    + if (result.o1 != null) {
    + throw result.o1;
    + }
    + if (result.o2 != null) {
    + throw result.o2;
    + }
    + return;
    + }
    +
    + public boolean remove_master_key(int key_seq) throws org.apache.thrift.TException
    + {
    + send_remove_master_key(key_seq);
    + return recv_remove_master_key();
    + }
    +
    + public void send_remove_master_key(int key_seq) throws org.apache.thrift.TException
    + {
    + remove_master_key_args args = new remove_master_key_args();
    + args.setKey_seq(key_seq);
    + sendBase("remove_master_key", args);
    + }
    +
    + public boolean recv_remove_master_key() throws org.apache.thrift.TException
    + {
    + remove_master_key_result result = new remove_master_key_result();
    + receiveBase(result, "remove_master_key");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "remove_master_key failed: unknown result");
    + }
    +
    + public List<String> get_master_keys() throws org.apache.thrift.TException
    + {
    + send_get_master_keys();
    + return recv_get_master_keys();
    + }
    +
    + public void send_get_master_keys() throws org.apache.thrift.TException
    + {
    + get_master_keys_args args = new get_master_keys_args();
    + sendBase("get_master_keys", args);
    + }
    +
    + public List<String> recv_get_master_keys() throws org.apache.thrift.TException
    + {
    + get_master_keys_result result = new get_master_keys_result();
    + receiveBase(result, "get_master_keys");
    + if (result.isSetSuccess()) {
    + return result.success;
    + }
    + throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "get_master_keys failed: unknown result");
    + }
    +
          public GetOpenTxnsResponse get_open_txns() throws org.apache.thrift.TException
          {
            send_get_open_txns();
    @@ -8606,6 +8828,262 @@ public class ThriftHiveMetastore {
            }
          }

    + public void add_token(String token_identifier, String delegation_token, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + add_token_call method_call = new add_token_call(token_identifier, delegation_token, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class add_token_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private String token_identifier;
    + private String delegation_token;
    + public add_token_call(String token_identifier, String delegation_token, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.token_identifier = token_identifier;
    + this.delegation_token = delegation_token;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("add_token", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + add_token_args args = new add_token_args();
    + args.setToken_identifier(token_identifier);
    + args.setDelegation_token(delegation_token);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public boolean getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_add_token();
    + }
    + }
    +
    + public void remove_token(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + remove_token_call method_call = new remove_token_call(token_identifier, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class remove_token_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private String token_identifier;
    + public remove_token_call(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.token_identifier = token_identifier;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("remove_token", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + remove_token_args args = new remove_token_args();
    + args.setToken_identifier(token_identifier);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public boolean getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_remove_token();
    + }
    + }
    +
    + public void get_token(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + get_token_call method_call = new get_token_call(token_identifier, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class get_token_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private String token_identifier;
    + public get_token_call(String token_identifier, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.token_identifier = token_identifier;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("get_token", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + get_token_args args = new get_token_args();
    + args.setToken_identifier(token_identifier);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public String getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_get_token();
    + }
    + }
    +
    + public void get_all_token_identifiers(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + get_all_token_identifiers_call method_call = new get_all_token_identifiers_call(resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class get_all_token_identifiers_call extends org.apache.thrift.async.TAsyncMethodCall {
    + public get_all_token_identifiers_call(org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("get_all_token_identifiers", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + get_all_token_identifiers_args args = new get_all_token_identifiers_args();
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public List<String> getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_get_all_token_identifiers();
    + }
    + }
    +
    + public void add_master_key(String key, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + add_master_key_call method_call = new add_master_key_call(key, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class add_master_key_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private String key;
    + public add_master_key_call(String key, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.key = key;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("add_master_key", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + add_master_key_args args = new add_master_key_args();
    + args.setKey(key);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public int getResult() throws MetaException, org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_add_master_key();
    + }
    + }
    +
    + public void update_master_key(int seq_number, String key, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + update_master_key_call method_call = new update_master_key_call(seq_number, key, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class update_master_key_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private int seq_number;
    + private String key;
    + public update_master_key_call(int seq_number, String key, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.seq_number = seq_number;
    + this.key = key;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("update_master_key", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + update_master_key_args args = new update_master_key_args();
    + args.setSeq_number(seq_number);
    + args.setKey(key);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public void getResult() throws NoSuchObjectException, MetaException, org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + (new Client(prot)).recv_update_master_key();
    + }
    + }
    +
    + public void remove_master_key(int key_seq, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + remove_master_key_call method_call = new remove_master_key_call(key_seq, resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class remove_master_key_call extends org.apache.thrift.async.TAsyncMethodCall {
    + private int key_seq;
    + public remove_master_key_call(int key_seq, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + this.key_seq = key_seq;
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("remove_master_key", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + remove_master_key_args args = new remove_master_key_args();
    + args.setKey_seq(key_seq);
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public boolean getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_remove_master_key();
    + }
    + }
    +
    + public void get_master_keys(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
    + checkReady();
    + get_master_keys_call method_call = new get_master_keys_call(resultHandler, this, ___protocolFactory, ___transport);
    + this.___currentMethod = method_call;
    + ___manager.call(method_call);
    + }
    +
    + public static class get_master_keys_call extends org.apache.thrift.async.TAsyncMethodCall {
    + public get_master_keys_call(org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
    + super(client, protocolFactory, transport, resultHandler, false);
    + }
    +
    + public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
    + prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("get_master_keys", org.apache.thrift.protocol.TMessageType.CALL, 0));
    + get_master_keys_args args = new get_master_keys_args();
    + args.write(prot);
    + prot.writeMessageEnd();
    + }
    +
    + public List<String> getResult() throws org.apache.thrift.TException {
    + if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
    + throw new IllegalStateException("Method call not finished!");
    + }
    + org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
    + org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
    + return (new Client(prot)).recv_get_master_keys();
    + }
    + }
    +
          public void get_open_txns(org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
            checkReady();
            get_open_txns_call method_call = new get_open_txns_call(resultHandler, this, ___protocolFactory, ___transport);
    @@ -9486,6 +9964,14 @@ public class ThriftHiveMetastore {
            processMap.put("get_delegation_token", new get_delegation_token());
            processMap.put("renew_delegation_token", new renew_delegation_token());
            processMap.put("cancel_delegation_token", new cancel_delegation_token());
    + processMap.put("add_token", new add_token());
    + processMap.put("remove_token", new remove_token());
    + processMap.put("get_token", new get_token());
    + processMap.put("get_all_token_identifiers", new get_all_token_identifiers());
    + processMap.put("add_master_key", new add_master_key());
    + processMap.put("update_master_key", new update_master_key());
    + processMap.put("remove_master_key", new remove_master_key());
    + processMap.put("get_master_keys", new get_master_keys());
            processMap.put("get_open_txns", new get_open_txns());
            processMap.put("get_open_txns_info", new get_open_txns_info());
            processMap.put("open_txns", new open_txns());
    @@ -12457,6 +12943,180 @@ public class ThriftHiveMetastore {
            }
          }

    + public static class add_token<I extends Iface> extends org.apache.thrift.ProcessFunction<I, add_token_args> {
    + public add_token() {
    + super("add_token");
    + }
    +
    + public add_token_args getEmptyArgsInstance() {
    + return new add_token_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public add_token_result getResult(I iface, add_token_args args) throws org.apache.thrift.TException {
    + add_token_result result = new add_token_result();
    + result.success = iface.add_token(args.token_identifier, args.delegation_token);
    + result.setSuccessIsSet(true);
    + return result;
    + }
    + }
    +
    + public static class remove_token<I extends Iface> extends org.apache.thrift.ProcessFunction<I, remove_token_args> {
    + public remove_token() {
    + super("remove_token");
    + }
    +
    + public remove_token_args getEmptyArgsInstance() {
    + return new remove_token_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public remove_token_result getResult(I iface, remove_token_args args) throws org.apache.thrift.TException {
    + remove_token_result result = new remove_token_result();
    + result.success = iface.remove_token(args.token_identifier);
    + result.setSuccessIsSet(true);
    + return result;
    + }
    + }
    +
    + public static class get_token<I extends Iface> extends org.apache.thrift.ProcessFunction<I, get_token_args> {
    + public get_token() {
    + super("get_token");
    + }
    +
    + public get_token_args getEmptyArgsInstance() {
    + return new get_token_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public get_token_result getResult(I iface, get_token_args args) throws org.apache.thrift.TException {
    + get_token_result result = new get_token_result();
    + result.success = iface.get_token(args.token_identifier);
    + return result;
    + }
    + }
    +
    + public static class get_all_token_identifiers<I extends Iface> extends org.apache.thrift.ProcessFunction<I, get_all_token_identifiers_args> {
    + public get_all_token_identifiers() {
    + super("get_all_token_identifiers");
    + }
    +
    + public get_all_token_identifiers_args getEmptyArgsInstance() {
    + return new get_all_token_identifiers_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public get_all_token_identifiers_result getResult(I iface, get_all_token_identifiers_args args) throws org.apache.thrift.TException {
    + get_all_token_identifiers_result result = new get_all_token_identifiers_result();
    + result.success = iface.get_all_token_identifiers();
    + return result;
    + }
    + }
    +
    + public static class add_master_key<I extends Iface> extends org.apache.thrift.ProcessFunction<I, add_master_key_args> {
    + public add_master_key() {
    + super("add_master_key");
    + }
    +
    + public add_master_key_args getEmptyArgsInstance() {
    + return new add_master_key_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public add_master_key_result getResult(I iface, add_master_key_args args) throws org.apache.thrift.TException {
    + add_master_key_result result = new add_master_key_result();
    + try {
    + result.success = iface.add_master_key(args.key);
    + result.setSuccessIsSet(true);
    + } catch (MetaException o1) {
    + result.o1 = o1;
    + }
    + return result;
    + }
    + }
    +
    + public static class update_master_key<I extends Iface> extends org.apache.thrift.ProcessFunction<I, update_master_key_args> {
    + public update_master_key() {
    + super("update_master_key");
    + }
    +
    + public update_master_key_args getEmptyArgsInstance() {
    + return new update_master_key_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public update_master_key_result getResult(I iface, update_master_key_args args) throws org.apache.thrift.TException {
    + update_master_key_result result = new update_master_key_result();
    + try {
    + iface.update_master_key(args.seq_number, args.key);
    + } catch (NoSuchObjectException o1) {
    + result.o1 = o1;
    + } catch (MetaException o2) {
    + result.o2 = o2;
    + }
    + return result;
    + }
    + }
    +
    + public static class remove_master_key<I extends Iface> extends org.apache.thrift.ProcessFunction<I, remove_master_key_args> {
    + public remove_master_key() {
    + super("remove_master_key");
    + }
    +
    + public remove_master_key_args getEmptyArgsInstance() {
    + return new remove_master_key_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public remove_master_key_result getResult(I iface, remove_master_key_args args) throws org.apache.thrift.TException {
    + remove_master_key_result result = new remove_master_key_result();
    + result.success = iface.remove_master_key(args.key_seq);
    + result.setSuccessIsSet(true);
    + return result;
    + }
    + }
    +
    + public static class get_master_keys<I extends Iface> extends org.apache.thrift.ProcessFunction<I, get_master_keys_args> {
    + public get_master_keys() {
    + super("get_master_keys");
    + }
    +
    + public get_master_keys_args getEmptyArgsInstance() {
    + return new get_master_keys_args();
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public get_master_keys_result getResult(I iface, get_master_keys_args args) throws org.apache.thrift.TException {
    + get_master_keys_result result = new get_master_keys_result();
    + result.success = iface.get_master_keys();
    + return result;
    + }
    + }
    +
          public static class get_open_txns<I extends Iface> extends org.apache.thrift.ProcessFunction<I, get_open_txns_args> {
            public get_open_txns() {
              super("get_open_txns");
    @@ -13105,6 +13765,14 @@ public class ThriftHiveMetastore {
            processMap.put("get_delegation_token", new get_delegation_token());
            processMap.put("renew_delegation_token", new renew_delegation_token());
            processMap.put("cancel_delegation_token", new cancel_delegation_token());
    + processMap.put("add_token", new add_token());
    + processMap.put("remove_token", new remove_token());
    + processMap.put("get_token", new get_token());
    + processMap.put("get_all_token_identifiers", new get_all_token_identifiers());
    + processMap.put("add_master_key", new add_master_key());
    + processMap.put("update_master_key", new update_master_key());
    + processMap.put("remove_master_key", new remove_master_key());
    + processMap.put("get_master_keys", new get_master_keys());
            processMap.put("get_open_txns", new get_open_txns());
            processMap.put("get_open_txns_info", new get_open_txns_info());
            processMap.put("open_txns", new open_txns());
    @@ -20101,21 +20769,22 @@ public class ThriftHiveMetastore {
            }
          }

    - public static class get_open_txns<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_open_txns_args, GetOpenTxnsResponse> {
    - public get_open_txns() {
    - super("get_open_txns");
    + public static class add_token<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, add_token_args, Boolean> {
    + public add_token() {
    + super("add_token");
            }

    - public get_open_txns_args getEmptyArgsInstance() {
    - return new get_open_txns_args();
    + public add_token_args getEmptyArgsInstance() {
    + return new add_token_args();
            }

    - public AsyncMethodCallback<GetOpenTxnsResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<GetOpenTxnsResponse>() {
    - public void onComplete(GetOpenTxnsResponse o) {
    - get_open_txns_result result = new get_open_txns_result();
    + return new AsyncMethodCallback<Boolean>() {
    + public void onComplete(Boolean o) {
    + add_token_result result = new add_token_result();
                  result.success = o;
    + result.setSuccessIsSet(true);
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                    return;
    @@ -20127,7 +20796,7 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - get_open_txns_result result = new get_open_txns_result();
    + add_token_result result = new add_token_result();
                  {
                    msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                    msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    @@ -20147,26 +20816,27 @@ public class ThriftHiveMetastore {
              return false;
            }

    - public void start(I iface, get_open_txns_args args, org.apache.thrift.async.AsyncMethodCallback<GetOpenTxnsResponse> resultHandler) throws TException {
    - iface.get_open_txns(resultHandler);
    + public void start(I iface, add_token_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
    + iface.add_token(args.token_identifier, args.delegation_token,resultHandler);
            }
          }

    - public static class get_open_txns_info<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_open_txns_info_args, GetOpenTxnsInfoResponse> {
    - public get_open_txns_info() {
    - super("get_open_txns_info");
    + public static class remove_token<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, remove_token_args, Boolean> {
    + public remove_token() {
    + super("remove_token");
            }

    - public get_open_txns_info_args getEmptyArgsInstance() {
    - return new get_open_txns_info_args();
    + public remove_token_args getEmptyArgsInstance() {
    + return new remove_token_args();
            }

    - public AsyncMethodCallback<GetOpenTxnsInfoResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<GetOpenTxnsInfoResponse>() {
    - public void onComplete(GetOpenTxnsInfoResponse o) {
    - get_open_txns_info_result result = new get_open_txns_info_result();
    + return new AsyncMethodCallback<Boolean>() {
    + public void onComplete(Boolean o) {
    + remove_token_result result = new remove_token_result();
                  result.success = o;
    + result.setSuccessIsSet(true);
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                    return;
    @@ -20178,7 +20848,7 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - get_open_txns_info_result result = new get_open_txns_info_result();
    + remove_token_result result = new remove_token_result();
                  {
                    msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                    msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    @@ -20198,25 +20868,25 @@ public class ThriftHiveMetastore {
              return false;
            }

    - public void start(I iface, get_open_txns_info_args args, org.apache.thrift.async.AsyncMethodCallback<GetOpenTxnsInfoResponse> resultHandler) throws TException {
    - iface.get_open_txns_info(resultHandler);
    + public void start(I iface, remove_token_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
    + iface.remove_token(args.token_identifier,resultHandler);
            }
          }

    - public static class open_txns<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, open_txns_args, OpenTxnsResponse> {
    - public open_txns() {
    - super("open_txns");
    + public static class get_token<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_token_args, String> {
    + public get_token() {
    + super("get_token");
            }

    - public open_txns_args getEmptyArgsInstance() {
    - return new open_txns_args();
    + public get_token_args getEmptyArgsInstance() {
    + return new get_token_args();
            }

    - public AsyncMethodCallback<OpenTxnsResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + public AsyncMethodCallback<String> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<OpenTxnsResponse>() {
    - public void onComplete(OpenTxnsResponse o) {
    - open_txns_result result = new open_txns_result();
    + return new AsyncMethodCallback<String>() {
    + public void onComplete(String o) {
    + get_token_result result = new get_token_result();
                  result.success = o;
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    @@ -20229,63 +20899,7 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - open_txns_result result = new open_txns_result();
    - {
    - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    - msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    - }
    - try {
    - fcall.sendResponse(fb,msg,msgType,seqid);
    - return;
    - } catch (Exception ex) {
    - LOGGER.error("Exception writing to internal frame buffer", ex);
    - }
    - fb.close();
    - }
    - };
    - }
    -
    - protected boolean isOneway() {
    - return false;
    - }
    -
    - public void start(I iface, open_txns_args args, org.apache.thrift.async.AsyncMethodCallback<OpenTxnsResponse> resultHandler) throws TException {
    - iface.open_txns(args.rqst,resultHandler);
    - }
    - }
    -
    - public static class abort_txn<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, abort_txn_args, Void> {
    - public abort_txn() {
    - super("abort_txn");
    - }
    -
    - public abort_txn_args getEmptyArgsInstance() {
    - return new abort_txn_args();
    - }
    -
    - public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    - final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<Void>() {
    - public void onComplete(Void o) {
    - abort_txn_result result = new abort_txn_result();
    - try {
    - fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    - return;
    - } catch (Exception e) {
    - LOGGER.error("Exception writing to internal frame buffer", e);
    - }
    - fb.close();
    - }
    - public void onError(Exception e) {
    - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    - org.apache.thrift.TBase msg;
    - abort_txn_result result = new abort_txn_result();
    - if (e instanceof NoSuchTxnException) {
    - result.o1 = (NoSuchTxnException) e;
    - result.setO1IsSet(true);
    - msg = result;
    - }
    - else
    + get_token_result result = new get_token_result();
                  {
                    msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                    msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    @@ -20305,86 +20919,25 @@ public class ThriftHiveMetastore {
              return false;
            }

    - public void start(I iface, abort_txn_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
    - iface.abort_txn(args.rqst,resultHandler);
    + public void start(I iface, get_token_args args, org.apache.thrift.async.AsyncMethodCallback<String> resultHandler) throws TException {
    + iface.get_token(args.token_identifier,resultHandler);
            }
          }

    - public static class commit_txn<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, commit_txn_args, Void> {
    - public commit_txn() {
    - super("commit_txn");
    + public static class get_all_token_identifiers<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_all_token_identifiers_args, List<String>> {
    + public get_all_token_identifiers() {
    + super("get_all_token_identifiers");
            }

    - public commit_txn_args getEmptyArgsInstance() {
    - return new commit_txn_args();
    + public get_all_token_identifiers_args getEmptyArgsInstance() {
    + return new get_all_token_identifiers_args();
            }

    - public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    - final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<Void>() {
    - public void onComplete(Void o) {
    - commit_txn_result result = new commit_txn_result();
    - try {
    - fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    - return;
    - } catch (Exception e) {
    - LOGGER.error("Exception writing to internal frame buffer", e);
    - }
    - fb.close();
    - }
    - public void onError(Exception e) {
    - byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    - org.apache.thrift.TBase msg;
    - commit_txn_result result = new commit_txn_result();
    - if (e instanceof NoSuchTxnException) {
    - result.o1 = (NoSuchTxnException) e;
    - result.setO1IsSet(true);
    - msg = result;
    - }
    - else if (e instanceof TxnAbortedException) {
    - result.o2 = (TxnAbortedException) e;
    - result.setO2IsSet(true);
    - msg = result;
    - }
    - else
    - {
    - msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    - msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    - }
    - try {
    - fcall.sendResponse(fb,msg,msgType,seqid);
    - return;
    - } catch (Exception ex) {
    - LOGGER.error("Exception writing to internal frame buffer", ex);
    - }
    - fb.close();
    - }
    - };
    - }
    -
    - protected boolean isOneway() {
    - return false;
    - }
    -
    - public void start(I iface, commit_txn_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
    - iface.commit_txn(args.rqst,resultHandler);
    - }
    - }
    -
    - public static class lock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, lock_args, LockResponse> {
    - public lock() {
    - super("lock");
    - }
    -
    - public lock_args getEmptyArgsInstance() {
    - return new lock_args();
    - }
    -
    - public AsyncMethodCallback<LockResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + public AsyncMethodCallback<List<String>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<LockResponse>() {
    - public void onComplete(LockResponse o) {
    - lock_result result = new lock_result();
    + return new AsyncMethodCallback<List<String>>() {
    + public void onComplete(List<String> o) {
    + get_all_token_identifiers_result result = new get_all_token_identifiers_result();
                  result.success = o;
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    @@ -20397,18 +20950,7 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - lock_result result = new lock_result();
    - if (e instanceof NoSuchTxnException) {
    - result.o1 = (NoSuchTxnException) e;
    - result.setO1IsSet(true);
    - msg = result;
    - }
    - else if (e instanceof TxnAbortedException) {
    - result.o2 = (TxnAbortedException) e;
    - result.setO2IsSet(true);
    - msg = result;
    - }
    - else
    + get_all_token_identifiers_result result = new get_all_token_identifiers_result();
                  {
                    msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
                    msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    @@ -20428,26 +20970,27 @@ public class ThriftHiveMetastore {
              return false;
            }

    - public void start(I iface, lock_args args, org.apache.thrift.async.AsyncMethodCallback<LockResponse> resultHandler) throws TException {
    - iface.lock(args.rqst,resultHandler);
    + public void start(I iface, get_all_token_identifiers_args args, org.apache.thrift.async.AsyncMethodCallback<List<String>> resultHandler) throws TException {
    + iface.get_all_token_identifiers(resultHandler);
            }
          }

    - public static class check_lock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, check_lock_args, LockResponse> {
    - public check_lock() {
    - super("check_lock");
    + public static class add_master_key<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, add_master_key_args, Integer> {
    + public add_master_key() {
    + super("add_master_key");
            }

    - public check_lock_args getEmptyArgsInstance() {
    - return new check_lock_args();
    + public add_master_key_args getEmptyArgsInstance() {
    + return new add_master_key_args();
            }

    - public AsyncMethodCallback<LockResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + public AsyncMethodCallback<Integer> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
    - return new AsyncMethodCallback<LockResponse>() {
    - public void onComplete(LockResponse o) {
    - check_lock_result result = new check_lock_result();
    + return new AsyncMethodCallback<Integer>() {
    + public void onComplete(Integer o) {
    + add_master_key_result result = new add_master_key_result();
                  result.success = o;
    + result.setSuccessIsSet(true);
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                    return;
    @@ -20459,22 +21002,12 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - check_lock_result result = new check_lock_result();
    - if (e instanceof NoSuchTxnException) {
    - result.o1 = (NoSuchTxnException) e;
    + add_master_key_result result = new add_master_key_result();
    + if (e instanceof MetaException) {
    + result.o1 = (MetaException) e;
                              result.setO1IsSet(true);
                              msg = result;
                  }
    - else if (e instanceof TxnAbortedException) {
    - result.o2 = (TxnAbortedException) e;
    - result.setO2IsSet(true);
    - msg = result;
    - }
    - else if (e instanceof NoSuchLockException) {
    - result.o3 = (NoSuchLockException) e;
    - result.setO3IsSet(true);
    - msg = result;
    - }
                   else
                  {
                    msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    @@ -20495,25 +21028,25 @@ public class ThriftHiveMetastore {
              return false;
            }

    - public void start(I iface, check_lock_args args, org.apache.thrift.async.AsyncMethodCallback<LockResponse> resultHandler) throws TException {
    - iface.check_lock(args.rqst,resultHandler);
    + public void start(I iface, add_master_key_args args, org.apache.thrift.async.AsyncMethodCallback<Integer> resultHandler) throws TException {
    + iface.add_master_key(args.key,resultHandler);
            }
          }

    - public static class unlock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, unlock_args, Void> {
    - public unlock() {
    - super("unlock");
    + public static class update_master_key<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, update_master_key_args, Void> {
    + public update_master_key() {
    + super("update_master_key");
            }

    - public unlock_args getEmptyArgsInstance() {
    - return new unlock_args();
    + public update_master_key_args getEmptyArgsInstance() {
    + return new update_master_key_args();
            }

            public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
              final org.apache.thrift.AsyncProcessFunction fcall = this;
              return new AsyncMethodCallback<Void>() {
                public void onComplete(Void o) {
    - unlock_result result = new unlock_result();
    + update_master_key_result result = new update_master_key_result();
                  try {
                    fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
                    return;
    @@ -20525,14 +21058,577 @@ public class ThriftHiveMetastore {
                public void onError(Exception e) {
                  byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
                  org.apache.thrift.TBase msg;
    - unlock_result result = new unlock_result();
    - if (e instanceof NoSuchLockException) {
    - result.o1 = (NoSuchLockException) e;
    + update_master_key_result result = new update_master_key_result();
    + if (e instanceof NoSuchObjectException) {
    + result.o1 = (NoSuchObjectException) e;
                              result.setO1IsSet(true);
                              msg = result;
                  }
    - else if (e instanceof TxnOpenException) {
    - result.o2 = (TxnOpenException) e;
    + else if (e instanceof MetaException) {
    + result.o2 = (MetaException) e;
    + result.setO2IsSet(true);
    + msg = result;
    + }
    + else
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, update_master_key_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
    + iface.update_master_key(args.seq_number, args.key,resultHandler);
    + }
    + }
    +
    + public static class remove_master_key<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, remove_master_key_args, Boolean> {
    + public remove_master_key() {
    + super("remove_master_key");
    + }
    +
    + public remove_master_key_args getEmptyArgsInstance() {
    + return new remove_master_key_args();
    + }
    +
    + public AsyncMethodCallback<Boolean> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<Boolean>() {
    + public void onComplete(Boolean o) {
    + remove_master_key_result result = new remove_master_key_result();
    + result.success = o;
    + result.setSuccessIsSet(true);
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + remove_master_key_result result = new remove_master_key_result();
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, remove_master_key_args args, org.apache.thrift.async.AsyncMethodCallback<Boolean> resultHandler) throws TException {
    + iface.remove_master_key(args.key_seq,resultHandler);
    + }
    + }
    +
    + public static class get_master_keys<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_master_keys_args, List<String>> {
    + public get_master_keys() {
    + super("get_master_keys");
    + }
    +
    + public get_master_keys_args getEmptyArgsInstance() {
    + return new get_master_keys_args();
    + }
    +
    + public AsyncMethodCallback<List<String>> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<List<String>>() {
    + public void onComplete(List<String> o) {
    + get_master_keys_result result = new get_master_keys_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + get_master_keys_result result = new get_master_keys_result();
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, get_master_keys_args args, org.apache.thrift.async.AsyncMethodCallback<List<String>> resultHandler) throws TException {
    + iface.get_master_keys(resultHandler);
    + }
    + }
    +
    + public static class get_open_txns<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_open_txns_args, GetOpenTxnsResponse> {
    + public get_open_txns() {
    + super("get_open_txns");
    + }
    +
    + public get_open_txns_args getEmptyArgsInstance() {
    + return new get_open_txns_args();
    + }
    +
    + public AsyncMethodCallback<GetOpenTxnsResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<GetOpenTxnsResponse>() {
    + public void onComplete(GetOpenTxnsResponse o) {
    + get_open_txns_result result = new get_open_txns_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + get_open_txns_result result = new get_open_txns_result();
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, get_open_txns_args args, org.apache.thrift.async.AsyncMethodCallback<GetOpenTxnsResponse> resultHandler) throws TException {
    + iface.get_open_txns(resultHandler);
    + }
    + }
    +
    + public static class get_open_txns_info<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, get_open_txns_info_args, GetOpenTxnsInfoResponse> {
    + public get_open_txns_info() {
    + super("get_open_txns_info");
    + }
    +
    + public get_open_txns_info_args getEmptyArgsInstance() {
    + return new get_open_txns_info_args();
    + }
    +
    + public AsyncMethodCallback<GetOpenTxnsInfoResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<GetOpenTxnsInfoResponse>() {
    + public void onComplete(GetOpenTxnsInfoResponse o) {
    + get_open_txns_info_result result = new get_open_txns_info_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + get_open_txns_info_result result = new get_open_txns_info_result();
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, get_open_txns_info_args args, org.apache.thrift.async.AsyncMethodCallback<GetOpenTxnsInfoResponse> resultHandler) throws TException {
    + iface.get_open_txns_info(resultHandler);
    + }
    + }
    +
    + public static class open_txns<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, open_txns_args, OpenTxnsResponse> {
    + public open_txns() {
    + super("open_txns");
    + }
    +
    + public open_txns_args getEmptyArgsInstance() {
    + return new open_txns_args();
    + }
    +
    + public AsyncMethodCallback<OpenTxnsResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<OpenTxnsResponse>() {
    + public void onComplete(OpenTxnsResponse o) {
    + open_txns_result result = new open_txns_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + open_txns_result result = new open_txns_result();
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, open_txns_args args, org.apache.thrift.async.AsyncMethodCallback<OpenTxnsResponse> resultHandler) throws TException {
    + iface.open_txns(args.rqst,resultHandler);
    + }
    + }
    +
    + public static class abort_txn<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, abort_txn_args, Void> {
    + public abort_txn() {
    + super("abort_txn");
    + }
    +
    + public abort_txn_args getEmptyArgsInstance() {
    + return new abort_txn_args();
    + }
    +
    + public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<Void>() {
    + public void onComplete(Void o) {
    + abort_txn_result result = new abort_txn_result();
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + abort_txn_result result = new abort_txn_result();
    + if (e instanceof NoSuchTxnException) {
    + result.o1 = (NoSuchTxnException) e;
    + result.setO1IsSet(true);
    + msg = result;
    + }
    + else
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, abort_txn_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
    + iface.abort_txn(args.rqst,resultHandler);
    + }
    + }
    +
    + public static class commit_txn<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, commit_txn_args, Void> {
    + public commit_txn() {
    + super("commit_txn");
    + }
    +
    + public commit_txn_args getEmptyArgsInstance() {
    + return new commit_txn_args();
    + }
    +
    + public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<Void>() {
    + public void onComplete(Void o) {
    + commit_txn_result result = new commit_txn_result();
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + commit_txn_result result = new commit_txn_result();
    + if (e instanceof NoSuchTxnException) {
    + result.o1 = (NoSuchTxnException) e;
    + result.setO1IsSet(true);
    + msg = result;
    + }
    + else if (e instanceof TxnAbortedException) {
    + result.o2 = (TxnAbortedException) e;
    + result.setO2IsSet(true);
    + msg = result;
    + }
    + else
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, commit_txn_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
    + iface.commit_txn(args.rqst,resultHandler);
    + }
    + }
    +
    + public static class lock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, lock_args, LockResponse> {
    + public lock() {
    + super("lock");
    + }
    +
    + public lock_args getEmptyArgsInstance() {
    + return new lock_args();
    + }
    +
    + public AsyncMethodCallback<LockResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<LockResponse>() {
    + public void onComplete(LockResponse o) {
    + lock_result result = new lock_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + lock_result result = new lock_result();
    + if (e instanceof NoSuchTxnException) {
    + result.o1 = (NoSuchTxnException) e;
    + result.setO1IsSet(true);
    + msg = result;
    + }
    + else if (e instanceof TxnAbortedException) {
    + result.o2 = (TxnAbortedException) e;
    + result.setO2IsSet(true);
    + msg = result;
    + }
    + else
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, lock_args args, org.apache.thrift.async.AsyncMethodCallback<LockResponse> resultHandler) throws TException {
    + iface.lock(args.rqst,resultHandler);
    + }
    + }
    +
    + public static class check_lock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, check_lock_args, LockResponse> {
    + public check_lock() {
    + super("check_lock");
    + }
    +
    + public check_lock_args getEmptyArgsInstance() {
    + return new check_lock_args();
    + }
    +
    + public AsyncMethodCallback<LockResponse> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<LockResponse>() {
    + public void onComplete(LockResponse o) {
    + check_lock_result result = new check_lock_result();
    + result.success = o;
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + check_lock_result result = new check_lock_result();
    + if (e instanceof NoSuchTxnException) {
    + result.o1 = (NoSuchTxnException) e;
    + result.setO1IsSet(true);
    + msg = result;
    + }
    + else if (e instanceof TxnAbortedException) {
    + result.o2 = (TxnAbortedException) e;
    + result.setO2IsSet(true);
    + msg = result;
    + }
    + else if (e instanceof NoSuchLockException) {
    + result.o3 = (NoSuchLockException) e;
    + result.setO3IsSet(true);
    + msg = result;
    + }
    + else
    + {
    + msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
    + msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
    + }
    + try {
    + fcall.sendResponse(fb,msg,msgType,seqid);
    + return;
    + } catch (Exception ex) {
    + LOGGER.error("Exception writing to internal frame buffer", ex);
    + }
    + fb.close();
    + }
    + };
    + }
    +
    + protected boolean isOneway() {
    + return false;
    + }
    +
    + public void start(I iface, check_lock_args args, org.apache.thrift.async.AsyncMethodCallback<LockResponse> resultHandler) throws TException {
    + iface.check_lock(args.rqst,resultHandler);
    + }
    + }
    +
    + public static class unlock<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, unlock_args, Void> {
    + public unlock() {
    + super("unlock");
    + }
    +
    + public unlock_args getEmptyArgsInstance() {
    + return new unlock_args();
    + }
    +
    + public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
    + final org.apache.thrift.AsyncProcessFunction fcall = this;
    + return new AsyncMethodCallback<Void>() {
    + public void onComplete(Void o) {
    + unlock_result result = new unlock_result();
    + try {
    + fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
    + return;
    + } catch (Exception e) {
    + LOGGER.error("Exception writing to internal frame buffer", e);
    + }
    + fb.close();
    + }
    + public void onError(Exception e) {
    + byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
    + org.apache.thrift.TBase msg;
    + unlock_result result = new unlock_result();
    + if (e instanceof NoSuchLockException) {
    + result.o1 = (NoSuchLockException) e;
    + result.setO1IsSet(true);
    + msg = result;
    + }
    + else if (e instanceof TxnOpenException) {
    + result.o2 = (TxnOpenException) e;
                              result.setO2IsSet(true);
                              msg = result;
                  }
    @@ -141432,85 +142528,6312 @@ public class ThriftHiveMetastore {
          static {
            Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
            tmpMap.put(_Fields.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT,
    - new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST,
    - new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    + new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST,
    + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    + tmpMap.put(_Fields.O1, new org.apache.thrift.meta_data.FieldMetaData("o1", org.apache.thrift.TFieldRequirementType.DEFAULT,
    + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
    + metaDataMap = Collections.unmodifiableMap(tmpMap);
    + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(set_ugi_result.class, metaDataMap);
    + }
    +
    + public set_ugi_result() {
    + }
    +
    + public set_ugi_result(
    + List<String> success,
    + MetaException o1)
    + {
    + this();
    + this.success = success;
    + this.o1 = o1;
    + }
    +
    + /**
    + * Performs a deep copy on <i>other</i>.
    + */
    + public set_ugi_result(set_ugi_result other) {
    + if (other.isSetSuccess()) {
    + List<String> __this__success = new ArrayList<String>(other.success);
    + this.success = __this__success;
    + }
    + if (other.isSetO1()) {
    + this.o1 = new MetaException(other.o1);
    + }
    + }
    +
    + public set_ugi_result deepCopy() {
    + return new set_ugi_result(this);
    + }
    +
    + @Override
    + public void clear() {
    + this.success = null;
    + this.o1 = null;
    + }
    +
    + public int getSuccessSize() {
    + return (this.success == null) ? 0 : this.success.size();
    + }
    +
    + public java.util.Iterator<String> getSuccessIterator() {
    + return (this.success == null) ? null : this.success.iterator();
    + }
    +
    + public void addToSuccess(String elem) {
    + if (this.success == null) {
    + this.success = new ArrayList<String>();
    + }
    + this.success.add(elem);
    + }
    +
    + public List<String> getSuccess() {
    + return this.success;
    + }
    +
    + public void setSuccess(List<String> success) {
    + this.success = success;
    + }
    +
    + public void unsetSuccess() {
    + this.success = null;
    + }
    +
    + /** Returns true if field success is set (has been assigned a value) and false otherwise */
    + public boolean isSetSuccess() {
    + return this.success != null;
    + }
    +
    + public void setSuccessIsSet(boolean value) {
    + if (!value) {
    + this.success = null;
    + }
    + }
    +
    + public MetaException getO1() {
    + return this.o1;
    + }
    +
    + public void setO1(MetaException o1) {
    + this.o1 = o1;
    + }
    +
    + public void unsetO1() {
    + this.o1 = null;
    + }
    +
    + /** Returns true if field o1 is set (has been assigned a value) and false otherwise */
    + public boolean isSetO1() {
    + return this.o1 != null;
    + }
    +
    + public void setO1IsSet(boolean value) {
    + if (!value) {
    + this.o1 = null;
    + }
    + }
    +
    + public void setFieldValue(_Fields field, Object value) {
    + switch (field) {
    + case SUCCESS:
    + if (value == null) {
    + unsetSuccess();
    + } else {
    + setSuccess((List<String>)value);
    + }
    + break;
    +
    + case O1:
    + if (value == null) {
    + unsetO1();
    + } else {
    + setO1((MetaException)value);
    + }
    + break;
    +
    + }
    + }
    +
    + public Object getFieldValue(_Fields field) {
    + switch (field) {
    + case SUCCESS:
    + return getSuccess();
    +
    + case O1:
    + return getO1();
    +
    + }
    + throw new IllegalStateException();
    + }
    +
    + /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
    + public boolean isSet(_Fields field) {
    + if (field == null) {
    + throw new IllegalArgumentException();
    + }
    +
    + switch (field) {
    + case SUCCESS:
    + return isSetSuccess();
    + case O1:
    + return isSetO1();
    + }
    + throw new IllegalStateException();
    + }
    +
    + @Override
    + public boolean equals(Object that) {
    + if (that == null)
    + return false;
    + if (that instanceof set_ugi_result)
    + return this.equals((set_ugi_result)that);
    + return false;
    + }
    +
    + public boolean equals(set_ugi_result that) {
    + if (that == null)
    + return false;
    +
    + boolean this_present_success = true && this.isSetSuccess();
    + boolean that_present_success = true && that.isSetSuccess();
    + if (this_present_success || that_present_success) {
    + if (!(this_present_success && that_present_success))
    + return false;
    + if (!this.success.equals(that.success))
    + return false;
    + }
    +
    + boolean this_present_o1 = true && this.isSetO1();
    + boolean that_present_o1 = true && that.isSetO1();
    + if (this_present_o1 || that_present_o1) {
    + if (!(this_present_o1 && that_present_o1))
    + return false;
    + if (!this.o1.equals(that.o1))
    + return false;
    + }
    +
    + return true;
    + }
    +
    + @Override
    + public int hashCode() {
    + List<Object> list = new ArrayList<Object>();
    +
    + boolean present_success = true && (isSetSuccess());
    + list.add(present_success);
    + if (present_success)
    + list.add(success);
    +
    + boolean present_o1 = true && (isSetO1());
    + list.add(present_o1);
    + if (present_o1)
    + list.add(o1);
    +
    + return list.hashCode();
    + }
    +
    + @Override
    + public int compareTo(set_ugi_result other) {
    + if (!getClass().equals(other.getClass())) {
    + return getClass().getName().compareTo(other.getClass().getName());
    + }
    +
    + int lastComparison = 0;
    +
    + lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
    + if (lastComparison != 0) {
    + return lastComparison;
    + }
    + if (isSetSuccess()) {
    + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
    + if (lastComparison != 0) {
    + return lastComparison;
    + }
    + }
    + lastComparison = Boolean.valueOf(isSetO1()).compareTo(other.isSetO1());
    + if (lastComparison != 0) {
    + return lastComparison;
    + }
    + if (isSetO1()) {
    + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.o1, other.o1);
    + if (lastComparison != 0) {
    + return lastComparison;
    + }
    + }
    + return 0;
    + }
    +
    + public _Fields fieldForId(int fieldId) {
    + return _Fields.findByThriftId(fieldId);
    + }
    +
    + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    + schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
    + }
    +
    + public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    + schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
    + }
    +
    + @Override
    + public String toString() {
    + StringBuilder sb = new StringBuilder("set_ugi_result(");
    + boolean first = true;
    +
    + sb.append("success:");
    + if (this.success == null) {
    + sb.append("null");
    + } else {
    + sb.append(this.success);
    + }
    + first = false;
    + if (!first) sb.append(", ");
    + sb.append("o1:");
    + if (this.o1 == null) {
    + sb.append("null");
    + } else {
    + sb.append(this.o1);
    + }
    + first = false;
    + sb.append(")");
    + return sb.toString();
    + }
    +
    + public void validate() throws org.apache.thrift.TException {
    + // check for required fields
    + // check for sub-struct validity
    + }
    +
    + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    + try {
    + write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    + } catch (org.apache.thrift.TException te) {
    + throw new java.io.IOException(te);
    + }
    + }
    +
    + private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    + try {
    + read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    + } catch (org.apache.thrift.TException te) {
    + throw new java.io.IOException(te);
    + }
    + }
    +
    + private static class set_ugi_resultStandardSchemeFactory implements SchemeFactory {
    + public set_ugi_resultStandardScheme getScheme() {
    + return new set_ugi_resultStandardScheme();
    + }
    + }
    +
    + private static class set_ugi_resultStandardScheme extends StandardScheme<set_ugi_result> {
    +
    + public void read(org.apache.thrift.protocol.TProtocol iprot, set_ugi_result struct) throws org.apache.thrift.TException {
    + org.apache.thrift.protocol.TField schemeField;
    + iprot.readStructBegin();
    + while (true)
    + {
    + schemeField = iprot.readFieldBeg

    <TRUNCATED>
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h
    index 078c1cd..8a8f8b1 100644
    --- a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h
    +++ b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore.h
    @@ -133,6 +133,14 @@ class ThriftHiveMetastoreIf : virtual public ::facebook::fb303::FacebookService
        virtual void get_delegation_token(std::string& _return, const std::string& token_owner, const std::string& renewer_kerberos_principal_name) = 0;
        virtual int64_t renew_delegation_token(const std::string& token_str_form) = 0;
        virtual void cancel_delegation_token(const std::string& token_str_form) = 0;
    + virtual bool add_token(const std::string& token_identifier, const std::string& delegation_token) = 0;
    + virtual bool remove_token(const std::string& token_identifier) = 0;
    + virtual void get_token(std::string& _return, const std::string& token_identifier) = 0;
    + virtual void get_all_token_identifiers(std::vector<std::string> & _return) = 0;
    + virtual int32_t add_master_key(const std::string& key) = 0;
    + virtual void update_master_key(const int32_t seq_number, const std::string& key) = 0;
    + virtual bool remove_master_key(const int32_t key_seq) = 0;
    + virtual void get_master_keys(std::vector<std::string> & _return) = 0;
        virtual void get_open_txns(GetOpenTxnsResponse& _return) = 0;
        virtual void get_open_txns_info(GetOpenTxnsInfoResponse& _return) = 0;
        virtual void open_txns(OpenTxnsResponse& _return, const OpenTxnRequest& rqst) = 0;
    @@ -543,6 +551,34 @@ class ThriftHiveMetastoreNull : virtual public ThriftHiveMetastoreIf , virtual p
        void cancel_delegation_token(const std::string& /* token_str_form */) {
          return;
        }
    + bool add_token(const std::string& /* token_identifier */, const std::string& /* delegation_token */) {
    + bool _return = false;
    + return _return;
    + }
    + bool remove_token(const std::string& /* token_identifier */) {
    + bool _return = false;
    + return _return;
    + }
    + void get_token(std::string& /* _return */, const std::string& /* token_identifier */) {
    + return;
    + }
    + void get_all_token_identifiers(std::vector<std::string> & /* _return */) {
    + return;
    + }
    + int32_t add_master_key(const std::string& /* key */) {
    + int32_t _return = 0;
    + return _return;
    + }
    + void update_master_key(const int32_t /* seq_number */, const std::string& /* key */) {
    + return;
    + }
    + bool remove_master_key(const int32_t /* key_seq */) {
    + bool _return = false;
    + return _return;
    + }
    + void get_master_keys(std::vector<std::string> & /* _return */) {
    + return;
    + }
        void get_open_txns(GetOpenTxnsResponse& /* _return */) {
          return;
        }
    @@ -15023,26 +15059,43 @@ class ThriftHiveMetastore_cancel_delegation_token_presult {

      };

    +typedef struct _ThriftHiveMetastore_add_token_args__isset {
    + _ThriftHiveMetastore_add_token_args__isset() : token_identifier(false), delegation_token(false) {}
    + bool token_identifier :1;
    + bool delegation_token :1;
    +} _ThriftHiveMetastore_add_token_args__isset;

    -class ThriftHiveMetastore_get_open_txns_args {
    +class ThriftHiveMetastore_add_token_args {
       public:

    - ThriftHiveMetastore_get_open_txns_args(const ThriftHiveMetastore_get_open_txns_args&);
    - ThriftHiveMetastore_get_open_txns_args& operator=(const ThriftHiveMetastore_get_open_txns_args&);
    - ThriftHiveMetastore_get_open_txns_args() {
    + ThriftHiveMetastore_add_token_args(const ThriftHiveMetastore_add_token_args&);
    + ThriftHiveMetastore_add_token_args& operator=(const ThriftHiveMetastore_add_token_args&);
    + ThriftHiveMetastore_add_token_args() : token_identifier(), delegation_token() {
        }

    - virtual ~ThriftHiveMetastore_get_open_txns_args() throw();
    + virtual ~ThriftHiveMetastore_add_token_args() throw();
    + std::string token_identifier;
    + std::string delegation_token;

    - bool operator == (const ThriftHiveMetastore_get_open_txns_args & /* rhs */) const
    + _ThriftHiveMetastore_add_token_args__isset __isset;
    +
    + void __set_token_identifier(const std::string& val);
    +
    + void __set_delegation_token(const std::string& val);
    +
    + bool operator == (const ThriftHiveMetastore_add_token_args & rhs) const
        {
    + if (!(token_identifier == rhs.token_identifier))
    + return false;
    + if (!(delegation_token == rhs.delegation_token))
    + return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_get_open_txns_args &rhs) const {
    + bool operator != (const ThriftHiveMetastore_add_token_args &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_get_open_txns_args & ) const;
    + bool operator < (const ThriftHiveMetastore_add_token_args & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    @@ -15050,91 +15103,104 @@ class ThriftHiveMetastore_get_open_txns_args {
      };


    -class ThriftHiveMetastore_get_open_txns_pargs {
    +class ThriftHiveMetastore_add_token_pargs {
       public:


    - virtual ~ThriftHiveMetastore_get_open_txns_pargs() throw();
    + virtual ~ThriftHiveMetastore_add_token_pargs() throw();
    + const std::string* token_identifier;
    + const std::string* delegation_token;

        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_get_open_txns_result__isset {
    - _ThriftHiveMetastore_get_open_txns_result__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_add_token_result__isset {
    + _ThriftHiveMetastore_add_token_result__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_get_open_txns_result__isset;
    +} _ThriftHiveMetastore_add_token_result__isset;

    -class ThriftHiveMetastore_get_open_txns_result {
    +class ThriftHiveMetastore_add_token_result {
       public:

    - ThriftHiveMetastore_get_open_txns_result(const ThriftHiveMetastore_get_open_txns_result&);
    - ThriftHiveMetastore_get_open_txns_result& operator=(const ThriftHiveMetastore_get_open_txns_result&);
    - ThriftHiveMetastore_get_open_txns_result() {
    + ThriftHiveMetastore_add_token_result(const ThriftHiveMetastore_add_token_result&);
    + ThriftHiveMetastore_add_token_result& operator=(const ThriftHiveMetastore_add_token_result&);
    + ThriftHiveMetastore_add_token_result() : success(0) {
        }

    - virtual ~ThriftHiveMetastore_get_open_txns_result() throw();
    - GetOpenTxnsResponse success;
    + virtual ~ThriftHiveMetastore_add_token_result() throw();
    + bool success;

    - _ThriftHiveMetastore_get_open_txns_result__isset __isset;
    + _ThriftHiveMetastore_add_token_result__isset __isset;

    - void __set_success(const GetOpenTxnsResponse& val);
    + void __set_success(const bool val);

    - bool operator == (const ThriftHiveMetastore_get_open_txns_result & rhs) const
    + bool operator == (const ThriftHiveMetastore_add_token_result & rhs) const
        {
          if (!(success == rhs.success))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_get_open_txns_result &rhs) const {
    + bool operator != (const ThriftHiveMetastore_add_token_result &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_get_open_txns_result & ) const;
    + bool operator < (const ThriftHiveMetastore_add_token_result & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_get_open_txns_presult__isset {
    - _ThriftHiveMetastore_get_open_txns_presult__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_add_token_presult__isset {
    + _ThriftHiveMetastore_add_token_presult__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_get_open_txns_presult__isset;
    +} _ThriftHiveMetastore_add_token_presult__isset;

    -class ThriftHiveMetastore_get_open_txns_presult {
    +class ThriftHiveMetastore_add_token_presult {
       public:


    - virtual ~ThriftHiveMetastore_get_open_txns_presult() throw();
    - GetOpenTxnsResponse* success;
    + virtual ~ThriftHiveMetastore_add_token_presult() throw();
    + bool* success;

    - _ThriftHiveMetastore_get_open_txns_presult__isset __isset;
    + _ThriftHiveMetastore_add_token_presult__isset __isset;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);

      };

    +typedef struct _ThriftHiveMetastore_remove_token_args__isset {
    + _ThriftHiveMetastore_remove_token_args__isset() : token_identifier(false) {}
    + bool token_identifier :1;
    +} _ThriftHiveMetastore_remove_token_args__isset;

    -class ThriftHiveMetastore_get_open_txns_info_args {
    +class ThriftHiveMetastore_remove_token_args {
       public:

    - ThriftHiveMetastore_get_open_txns_info_args(const ThriftHiveMetastore_get_open_txns_info_args&);
    - ThriftHiveMetastore_get_open_txns_info_args& operator=(const ThriftHiveMetastore_get_open_txns_info_args&);
    - ThriftHiveMetastore_get_open_txns_info_args() {
    + ThriftHiveMetastore_remove_token_args(const ThriftHiveMetastore_remove_token_args&);
    + ThriftHiveMetastore_remove_token_args& operator=(const ThriftHiveMetastore_remove_token_args&);
    + ThriftHiveMetastore_remove_token_args() : token_identifier() {
        }

    - virtual ~ThriftHiveMetastore_get_open_txns_info_args() throw();
    + virtual ~ThriftHiveMetastore_remove_token_args() throw();
    + std::string token_identifier;

    - bool operator == (const ThriftHiveMetastore_get_open_txns_info_args & /* rhs */) const
    + _ThriftHiveMetastore_remove_token_args__isset __isset;
    +
    + void __set_token_identifier(const std::string& val);
    +
    + bool operator == (const ThriftHiveMetastore_remove_token_args & rhs) const
        {
    + if (!(token_identifier == rhs.token_identifier))
    + return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_get_open_txns_info_args &rhs) const {
    + bool operator != (const ThriftHiveMetastore_remove_token_args &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_get_open_txns_info_args & ) const;
    + bool operator < (const ThriftHiveMetastore_remove_token_args & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    @@ -15142,102 +15208,103 @@ class ThriftHiveMetastore_get_open_txns_info_args {
      };


    -class ThriftHiveMetastore_get_open_txns_info_pargs {
    +class ThriftHiveMetastore_remove_token_pargs {
       public:


    - virtual ~ThriftHiveMetastore_get_open_txns_info_pargs() throw();
    + virtual ~ThriftHiveMetastore_remove_token_pargs() throw();
    + const std::string* token_identifier;

        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_get_open_txns_info_result__isset {
    - _ThriftHiveMetastore_get_open_txns_info_result__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_remove_token_result__isset {
    + _ThriftHiveMetastore_remove_token_result__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_get_open_txns_info_result__isset;
    +} _ThriftHiveMetastore_remove_token_result__isset;

    -class ThriftHiveMetastore_get_open_txns_info_result {
    +class ThriftHiveMetastore_remove_token_result {
       public:

    - ThriftHiveMetastore_get_open_txns_info_result(const ThriftHiveMetastore_get_open_txns_info_result&);
    - ThriftHiveMetastore_get_open_txns_info_result& operator=(const ThriftHiveMetastore_get_open_txns_info_result&);
    - ThriftHiveMetastore_get_open_txns_info_result() {
    + ThriftHiveMetastore_remove_token_result(const ThriftHiveMetastore_remove_token_result&);
    + ThriftHiveMetastore_remove_token_result& operator=(const ThriftHiveMetastore_remove_token_result&);
    + ThriftHiveMetastore_remove_token_result() : success(0) {
        }

    - virtual ~ThriftHiveMetastore_get_open_txns_info_result() throw();
    - GetOpenTxnsInfoResponse success;
    + virtual ~ThriftHiveMetastore_remove_token_result() throw();
    + bool success;

    - _ThriftHiveMetastore_get_open_txns_info_result__isset __isset;
    + _ThriftHiveMetastore_remove_token_result__isset __isset;

    - void __set_success(const GetOpenTxnsInfoResponse& val);
    + void __set_success(const bool val);

    - bool operator == (const ThriftHiveMetastore_get_open_txns_info_result & rhs) const
    + bool operator == (const ThriftHiveMetastore_remove_token_result & rhs) const
        {
          if (!(success == rhs.success))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_get_open_txns_info_result &rhs) const {
    + bool operator != (const ThriftHiveMetastore_remove_token_result &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_get_open_txns_info_result & ) const;
    + bool operator < (const ThriftHiveMetastore_remove_token_result & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_get_open_txns_info_presult__isset {
    - _ThriftHiveMetastore_get_open_txns_info_presult__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_remove_token_presult__isset {
    + _ThriftHiveMetastore_remove_token_presult__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_get_open_txns_info_presult__isset;
    +} _ThriftHiveMetastore_remove_token_presult__isset;

    -class ThriftHiveMetastore_get_open_txns_info_presult {
    +class ThriftHiveMetastore_remove_token_presult {
       public:


    - virtual ~ThriftHiveMetastore_get_open_txns_info_presult() throw();
    - GetOpenTxnsInfoResponse* success;
    + virtual ~ThriftHiveMetastore_remove_token_presult() throw();
    + bool* success;

    - _ThriftHiveMetastore_get_open_txns_info_presult__isset __isset;
    + _ThriftHiveMetastore_remove_token_presult__isset __isset;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);

      };

    -typedef struct _ThriftHiveMetastore_open_txns_args__isset {
    - _ThriftHiveMetastore_open_txns_args__isset() : rqst(false) {}
    - bool rqst :1;
    -} _ThriftHiveMetastore_open_txns_args__isset;
    +typedef struct _ThriftHiveMetastore_get_token_args__isset {
    + _ThriftHiveMetastore_get_token_args__isset() : token_identifier(false) {}
    + bool token_identifier :1;
    +} _ThriftHiveMetastore_get_token_args__isset;

    -class ThriftHiveMetastore_open_txns_args {
    +class ThriftHiveMetastore_get_token_args {
       public:

    - ThriftHiveMetastore_open_txns_args(const ThriftHiveMetastore_open_txns_args&);
    - ThriftHiveMetastore_open_txns_args& operator=(const ThriftHiveMetastore_open_txns_args&);
    - ThriftHiveMetastore_open_txns_args() {
    + ThriftHiveMetastore_get_token_args(const ThriftHiveMetastore_get_token_args&);
    + ThriftHiveMetastore_get_token_args& operator=(const ThriftHiveMetastore_get_token_args&);
    + ThriftHiveMetastore_get_token_args() : token_identifier() {
        }

    - virtual ~ThriftHiveMetastore_open_txns_args() throw();
    - OpenTxnRequest rqst;
    + virtual ~ThriftHiveMetastore_get_token_args() throw();
    + std::string token_identifier;

    - _ThriftHiveMetastore_open_txns_args__isset __isset;
    + _ThriftHiveMetastore_get_token_args__isset __isset;

    - void __set_rqst(const OpenTxnRequest& val);
    + void __set_token_identifier(const std::string& val);

    - bool operator == (const ThriftHiveMetastore_open_txns_args & rhs) const
    + bool operator == (const ThriftHiveMetastore_get_token_args & rhs) const
        {
    - if (!(rqst == rhs.rqst))
    + if (!(token_identifier == rhs.token_identifier))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_open_txns_args &rhs) const {
    + bool operator != (const ThriftHiveMetastore_get_token_args &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_open_txns_args & ) const;
    + bool operator < (const ThriftHiveMetastore_get_token_args & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    @@ -15245,103 +15312,92 @@ class ThriftHiveMetastore_open_txns_args {
      };


    -class ThriftHiveMetastore_open_txns_pargs {
    +class ThriftHiveMetastore_get_token_pargs {
       public:


    - virtual ~ThriftHiveMetastore_open_txns_pargs() throw();
    - const OpenTxnRequest* rqst;
    + virtual ~ThriftHiveMetastore_get_token_pargs() throw();
    + const std::string* token_identifier;

        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_open_txns_result__isset {
    - _ThriftHiveMetastore_open_txns_result__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_get_token_result__isset {
    + _ThriftHiveMetastore_get_token_result__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_open_txns_result__isset;
    +} _ThriftHiveMetastore_get_token_result__isset;

    -class ThriftHiveMetastore_open_txns_result {
    +class ThriftHiveMetastore_get_token_result {
       public:

    - ThriftHiveMetastore_open_txns_result(const ThriftHiveMetastore_open_txns_result&);
    - ThriftHiveMetastore_open_txns_result& operator=(const ThriftHiveMetastore_open_txns_result&);
    - ThriftHiveMetastore_open_txns_result() {
    + ThriftHiveMetastore_get_token_result(const ThriftHiveMetastore_get_token_result&);
    + ThriftHiveMetastore_get_token_result& operator=(const ThriftHiveMetastore_get_token_result&);
    + ThriftHiveMetastore_get_token_result() : success() {
        }

    - virtual ~ThriftHiveMetastore_open_txns_result() throw();
    - OpenTxnsResponse success;
    + virtual ~ThriftHiveMetastore_get_token_result() throw();
    + std::string success;

    - _ThriftHiveMetastore_open_txns_result__isset __isset;
    + _ThriftHiveMetastore_get_token_result__isset __isset;

    - void __set_success(const OpenTxnsResponse& val);
    + void __set_success(const std::string& val);

    - bool operator == (const ThriftHiveMetastore_open_txns_result & rhs) const
    + bool operator == (const ThriftHiveMetastore_get_token_result & rhs) const
        {
          if (!(success == rhs.success))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_open_txns_result &rhs) const {
    + bool operator != (const ThriftHiveMetastore_get_token_result &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_open_txns_result & ) const;
    + bool operator < (const ThriftHiveMetastore_get_token_result & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_open_txns_presult__isset {
    - _ThriftHiveMetastore_open_txns_presult__isset() : success(false) {}
    +typedef struct _ThriftHiveMetastore_get_token_presult__isset {
    + _ThriftHiveMetastore_get_token_presult__isset() : success(false) {}
        bool success :1;
    -} _ThriftHiveMetastore_open_txns_presult__isset;
    +} _ThriftHiveMetastore_get_token_presult__isset;

    -class ThriftHiveMetastore_open_txns_presult {
    +class ThriftHiveMetastore_get_token_presult {
       public:


    - virtual ~ThriftHiveMetastore_open_txns_presult() throw();
    - OpenTxnsResponse* success;
    + virtual ~ThriftHiveMetastore_get_token_presult() throw();
    + std::string* success;

    - _ThriftHiveMetastore_open_txns_presult__isset __isset;
    + _ThriftHiveMetastore_get_token_presult__isset __isset;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);

      };

    -typedef struct _ThriftHiveMetastore_abort_txn_args__isset {
    - _ThriftHiveMetastore_abort_txn_args__isset() : rqst(false) {}
    - bool rqst :1;
    -} _ThriftHiveMetastore_abort_txn_args__isset;

    -class ThriftHiveMetastore_abort_txn_args {
    +class ThriftHiveMetastore_get_all_token_identifiers_args {
       public:

    - ThriftHiveMetastore_abort_txn_args(const ThriftHiveMetastore_abort_txn_args&);
    - ThriftHiveMetastore_abort_txn_args& operator=(const ThriftHiveMetastore_abort_txn_args&);
    - ThriftHiveMetastore_abort_txn_args() {
    + ThriftHiveMetastore_get_all_token_identifiers_args(const ThriftHiveMetastore_get_all_token_identifiers_args&);
    + ThriftHiveMetastore_get_all_token_identifiers_args& operator=(const ThriftHiveMetastore_get_all_token_identifiers_args&);
    + ThriftHiveMetastore_get_all_token_identifiers_args() {
        }

    - virtual ~ThriftHiveMetastore_abort_txn_args() throw();
    - AbortTxnRequest rqst;
    -
    - _ThriftHiveMetastore_abort_txn_args__isset __isset;
    -
    - void __set_rqst(const AbortTxnRequest& val);
    + virtual ~ThriftHiveMetastore_get_all_token_identifiers_args() throw();

    - bool operator == (const ThriftHiveMetastore_abort_txn_args & rhs) const
    + bool operator == (const ThriftHiveMetastore_get_all_token_identifiers_args & /* rhs */) const
        {
    - if (!(rqst == rhs.rqst))
    - return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_abort_txn_args &rhs) const {
    + bool operator != (const ThriftHiveMetastore_get_all_token_identifiers_args &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_abort_txn_args & ) const;
    + bool operator < (const ThriftHiveMetastore_get_all_token_identifiers_args & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    @@ -15349,103 +15405,102 @@ class ThriftHiveMetastore_abort_txn_args {
      };


    -class ThriftHiveMetastore_abort_txn_pargs {
    +class ThriftHiveMetastore_get_all_token_identifiers_pargs {
       public:


    - virtual ~ThriftHiveMetastore_abort_txn_pargs() throw();
    - const AbortTxnRequest* rqst;
    + virtual ~ThriftHiveMetastore_get_all_token_identifiers_pargs() throw();

        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_abort_txn_result__isset {
    - _ThriftHiveMetastore_abort_txn_result__isset() : o1(false) {}
    - bool o1 :1;
    -} _ThriftHiveMetastore_abort_txn_result__isset;
    +typedef struct _ThriftHiveMetastore_get_all_token_identifiers_result__isset {
    + _ThriftHiveMetastore_get_all_token_identifiers_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_all_token_identifiers_result__isset;

    -class ThriftHiveMetastore_abort_txn_result {
    +class ThriftHiveMetastore_get_all_token_identifiers_result {
       public:

    - ThriftHiveMetastore_abort_txn_result(const ThriftHiveMetastore_abort_txn_result&);
    - ThriftHiveMetastore_abort_txn_result& operator=(const ThriftHiveMetastore_abort_txn_result&);
    - ThriftHiveMetastore_abort_txn_result() {
    + ThriftHiveMetastore_get_all_token_identifiers_result(const ThriftHiveMetastore_get_all_token_identifiers_result&);
    + ThriftHiveMetastore_get_all_token_identifiers_result& operator=(const ThriftHiveMetastore_get_all_token_identifiers_result&);
    + ThriftHiveMetastore_get_all_token_identifiers_result() {
        }

    - virtual ~ThriftHiveMetastore_abort_txn_result() throw();
    - NoSuchTxnException o1;
    + virtual ~ThriftHiveMetastore_get_all_token_identifiers_result() throw();
    + std::vector<std::string> success;

    - _ThriftHiveMetastore_abort_txn_result__isset __isset;
    + _ThriftHiveMetastore_get_all_token_identifiers_result__isset __isset;

    - void __set_o1(const NoSuchTxnException& val);
    + void __set_success(const std::vector<std::string> & val);

    - bool operator == (const ThriftHiveMetastore_abort_txn_result & rhs) const
    + bool operator == (const ThriftHiveMetastore_get_all_token_identifiers_result & rhs) const
        {
    - if (!(o1 == rhs.o1))
    + if (!(success == rhs.success))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_abort_txn_result &rhs) const {
    + bool operator != (const ThriftHiveMetastore_get_all_token_identifiers_result &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_abort_txn_result & ) const;
    + bool operator < (const ThriftHiveMetastore_get_all_token_identifiers_result & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_abort_txn_presult__isset {
    - _ThriftHiveMetastore_abort_txn_presult__isset() : o1(false) {}
    - bool o1 :1;
    -} _ThriftHiveMetastore_abort_txn_presult__isset;
    +typedef struct _ThriftHiveMetastore_get_all_token_identifiers_presult__isset {
    + _ThriftHiveMetastore_get_all_token_identifiers_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_all_token_identifiers_presult__isset;

    -class ThriftHiveMetastore_abort_txn_presult {
    +class ThriftHiveMetastore_get_all_token_identifiers_presult {
       public:


    - virtual ~ThriftHiveMetastore_abort_txn_presult() throw();
    - NoSuchTxnException o1;
    + virtual ~ThriftHiveMetastore_get_all_token_identifiers_presult() throw();
    + std::vector<std::string> * success;

    - _ThriftHiveMetastore_abort_txn_presult__isset __isset;
    + _ThriftHiveMetastore_get_all_token_identifiers_presult__isset __isset;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);

      };

    -typedef struct _ThriftHiveMetastore_commit_txn_args__isset {
    - _ThriftHiveMetastore_commit_txn_args__isset() : rqst(false) {}
    - bool rqst :1;
    -} _ThriftHiveMetastore_commit_txn_args__isset;
    +typedef struct _ThriftHiveMetastore_add_master_key_args__isset {
    + _ThriftHiveMetastore_add_master_key_args__isset() : key(false) {}
    + bool key :1;
    +} _ThriftHiveMetastore_add_master_key_args__isset;

    -class ThriftHiveMetastore_commit_txn_args {
    +class ThriftHiveMetastore_add_master_key_args {
       public:

    - ThriftHiveMetastore_commit_txn_args(const ThriftHiveMetastore_commit_txn_args&);
    - ThriftHiveMetastore_commit_txn_args& operator=(const ThriftHiveMetastore_commit_txn_args&);
    - ThriftHiveMetastore_commit_txn_args() {
    + ThriftHiveMetastore_add_master_key_args(const ThriftHiveMetastore_add_master_key_args&);
    + ThriftHiveMetastore_add_master_key_args& operator=(const ThriftHiveMetastore_add_master_key_args&);
    + ThriftHiveMetastore_add_master_key_args() : key() {
        }

    - virtual ~ThriftHiveMetastore_commit_txn_args() throw();
    - CommitTxnRequest rqst;
    + virtual ~ThriftHiveMetastore_add_master_key_args() throw();
    + std::string key;

    - _ThriftHiveMetastore_commit_txn_args__isset __isset;
    + _ThriftHiveMetastore_add_master_key_args__isset __isset;

    - void __set_rqst(const CommitTxnRequest& val);
    + void __set_key(const std::string& val);

    - bool operator == (const ThriftHiveMetastore_commit_txn_args & rhs) const
    + bool operator == (const ThriftHiveMetastore_add_master_key_args & rhs) const
        {
    - if (!(rqst == rhs.rqst))
    + if (!(key == rhs.key))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_commit_txn_args &rhs) const {
    + bool operator != (const ThriftHiveMetastore_add_master_key_args &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_commit_txn_args & ) const;
    + bool operator < (const ThriftHiveMetastore_add_master_key_args & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    @@ -15453,83 +15508,902 @@ class ThriftHiveMetastore_commit_txn_args {
      };


    -class ThriftHiveMetastore_commit_txn_pargs {
    +class ThriftHiveMetastore_add_master_key_pargs {
       public:


    - virtual ~ThriftHiveMetastore_commit_txn_pargs() throw();
    - const CommitTxnRequest* rqst;
    + virtual ~ThriftHiveMetastore_add_master_key_pargs() throw();
    + const std::string* key;

        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_commit_txn_result__isset {
    - _ThriftHiveMetastore_commit_txn_result__isset() : o1(false), o2(false) {}
    +typedef struct _ThriftHiveMetastore_add_master_key_result__isset {
    + _ThriftHiveMetastore_add_master_key_result__isset() : success(false), o1(false) {}
    + bool success :1;
        bool o1 :1;
    - bool o2 :1;
    -} _ThriftHiveMetastore_commit_txn_result__isset;
    +} _ThriftHiveMetastore_add_master_key_result__isset;

    -class ThriftHiveMetastore_commit_txn_result {
    +class ThriftHiveMetastore_add_master_key_result {
       public:

    - ThriftHiveMetastore_commit_txn_result(const ThriftHiveMetastore_commit_txn_result&);
    - ThriftHiveMetastore_commit_txn_result& operator=(const ThriftHiveMetastore_commit_txn_result&);
    - ThriftHiveMetastore_commit_txn_result() {
    + ThriftHiveMetastore_add_master_key_result(const ThriftHiveMetastore_add_master_key_result&);
    + ThriftHiveMetastore_add_master_key_result& operator=(const ThriftHiveMetastore_add_master_key_result&);
    + ThriftHiveMetastore_add_master_key_result() : success(0) {
        }

    - virtual ~ThriftHiveMetastore_commit_txn_result() throw();
    - NoSuchTxnException o1;
    - TxnAbortedException o2;
    + virtual ~ThriftHiveMetastore_add_master_key_result() throw();
    + int32_t success;
    + MetaException o1;

    - _ThriftHiveMetastore_commit_txn_result__isset __isset;
    + _ThriftHiveMetastore_add_master_key_result__isset __isset;

    - void __set_o1(const NoSuchTxnException& val);
    + void __set_success(const int32_t val);

    - void __set_o2(const TxnAbortedException& val);
    + void __set_o1(const MetaException& val);

    - bool operator == (const ThriftHiveMetastore_commit_txn_result & rhs) const
    + bool operator == (const ThriftHiveMetastore_add_master_key_result & rhs) const
        {
    - if (!(o1 == rhs.o1))
    + if (!(success == rhs.success))
            return false;
    - if (!(o2 == rhs.o2))
    + if (!(o1 == rhs.o1))
            return false;
          return true;
        }
    - bool operator != (const ThriftHiveMetastore_commit_txn_result &rhs) const {
    + bool operator != (const ThriftHiveMetastore_add_master_key_result &rhs) const {
          return !(*this == rhs);
        }

    - bool operator < (const ThriftHiveMetastore_commit_txn_result & ) const;
    + bool operator < (const ThriftHiveMetastore_add_master_key_result & ) const;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
        uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;

      };

    -typedef struct _ThriftHiveMetastore_commit_txn_presult__isset {
    - _ThriftHiveMetastore_commit_txn_presult__isset() : o1(false), o2(false) {}
    +typedef struct _ThriftHiveMetastore_add_master_key_presult__isset {
    + _ThriftHiveMetastore_add_master_key_presult__isset() : success(false), o1(false) {}
    + bool success :1;
        bool o1 :1;
    - bool o2 :1;
    -} _ThriftHiveMetastore_commit_txn_presult__isset;
    +} _ThriftHiveMetastore_add_master_key_presult__isset;

    -class ThriftHiveMetastore_commit_txn_presult {
    +class ThriftHiveMetastore_add_master_key_presult {
       public:


    - virtual ~ThriftHiveMetastore_commit_txn_presult() throw();
    - NoSuchTxnException o1;
    - TxnAbortedException o2;
    + virtual ~ThriftHiveMetastore_add_master_key_presult() throw();
    + int32_t* success;
    + MetaException o1;

    - _ThriftHiveMetastore_commit_txn_presult__isset __isset;
    + _ThriftHiveMetastore_add_master_key_presult__isset __isset;

        uint32_t read(::apache::thrift::protocol::TProtocol* iprot);

      };

    -typedef struct _ThriftHiveMetastore_lock_args__isset {
    - _ThriftHiveMetastore_lock_args__isset() : rqst(false) {}
    - bool rqst :1;
    +typedef struct _ThriftHiveMetastore_update_master_key_args__isset {
    + _ThriftHiveMetastore_update_master_key_args__isset() : seq_number(false), key(false) {}
    + bool seq_number :1;
    + bool key :1;
    +} _ThriftHiveMetastore_update_master_key_args__isset;
    +
    +class ThriftHiveMetastore_update_master_key_args {
    + public:
    +
    + ThriftHiveMetastore_update_master_key_args(const ThriftHiveMetastore_update_master_key_args&);
    + ThriftHiveMetastore_update_master_key_args& operator=(const ThriftHiveMetastore_update_master_key_args&);
    + ThriftHiveMetastore_update_master_key_args() : seq_number(0), key() {
    + }
    +
    + virtual ~ThriftHiveMetastore_update_master_key_args() throw();
    + int32_t seq_number;
    + std::string key;
    +
    + _ThriftHiveMetastore_update_master_key_args__isset __isset;
    +
    + void __set_seq_number(const int32_t val);
    +
    + void __set_key(const std::string& val);
    +
    + bool operator == (const ThriftHiveMetastore_update_master_key_args & rhs) const
    + {
    + if (!(seq_number == rhs.seq_number))
    + return false;
    + if (!(key == rhs.key))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_update_master_key_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_update_master_key_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_update_master_key_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_update_master_key_pargs() throw();
    + const int32_t* seq_number;
    + const std::string* key;
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_update_master_key_result__isset {
    + _ThriftHiveMetastore_update_master_key_result__isset() : o1(false), o2(false) {}
    + bool o1 :1;
    + bool o2 :1;
    +} _ThriftHiveMetastore_update_master_key_result__isset;
    +
    +class ThriftHiveMetastore_update_master_key_result {
    + public:
    +
    + ThriftHiveMetastore_update_master_key_result(const ThriftHiveMetastore_update_master_key_result&);
    + ThriftHiveMetastore_update_master_key_result& operator=(const ThriftHiveMetastore_update_master_key_result&);
    + ThriftHiveMetastore_update_master_key_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_update_master_key_result() throw();
    + NoSuchObjectException o1;
    + MetaException o2;
    +
    + _ThriftHiveMetastore_update_master_key_result__isset __isset;
    +
    + void __set_o1(const NoSuchObjectException& val);
    +
    + void __set_o2(const MetaException& val);
    +
    + bool operator == (const ThriftHiveMetastore_update_master_key_result & rhs) const
    + {
    + if (!(o1 == rhs.o1))
    + return false;
    + if (!(o2 == rhs.o2))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_update_master_key_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_update_master_key_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_update_master_key_presult__isset {
    + _ThriftHiveMetastore_update_master_key_presult__isset() : o1(false), o2(false) {}
    + bool o1 :1;
    + bool o2 :1;
    +} _ThriftHiveMetastore_update_master_key_presult__isset;
    +
    +class ThriftHiveMetastore_update_master_key_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_update_master_key_presult() throw();
    + NoSuchObjectException o1;
    + MetaException o2;
    +
    + _ThriftHiveMetastore_update_master_key_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_remove_master_key_args__isset {
    + _ThriftHiveMetastore_remove_master_key_args__isset() : key_seq(false) {}
    + bool key_seq :1;
    +} _ThriftHiveMetastore_remove_master_key_args__isset;
    +
    +class ThriftHiveMetastore_remove_master_key_args {
    + public:
    +
    + ThriftHiveMetastore_remove_master_key_args(const ThriftHiveMetastore_remove_master_key_args&);
    + ThriftHiveMetastore_remove_master_key_args& operator=(const ThriftHiveMetastore_remove_master_key_args&);
    + ThriftHiveMetastore_remove_master_key_args() : key_seq(0) {
    + }
    +
    + virtual ~ThriftHiveMetastore_remove_master_key_args() throw();
    + int32_t key_seq;
    +
    + _ThriftHiveMetastore_remove_master_key_args__isset __isset;
    +
    + void __set_key_seq(const int32_t val);
    +
    + bool operator == (const ThriftHiveMetastore_remove_master_key_args & rhs) const
    + {
    + if (!(key_seq == rhs.key_seq))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_remove_master_key_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_remove_master_key_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_remove_master_key_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_remove_master_key_pargs() throw();
    + const int32_t* key_seq;
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_remove_master_key_result__isset {
    + _ThriftHiveMetastore_remove_master_key_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_remove_master_key_result__isset;
    +
    +class ThriftHiveMetastore_remove_master_key_result {
    + public:
    +
    + ThriftHiveMetastore_remove_master_key_result(const ThriftHiveMetastore_remove_master_key_result&);
    + ThriftHiveMetastore_remove_master_key_result& operator=(const ThriftHiveMetastore_remove_master_key_result&);
    + ThriftHiveMetastore_remove_master_key_result() : success(0) {
    + }
    +
    + virtual ~ThriftHiveMetastore_remove_master_key_result() throw();
    + bool success;
    +
    + _ThriftHiveMetastore_remove_master_key_result__isset __isset;
    +
    + void __set_success(const bool val);
    +
    + bool operator == (const ThriftHiveMetastore_remove_master_key_result & rhs) const
    + {
    + if (!(success == rhs.success))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_remove_master_key_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_remove_master_key_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_remove_master_key_presult__isset {
    + _ThriftHiveMetastore_remove_master_key_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_remove_master_key_presult__isset;
    +
    +class ThriftHiveMetastore_remove_master_key_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_remove_master_key_presult() throw();
    + bool* success;
    +
    + _ThriftHiveMetastore_remove_master_key_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_master_keys_args {
    + public:
    +
    + ThriftHiveMetastore_get_master_keys_args(const ThriftHiveMetastore_get_master_keys_args&);
    + ThriftHiveMetastore_get_master_keys_args& operator=(const ThriftHiveMetastore_get_master_keys_args&);
    + ThriftHiveMetastore_get_master_keys_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_master_keys_args() throw();
    +
    + bool operator == (const ThriftHiveMetastore_get_master_keys_args & /* rhs */) const
    + {
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_master_keys_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_master_keys_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_master_keys_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_master_keys_pargs() throw();
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_master_keys_result__isset {
    + _ThriftHiveMetastore_get_master_keys_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_master_keys_result__isset;
    +
    +class ThriftHiveMetastore_get_master_keys_result {
    + public:
    +
    + ThriftHiveMetastore_get_master_keys_result(const ThriftHiveMetastore_get_master_keys_result&);
    + ThriftHiveMetastore_get_master_keys_result& operator=(const ThriftHiveMetastore_get_master_keys_result&);
    + ThriftHiveMetastore_get_master_keys_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_master_keys_result() throw();
    + std::vector<std::string> success;
    +
    + _ThriftHiveMetastore_get_master_keys_result__isset __isset;
    +
    + void __set_success(const std::vector<std::string> & val);
    +
    + bool operator == (const ThriftHiveMetastore_get_master_keys_result & rhs) const
    + {
    + if (!(success == rhs.success))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_master_keys_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_master_keys_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_master_keys_presult__isset {
    + _ThriftHiveMetastore_get_master_keys_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_master_keys_presult__isset;
    +
    +class ThriftHiveMetastore_get_master_keys_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_master_keys_presult() throw();
    + std::vector<std::string> * success;
    +
    + _ThriftHiveMetastore_get_master_keys_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_open_txns_args {
    + public:
    +
    + ThriftHiveMetastore_get_open_txns_args(const ThriftHiveMetastore_get_open_txns_args&);
    + ThriftHiveMetastore_get_open_txns_args& operator=(const ThriftHiveMetastore_get_open_txns_args&);
    + ThriftHiveMetastore_get_open_txns_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_args() throw();
    +
    + bool operator == (const ThriftHiveMetastore_get_open_txns_args & /* rhs */) const
    + {
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_open_txns_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_open_txns_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_open_txns_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_pargs() throw();
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_open_txns_result__isset {
    + _ThriftHiveMetastore_get_open_txns_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_open_txns_result__isset;
    +
    +class ThriftHiveMetastore_get_open_txns_result {
    + public:
    +
    + ThriftHiveMetastore_get_open_txns_result(const ThriftHiveMetastore_get_open_txns_result&);
    + ThriftHiveMetastore_get_open_txns_result& operator=(const ThriftHiveMetastore_get_open_txns_result&);
    + ThriftHiveMetastore_get_open_txns_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_result() throw();
    + GetOpenTxnsResponse success;
    +
    + _ThriftHiveMetastore_get_open_txns_result__isset __isset;
    +
    + void __set_success(const GetOpenTxnsResponse& val);
    +
    + bool operator == (const ThriftHiveMetastore_get_open_txns_result & rhs) const
    + {
    + if (!(success == rhs.success))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_open_txns_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_open_txns_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_open_txns_presult__isset {
    + _ThriftHiveMetastore_get_open_txns_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_open_txns_presult__isset;
    +
    +class ThriftHiveMetastore_get_open_txns_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_presult() throw();
    + GetOpenTxnsResponse* success;
    +
    + _ThriftHiveMetastore_get_open_txns_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_open_txns_info_args {
    + public:
    +
    + ThriftHiveMetastore_get_open_txns_info_args(const ThriftHiveMetastore_get_open_txns_info_args&);
    + ThriftHiveMetastore_get_open_txns_info_args& operator=(const ThriftHiveMetastore_get_open_txns_info_args&);
    + ThriftHiveMetastore_get_open_txns_info_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_info_args() throw();
    +
    + bool operator == (const ThriftHiveMetastore_get_open_txns_info_args & /* rhs */) const
    + {
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_open_txns_info_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_open_txns_info_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_get_open_txns_info_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_info_pargs() throw();
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_open_txns_info_result__isset {
    + _ThriftHiveMetastore_get_open_txns_info_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_open_txns_info_result__isset;
    +
    +class ThriftHiveMetastore_get_open_txns_info_result {
    + public:
    +
    + ThriftHiveMetastore_get_open_txns_info_result(const ThriftHiveMetastore_get_open_txns_info_result&);
    + ThriftHiveMetastore_get_open_txns_info_result& operator=(const ThriftHiveMetastore_get_open_txns_info_result&);
    + ThriftHiveMetastore_get_open_txns_info_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_info_result() throw();
    + GetOpenTxnsInfoResponse success;
    +
    + _ThriftHiveMetastore_get_open_txns_info_result__isset __isset;
    +
    + void __set_success(const GetOpenTxnsInfoResponse& val);
    +
    + bool operator == (const ThriftHiveMetastore_get_open_txns_info_result & rhs) const
    + {
    + if (!(success == rhs.success))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_get_open_txns_info_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_get_open_txns_info_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_get_open_txns_info_presult__isset {
    + _ThriftHiveMetastore_get_open_txns_info_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_get_open_txns_info_presult__isset;
    +
    +class ThriftHiveMetastore_get_open_txns_info_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_get_open_txns_info_presult() throw();
    + GetOpenTxnsInfoResponse* success;
    +
    + _ThriftHiveMetastore_get_open_txns_info_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_open_txns_args__isset {
    + _ThriftHiveMetastore_open_txns_args__isset() : rqst(false) {}
    + bool rqst :1;
    +} _ThriftHiveMetastore_open_txns_args__isset;
    +
    +class ThriftHiveMetastore_open_txns_args {
    + public:
    +
    + ThriftHiveMetastore_open_txns_args(const ThriftHiveMetastore_open_txns_args&);
    + ThriftHiveMetastore_open_txns_args& operator=(const ThriftHiveMetastore_open_txns_args&);
    + ThriftHiveMetastore_open_txns_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_open_txns_args() throw();
    + OpenTxnRequest rqst;
    +
    + _ThriftHiveMetastore_open_txns_args__isset __isset;
    +
    + void __set_rqst(const OpenTxnRequest& val);
    +
    + bool operator == (const ThriftHiveMetastore_open_txns_args & rhs) const
    + {
    + if (!(rqst == rhs.rqst))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_open_txns_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_open_txns_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_open_txns_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_open_txns_pargs() throw();
    + const OpenTxnRequest* rqst;
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_open_txns_result__isset {
    + _ThriftHiveMetastore_open_txns_result__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_open_txns_result__isset;
    +
    +class ThriftHiveMetastore_open_txns_result {
    + public:
    +
    + ThriftHiveMetastore_open_txns_result(const ThriftHiveMetastore_open_txns_result&);
    + ThriftHiveMetastore_open_txns_result& operator=(const ThriftHiveMetastore_open_txns_result&);
    + ThriftHiveMetastore_open_txns_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_open_txns_result() throw();
    + OpenTxnsResponse success;
    +
    + _ThriftHiveMetastore_open_txns_result__isset __isset;
    +
    + void __set_success(const OpenTxnsResponse& val);
    +
    + bool operator == (const ThriftHiveMetastore_open_txns_result & rhs) const
    + {
    + if (!(success == rhs.success))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_open_txns_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_open_txns_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_open_txns_presult__isset {
    + _ThriftHiveMetastore_open_txns_presult__isset() : success(false) {}
    + bool success :1;
    +} _ThriftHiveMetastore_open_txns_presult__isset;
    +
    +class ThriftHiveMetastore_open_txns_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_open_txns_presult() throw();
    + OpenTxnsResponse* success;
    +
    + _ThriftHiveMetastore_open_txns_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_abort_txn_args__isset {
    + _ThriftHiveMetastore_abort_txn_args__isset() : rqst(false) {}
    + bool rqst :1;
    +} _ThriftHiveMetastore_abort_txn_args__isset;
    +
    +class ThriftHiveMetastore_abort_txn_args {
    + public:
    +
    + ThriftHiveMetastore_abort_txn_args(const ThriftHiveMetastore_abort_txn_args&);
    + ThriftHiveMetastore_abort_txn_args& operator=(const ThriftHiveMetastore_abort_txn_args&);
    + ThriftHiveMetastore_abort_txn_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_abort_txn_args() throw();
    + AbortTxnRequest rqst;
    +
    + _ThriftHiveMetastore_abort_txn_args__isset __isset;
    +
    + void __set_rqst(const AbortTxnRequest& val);
    +
    + bool operator == (const ThriftHiveMetastore_abort_txn_args & rhs) const
    + {
    + if (!(rqst == rhs.rqst))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_abort_txn_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_abort_txn_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_abort_txn_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_abort_txn_pargs() throw();
    + const AbortTxnRequest* rqst;
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_abort_txn_result__isset {
    + _ThriftHiveMetastore_abort_txn_result__isset() : o1(false) {}
    + bool o1 :1;
    +} _ThriftHiveMetastore_abort_txn_result__isset;
    +
    +class ThriftHiveMetastore_abort_txn_result {
    + public:
    +
    + ThriftHiveMetastore_abort_txn_result(const ThriftHiveMetastore_abort_txn_result&);
    + ThriftHiveMetastore_abort_txn_result& operator=(const ThriftHiveMetastore_abort_txn_result&);
    + ThriftHiveMetastore_abort_txn_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_abort_txn_result() throw();
    + NoSuchTxnException o1;
    +
    + _ThriftHiveMetastore_abort_txn_result__isset __isset;
    +
    + void __set_o1(const NoSuchTxnException& val);
    +
    + bool operator == (const ThriftHiveMetastore_abort_txn_result & rhs) const
    + {
    + if (!(o1 == rhs.o1))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_abort_txn_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_abort_txn_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_abort_txn_presult__isset {
    + _ThriftHiveMetastore_abort_txn_presult__isset() : o1(false) {}
    + bool o1 :1;
    +} _ThriftHiveMetastore_abort_txn_presult__isset;
    +
    +class ThriftHiveMetastore_abort_txn_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_abort_txn_presult() throw();
    + NoSuchTxnException o1;
    +
    + _ThriftHiveMetastore_abort_txn_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_commit_txn_args__isset {
    + _ThriftHiveMetastore_commit_txn_args__isset() : rqst(false) {}
    + bool rqst :1;
    +} _ThriftHiveMetastore_commit_txn_args__isset;
    +
    +class ThriftHiveMetastore_commit_txn_args {
    + public:
    +
    + ThriftHiveMetastore_commit_txn_args(const ThriftHiveMetastore_commit_txn_args&);
    + ThriftHiveMetastore_commit_txn_args& operator=(const ThriftHiveMetastore_commit_txn_args&);
    + ThriftHiveMetastore_commit_txn_args() {
    + }
    +
    + virtual ~ThriftHiveMetastore_commit_txn_args() throw();
    + CommitTxnRequest rqst;
    +
    + _ThriftHiveMetastore_commit_txn_args__isset __isset;
    +
    + void __set_rqst(const CommitTxnRequest& val);
    +
    + bool operator == (const ThriftHiveMetastore_commit_txn_args & rhs) const
    + {
    + if (!(rqst == rhs.rqst))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_commit_txn_args &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_commit_txn_args & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +
    +class ThriftHiveMetastore_commit_txn_pargs {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_commit_txn_pargs() throw();
    + const CommitTxnRequest* rqst;
    +
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_commit_txn_result__isset {
    + _ThriftHiveMetastore_commit_txn_result__isset() : o1(false), o2(false) {}
    + bool o1 :1;
    + bool o2 :1;
    +} _ThriftHiveMetastore_commit_txn_result__isset;
    +
    +class ThriftHiveMetastore_commit_txn_result {
    + public:
    +
    + ThriftHiveMetastore_commit_txn_result(const ThriftHiveMetastore_commit_txn_result&);
    + ThriftHiveMetastore_commit_txn_result& operator=(const ThriftHiveMetastore_commit_txn_result&);
    + ThriftHiveMetastore_commit_txn_result() {
    + }
    +
    + virtual ~ThriftHiveMetastore_commit_txn_result() throw();
    + NoSuchTxnException o1;
    + TxnAbortedException o2;
    +
    + _ThriftHiveMetastore_commit_txn_result__isset __isset;
    +
    + void __set_o1(const NoSuchTxnException& val);
    +
    + void __set_o2(const TxnAbortedException& val);
    +
    + bool operator == (const ThriftHiveMetastore_commit_txn_result & rhs) const
    + {
    + if (!(o1 == rhs.o1))
    + return false;
    + if (!(o2 == rhs.o2))
    + return false;
    + return true;
    + }
    + bool operator != (const ThriftHiveMetastore_commit_txn_result &rhs) const {
    + return !(*this == rhs);
    + }
    +
    + bool operator < (const ThriftHiveMetastore_commit_txn_result & ) const;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    + uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const;
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_commit_txn_presult__isset {
    + _ThriftHiveMetastore_commit_txn_presult__isset() : o1(false), o2(false) {}
    + bool o1 :1;
    + bool o2 :1;
    +} _ThriftHiveMetastore_commit_txn_presult__isset;
    +
    +class ThriftHiveMetastore_commit_txn_presult {
    + public:
    +
    +
    + virtual ~ThriftHiveMetastore_commit_txn_presult() throw();
    + NoSuchTxnException o1;
    + TxnAbortedException o2;
    +
    + _ThriftHiveMetastore_commit_txn_presult__isset __isset;
    +
    + uint32_t read(::apache::thrift::protocol::TProtocol* iprot);
    +
    +};
    +
    +typedef struct _ThriftHiveMetastore_lock_args__isset {
    + _ThriftHiveMetastore_lock_args__isset() : rqst(false) {}
    + bool rqst :1;
      } _ThriftHiveMetastore_lock_args__isset;

      class ThriftHiveMetastore_lock_args {
    @@ -17859,6 +18733,30 @@ class ThriftHiveMetastoreClient : virtual public ThriftHiveMetastoreIf, public
        void cancel_delegation_token(const std::string& token_str_form);
        void send_cancel_delegation_token(const std::string& token_str_form);
        void recv_cancel_delegation_token();
    + bool add_token(const std::string& token_identifier, const std::string& delegation_token);
    + void send_add_token(const std::string& token_identifier, const std::string& delegation_token);
    + bool recv_add_token();
    + bool remove_token(const std::string& token_identifier);
    + void send_remove_token(const std::string& token_identifier);
    + bool recv_remove_token();
    + void get_token(std::string& _return, const std::string& token_identifier);
    + void send_get_token(const std::string& token_identifier);
    + void recv_get_token(std::string& _return);
    + void get_all_token_identifiers(std::vector<std::string> & _return);
    + void send_get_all_token_identifiers();
    + void recv_get_all_token_identifiers(std::vector<std::string> & _return);
    + int32_t add_master_key(const std::string& key);
    + void send_add_master_key(const std::string& key);
    + int32_t recv_add_master_key();
    + void update_master_key(const int32_t seq_number, const std::string& key);
    + void send_update_master_key(const int32_t seq_number, const std::string& key);
    + void recv_update_master_key();
    + bool remove_master_key(const int32_t key_seq);
    + void send_remove_master_key(const int32_t key_seq);
    + bool recv_remove_master_key();
    + void get_master_keys(std::vector<std::string> & _return);
    + void send_get_master_keys();
    + void recv_get_master_keys(std::vector<std::string> & _return);
        void get_open_txns(GetOpenTxnsResponse& _return);
        void send_get_open_txns();
        void recv_get_open_txns(GetOpenTxnsResponse& _return);
    @@ -18052,6 +18950,14 @@ class ThriftHiveMetastoreProcessor : public ::facebook::fb303::FacebookServiceP
        void process_get_delegation_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
        void process_renew_delegation_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
        void process_cancel_delegation_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_add_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_remove_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_get_token(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_get_all_token_identifiers(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_add_master_key(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_update_master_key(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_remove_master_key(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    + void process_get_master_keys(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
        void process_get_open_txns(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
        void process_get_open_txns_info(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
        void process_open_txns(int32_t seqid, ::apache::thrift::protocol::TProtocol* iprot, ::apache::thrift::protocol::TProtocol* oprot, void* callContext);
    @@ -18191,6 +19097,14 @@ class ThriftHiveMetastoreProcessor : public ::facebook::fb303::FacebookServiceP
          processMap_["get_delegation_token"] = &ThriftHiveMetastoreProcessor::process_get_delegation_token;
          processMap_["renew_delegation_token"] = &ThriftHiveMetastoreProcessor::process_renew_delegation_token;
          processMap_["cancel_delegation_token"] = &ThriftHiveMetastoreProcessor::process_cancel_delegation_token;
    + processMap_["add_token"] = &ThriftHiveMetastoreProcessor::process_add_token;
    + processMap_["remove_token"] = &ThriftHiveMetastoreProcessor::process_remove_token;
    + processMap_["get_token"] = &ThriftHiveMetastoreProcessor::process_get_token;
    + processMap_["get_all_token_identifiers"] = &ThriftHiveMetastoreProcessor::process_get_all_token_identifiers;
    + processMap_["add_master_key"] = &ThriftHiveMetastoreProcessor::process_add_master_key;
    + processMap_["update_master_key"] = &ThriftHiveMetastoreProcessor::process_update_master_key;
    + processMap_["remove_master_key"] = &ThriftHiveMetastoreProcessor::process_remove_master_key;
    + processMap_["get_master_keys"] = &ThriftHiveMetastoreProcessor::process_get_master_keys;
          processMap_["get_open_txns"] = &ThriftHiveMetastoreProcessor::process_get_open_txns;
          processMap_["get_open_txns_info"] = &ThriftHiveMetastoreProcessor::process_get_open_txns_info;
          processMap_["open_txns"] = &ThriftHiveMetastoreProcessor::process_open_txns;
    @@ -19312,6 +20226,81 @@ class ThriftHiveMetastoreMultiface : virtual public ThriftHiveMetastoreIf, publi
          ifaces_[i]->cancel_delegation_token(token_str_form);
        }

    + bool add_token(const std::string& token_identifier, const std::string& delegation_token) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->add_token(token_identifier, delegation_token);
    + }
    + return ifaces_[i]->add_token(token_identifier, delegation_token);
    + }
    +
    + bool remove_token(const std::string& token_identifier) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->remove_token(token_identifier);
    + }
    + return ifaces_[i]->remove_token(token_identifier);
    + }
    +
    + void get_token(std::string& _return, const std::string& token_identifier) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->get_token(_return, token_identifier);
    + }
    + ifaces_[i]->get_token(_return, token_identifier);
    + return;
    + }
    +
    + void get_all_token_identifiers(std::vector<std::string> & _return) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->get_all_token_identifiers(_return);
    + }
    + ifaces_[i]->get_all_token_identifiers(_return);
    + return;
    + }
    +
    + int32_t add_master_key(const std::string& key) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->add_master_key(key);
    + }
    + return ifaces_[i]->add_master_key(key);
    + }
    +
    + void update_master_key(const int32_t seq_number, const std::string& key) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->update_master_key(seq_number, key);
    + }
    + ifaces_[i]->update_master_key(seq_number, key);
    + }
    +
    + bool remove_master_key(const int32_t key_seq) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->remove_master_key(key_seq);
    + }
    + return ifaces_[i]->remove_master_key(key_seq);
    + }
    +
    + void get_master_keys(std::vector<std::string> & _return) {
    + size_t sz = ifaces_.size();
    + size_t i = 0;
    + for (; i < (sz - 1); ++i) {
    + ifaces_[i]->get_master_keys(_return);
    + }
    + ifaces_[i]->get_master_keys(_return);
    + return;
    + }
    +
        void get_open_txns(GetOpenTxnsResponse& _return) {
          size_t sz = ifaces_.size();
          size_t i = 0;
    @@ -19894,6 +20883,30 @@ class ThriftHiveMetastoreConcurrentClient : virtual public ThriftHiveMetastoreIf
        void cancel_delegation_token(const std::string& token_str_form);
        int32_t send_cancel_delegation_token(const std::string& token_str_form);
        void recv_cancel_delegation_token(const int32_t seqid);
    + bool add_token(const std::string& token_identifier, const std::string& delegation_token);
    + int32_t send_add_token(const std::string& token_identifier, const std::string& delegation_token);
    + bool recv_add_token(const int32_t seqid);
    + bool remove_token(const std::string& token_identifier);
    + int32_t send_remove_token(const std::string& token_identifier);
    + bool recv_remove_token(const int32_t seqid);
    + void get_token(std::string& _return, const std::string& token_identifier);
    + int32_t send_get_token(const std::string& token_identifier);
    + void recv_get_token(std::string& _return, const int32_t seqid);
    + void get_all_token_identifiers(std::vector<std::string> & _return);
    + int32_t send_get_all_token_identifiers();
    + void recv_get_all_token_identifiers(std::vector<std::string> & _return, const int32_t seqid);
    + int32_t add_master_key(const std::string& key);
    + int32_t send_add_master_key(const std::string& key);
    + int32_t recv_add_master_key(const int32_t seqid);
    + void update_master_key(const int32_t seq_number, const std::string& key);
    + int32_t send_update_master_key(const int32_t seq_number, const std::string& key);
    + void recv_update_master_key(const int32_t seqid);
    + bool remove_master_key(const int32_t key_seq);
    + int32_t send_remove_master_key(const int32_t key_seq);
    + bool recv_remove_master_key(const int32_t seqid);
    + void get_master_keys(std::vector<std::string> & _return);
    + int32_t send_get_master_keys();
    + void recv_get_master_keys(std::vector<std::string> & _return, const int32_t seqid);
        void get_open_txns(GetOpenTxnsResponse& _return);
        int32_t send_get_open_txns();
        void recv_get_open_txns(GetOpenTxnsResponse& _return, const int32_t seqid);

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp
    ----------------------------------------------------------------------
    diff --git a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp
    index 6e21a9a..3e7c6e7 100644
    --- a/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp
    +++ b/metastore/src/gen/thrift/gen-cpp/ThriftHiveMetastore_server.skeleton.cpp
    @@ -577,6 +577,46 @@ class ThriftHiveMetastoreHandler : virtual public ThriftHiveMetastoreIf {
          printf("cancel_delegation_token\n");
        }

    + bool add_token(const std::string& token_identifier, const std::string& delegation_token) {
    + // Your implementation goes here
    + printf("add_token\n");
    + }
    +
    + bool remove_token(const std::string& token_identifier) {
    + // Your implementation goes here
    + printf("remove_token\n");
    + }
    +
    + void get_token(std::string& _return, const std::string& token_identifier) {
    + // Your implementation goes here
    + printf("get_token\n");
    + }
    +
    + void get_all_token_identifiers(std::vector<std::string> & _return) {
    + // Your implementation goes here
    + printf("get_all_token_identifiers\n");
    + }
    +
    + int32_t add_master_key(const std::string& key) {
    + // Your implementation goes here
    + printf("add_master_key\n");
    + }
    +
    + void update_master_key(const int32_t seq_number, const std::string& key) {
    + // Your implementation goes here
    + printf("update_master_key\n");
    + }
    +
    + bool remove_master_key(const int32_t key_seq) {
    + // Your implementation goes here
    + printf("remove_master_key\n");
    + }
    +
    + void get_master_keys(std::vector<std::string> & _return) {
    + // Your implementation goes here
    + printf("get_master_keys\n");
    + }
    +
        void get_open_txns(GetOpenTxnsResponse& _return) {
          // Your implementation goes here
          printf("get_open_txns\n");
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13204: Vectorization: Add ChainedCheckerFactory for LIKE (Gopal V, reviewed by Sergey Shelukhin)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fe14a908
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fe14a908
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fe14a908

    Branch: refs/heads/llap
    Commit: fe14a9088853abc91740a54f4fe100a8a0cfced6
    Parents: fe30121
    Author: Gopal V <gopalv@apache.org>
    Authored: Tue Mar 8 16:41:27 2016 -0800
    Committer: Gopal V <gopalv@apache.org>
    Committed: Tue Mar 8 16:41:27 2016 -0800

    ----------------------------------------------------------------------
      ...AbstractFilterStringColLikeStringScalar.java | 168 +++++++++++++++----
      .../FilterStringColLikeStringScalar.java | 18 ++
      .../TestVectorStringExpressions.java | 156 ++++++++++++++++-
      3 files changed, 303 insertions(+), 39 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/fe14a908/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
    index 272ff9c..b70beef 100644
    --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
    +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/AbstractFilterStringColLikeStringScalar.java
    @@ -24,10 +24,13 @@ import java.nio.CharBuffer;
      import java.nio.charset.Charset;
      import java.nio.charset.CharsetDecoder;
      import java.nio.charset.CodingErrorAction;
    +import java.util.ArrayList;
      import java.util.List;
    +import java.util.StringTokenizer;
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;

    +import org.apache.commons.lang.ArrayUtils;
      import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
      import org.apache.hadoop.hive.ql.exec.vector.VectorExpressionDescriptor;
      import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
    @@ -218,8 +221,8 @@ public abstract class AbstractFilterStringColLikeStringScalar extends VectorExpr
        /**
         * Matches the whole string to its pattern.
         */
    - protected static class NoneChecker implements Checker {
    - byte [] byteSub;
    + protected static final class NoneChecker implements Checker {
    + final byte [] byteSub;

          NoneChecker(String pattern) {
            try {
    @@ -246,8 +249,8 @@ public abstract class AbstractFilterStringColLikeStringScalar extends VectorExpr
        /**
         * Matches the beginning of each string to a pattern.
         */
    - protected static class BeginChecker implements Checker {
    - byte[] byteSub;
    + protected static final class BeginChecker implements Checker {
    + final byte[] byteSub;

          BeginChecker(String pattern) {
            try {
    @@ -258,23 +261,20 @@ public abstract class AbstractFilterStringColLikeStringScalar extends VectorExpr
          }

          public boolean check(byte[] byteS, int start, int len) {
    + int lenSub = byteSub.length;
            if (len < byteSub.length) {
              return false;
            }
    - for (int i = start, j = 0; j < byteSub.length; i++, j++) {
    - if (byteS[i] != byteSub[j]) {
    - return false;
    - }
    - }
    - return true;
    + return StringExpr.equal(byteSub, 0, lenSub, byteS, start, lenSub);
          }
        }

        /**
         * Matches the ending of each string to its pattern.
         */
    - protected static class EndChecker implements Checker {
    - byte[] byteSub;
    + protected static final class EndChecker implements Checker {
    + final byte[] byteSub;
    +
          EndChecker(String pattern) {
            try {
              byteSub = pattern.getBytes("UTF-8");
    @@ -288,21 +288,16 @@ public abstract class AbstractFilterStringColLikeStringScalar extends VectorExpr
            if (len < lenSub) {
              return false;
            }
    - for (int i = start + len - lenSub, j = 0; j < lenSub; i++, j++) {
    - if (byteS[i] != byteSub[j]) {
    - return false;
    - }
    - }
    - return true;
    + return StringExpr.equal(byteSub, 0, lenSub, byteS, start + len - lenSub, lenSub);
          }
        }

        /**
         * Matches the middle of each string to its pattern.
         */
    - protected static class MiddleChecker implements Checker {
    - byte[] byteSub;
    - int lenSub;
    + protected static final class MiddleChecker implements Checker {
    + final byte[] byteSub;
    + final int lenSub;

          MiddleChecker(String pattern) {
            try {
    @@ -314,25 +309,134 @@ public abstract class AbstractFilterStringColLikeStringScalar extends VectorExpr
          }

          public boolean check(byte[] byteS, int start, int len) {
    + return index(byteS, start, len) != -1;
    + }
    +
    + /*
    + * Returns absolute offset of the match
    + */
    + public int index(byte[] byteS, int start, int len) {
            if (len < lenSub) {
    - return false;
    + return -1;
            }
            int end = start + len - lenSub + 1;
    - boolean match = false;
            for (int i = start; i < end; i++) {
    - match = true;
    - for (int j = 0; j < lenSub; j++) {
    - if (byteS[i + j] != byteSub[j]) {
    - match = false;
    - break;
    - }
    + if (StringExpr.equal(byteSub, 0, lenSub, byteS, i, lenSub)) {
    + return i;
              }
    - if (match) {
    - return true;
    + }
    + return -1;
    + }
    + }
    +
    + /**
    + * Matches a chained sequence of checkers.
    + *
    + * This has 4 chain scenarios cases in it (has no escaping or single char wildcards)
    + *
    + * 1) anchored left "abc%def%"
    + * 2) anchored right "%abc%def"
    + * 3) unanchored "%abc%def%"
    + * 4) anchored on both sides "abc%def"
    + */
    + protected static final class ChainedChecker implements Checker {
    +
    + final int minLen;
    + final BeginChecker begin;
    + final EndChecker end;
    + final MiddleChecker[] middle;
    + final int[] midLens;
    + final int beginLen;
    + final int endLen;
    +
    + ChainedChecker(String pattern) {
    + final StringTokenizer tokens = new StringTokenizer(pattern, "%");
    + final boolean leftAnchor = pattern.startsWith("%") == false;
    + final boolean rightAnchor = pattern.endsWith("%") == false;
    + int len = 0;
    + // at least 2 checkers always
    + BeginChecker left = null;
    + EndChecker right = null;
    + int leftLen = 0; // not -1
    + int rightLen = 0; // not -1
    + final List<MiddleChecker> checkers = new ArrayList<MiddleChecker>(2);
    + final List<Integer> lengths = new ArrayList<Integer>(2);
    +
    + for (int i = 0; tokens.hasMoreTokens(); i++) {
    + String chunk = tokens.nextToken();
    + if (chunk.length() == 0) {
    + // %% is folded in the .*?.*? regex usually into .*?
    + continue;
    + }
    + len += utf8Length(chunk);
    + if (leftAnchor && i == 0) {
    + // first item
    + left = new BeginChecker(chunk);
    + leftLen = utf8Length(chunk);
    + } else if (rightAnchor && tokens.hasMoreTokens() == false) {
    + // last item
    + right = new EndChecker(chunk);
    + rightLen = utf8Length(chunk);
    + } else {
    + // middle items in order
    + checkers.add(new MiddleChecker(chunk));
    + lengths.add(utf8Length(chunk));
    + }
    + }
    + midLens = ArrayUtils.toPrimitive(lengths.toArray(ArrayUtils.EMPTY_INTEGER_OBJECT_ARRAY));
    + middle = checkers.toArray(new MiddleChecker[0]);
    + minLen = len;
    + begin = left;
    + end = right;
    + beginLen = leftLen;
    + endLen = rightLen;
    + }
    +
    + public boolean check(byte[] byteS, final int start, final int len) {
    + int pos = start;
    + int mark = len;
    + if (len < minLen) {
    + return false;
    + }
    + // prefix, extend start
    + if (begin != null && false == begin.check(byteS, pos, mark)) {
    + // no match
    + return false;
    + } else {
    + pos += beginLen;
    + mark -= beginLen;
    + }
    + // suffix, reduce len
    + if (end != null && false == end.check(byteS, pos, mark)) {
    + // no match
    + return false;
    + } else {
    + // no pos change - no need since we've shrunk the string with same pos
    + mark -= endLen;
    + }
    + // loop for middles
    + for (int i = 0; i < middle.length; i++) {
    + int index = middle[i].index(byteS, pos, mark);
    + if (index == -1) {
    + // no match
    + return false;
    + } else {
    + mark -= ((index-pos) + midLens[i]);
    + pos = index + midLens[i];
              }
            }
    - return match;
    + // if all is good
    + return true;
          }
    +
    + private int utf8Length(String chunk) {
    + try {
    + return chunk.getBytes("UTF-8").length;
    + } catch (UnsupportedEncodingException ue) {
    + throw new RuntimeException(ue);
    + }
    + }
    +
        }

        /**

    http://git-wip-us.apache.org/repos/asf/hive/blob/fe14a908/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java
    index c03c34e..0b279c7 100644
    --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java
    +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java
    @@ -38,6 +38,7 @@ public class FilterStringColLikeStringScalar extends AbstractFilterStringColLike
            new EndCheckerFactory(),
            new MiddleCheckerFactory(),
            new NoneCheckerFactory(),
    + new ChainedCheckerFactory(),
            new ComplexCheckerFactory());

        public FilterStringColLikeStringScalar() {
    @@ -119,6 +120,23 @@ public class FilterStringColLikeStringScalar extends AbstractFilterStringColLike
        }

        /**
    + * Accepts chained LIKE patterns without escaping like "abc%def%ghi%" and creates corresponding
    + * checkers.
    + *
    + */
    + private static class ChainedCheckerFactory implements CheckerFactory {
    + private static final Pattern CHAIN_PATTERN = Pattern.compile("(%?[^%_\\\\]+%?)+");
    +
    + public Checker tryCreate(String pattern) {
    + Matcher matcher = CHAIN_PATTERN.matcher(pattern);
    + if (matcher.matches()) {
    + return new ChainedChecker(pattern);
    + }
    + return null;
    + }
    + }
    +
    + /**
         * Accepts any LIKE patterns and creates corresponding checkers.
         */
        private static class ComplexCheckerFactory implements CheckerFactory {

    http://git-wip-us.apache.org/repos/asf/hive/blob/fe14a908/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
    index a51837e..5c323ba 100644
    --- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
    +++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorStringExpressions.java
    @@ -18,8 +18,13 @@

      package org.apache.hadoop.hive.ql.exec.vector.expressions;

    +import static org.junit.Assert.assertEquals;
    +
      import java.io.UnsupportedEncodingException;
    +import java.nio.charset.StandardCharsets;
      import java.util.Arrays;
    +import java.util.Random;
    +import java.util.StringTokenizer;

      import junit.framework.Assert;

    @@ -55,15 +60,23 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringGroupColEqual
      import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringGroupColLessStringGroupColumn;
      import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.StringScalarEqualStringGroupColumn;
      import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.VarCharScalarEqualStringGroupColumn;
    +import org.apache.hadoop.hive.ql.exec.vector.util.VectorizedRowGroupGenUtil;
      import org.apache.hadoop.hive.ql.metadata.HiveException;
    +import org.apache.hadoop.hive.ql.udf.UDFLike;
    +import org.apache.hadoop.io.BooleanWritable;
      import org.apache.hadoop.io.Text;
      import org.junit.Test;
    +import org.slf4j.Logger;
    +import org.slf4j.LoggerFactory;

      /**
       * Test vectorized expression and filter evaluation for strings.
       */
      public class TestVectorStringExpressions {

    + private static final Logger LOG = LoggerFactory
    + .getLogger(TestVectorStringExpressions.class);
    +
        private static byte[] red;
        private static byte[] redred;
        private static byte[] red2; // second copy of red, different object
    @@ -99,7 +112,7 @@ public class TestVectorStringExpressions {
            mixedUpLower = "mixedup".getBytes("UTF-8");
            mixedUpUpper = "MIXEDUP".getBytes("UTF-8");
            mixPercentPattern = "mix%".getBytes("UTF-8"); // for use as wildcard pattern to test LIKE
    - multiByte = new byte[100];
    + multiByte = new byte[10];
            addMultiByteChars(multiByte);
            blanksLeft = " foo".getBytes("UTF-8");
            blanksRight = "foo ".getBytes("UTF-8");
    @@ -4237,50 +4250,179 @@ public class TestVectorStringExpressions {
          Assert.assertEquals(initialBatchSize, batch.size);
        }

    + @Test
        public void testStringLikePatternType() throws UnsupportedEncodingException, HiveException {
          FilterStringColLikeStringScalar expr;
    + VectorizedRowBatch vrb = VectorizedRowGroupGenUtil.getVectorizedRowBatch(1, 1, 1);
    + vrb.cols[0] = new BytesColumnVector(1);
    + BytesColumnVector bcv = (BytesColumnVector) vrb.cols[0];
    + vrb.size = 0;

          // BEGIN pattern
          expr = new FilterStringColLikeStringScalar(0, "abc%".getBytes());
    + expr.evaluate(vrb);
          Assert.assertEquals(FilterStringColLikeStringScalar.BeginChecker.class,
              expr.checker.getClass());

          // END pattern
          expr = new FilterStringColLikeStringScalar(0, "%abc".getBytes("UTF-8"));
    + expr.evaluate(vrb);
          Assert.assertEquals(FilterStringColLikeStringScalar.EndChecker.class,
              expr.checker.getClass());

          // MIDDLE pattern
          expr = new FilterStringColLikeStringScalar(0, "%abc%".getBytes());
    + expr.evaluate(vrb);
          Assert.assertEquals(FilterStringColLikeStringScalar.MiddleChecker.class,
              expr.checker.getClass());

    - // COMPLEX pattern
    + // CHAIN pattern
          expr = new FilterStringColLikeStringScalar(0, "%abc%de".getBytes());
    + expr.evaluate(vrb);
    + Assert.assertEquals(FilterStringColLikeStringScalar.ChainedChecker.class,
    + expr.checker.getClass());
    +
    + // COMPLEX pattern
    + expr = new FilterStringColLikeStringScalar(0, "%abc_%de".getBytes());
    + expr.evaluate(vrb);
          Assert.assertEquals(FilterStringColLikeStringScalar.ComplexChecker.class,
              expr.checker.getClass());

          // NONE pattern
          expr = new FilterStringColLikeStringScalar(0, "abc".getBytes());
    + expr.evaluate(vrb);
          Assert.assertEquals(FilterStringColLikeStringScalar.NoneChecker.class,
              expr.checker.getClass());
        }

    - public void testStringLikeMultiByte() throws HiveException {
    + @Test
    + public void testStringLikeMultiByte() throws HiveException, UnsupportedEncodingException {
          FilterStringColLikeStringScalar expr;
          VectorizedRowBatch batch;

          // verify that a multi byte LIKE expression matches a matching string
          batch = makeStringBatchMixedCharSize();
    - expr = new FilterStringColLikeStringScalar(0, ("%" + multiByte + "%").getBytes());
    + expr = new FilterStringColLikeStringScalar(0, ('%' + new String(multiByte) + '%').getBytes(StandardCharsets.UTF_8));
          expr.evaluate(batch);
    - Assert.assertEquals(batch.size, 1);
    + Assert.assertEquals(1, batch.size);

          // verify that a multi byte LIKE expression doesn't match a non-matching string
          batch = makeStringBatchMixedCharSize();
    - expr = new FilterStringColLikeStringScalar(0, ("%" + multiByte + "x").getBytes());
    + expr = new FilterStringColLikeStringScalar(0, ('%' + new String(multiByte) + 'x').getBytes(StandardCharsets.UTF_8));
          expr.evaluate(batch);
    - Assert.assertEquals(batch.size, 0);
    + Assert.assertEquals(0, batch.size);
    + }
    +
    + private String randomizePattern(Random control, String value) {
    + switch (control.nextInt(10)) {
    + default:
    + case 0: {
    + return value;
    + }
    + case 1: {
    + return control.nextInt(1000) + value;
    + }
    + case 2: {
    + return value + control.nextInt(1000);
    + }
    + case 3: {
    + return control.nextInt(1000) + value.substring(1);
    + }
    + case 4: {
    + return value.substring(1) + control.nextInt(1000);
    + }
    + case 5: {
    + return control.nextInt(1000) + value.substring(0, value.length() - 1);
    + }
    + case 6: {
    + return "";
    + }
    + case 7: {
    + return value.toLowerCase();
    + }
    + case 8: {
    + StringBuffer sb = new StringBuffer(8);
    + for (int i = 0; i < control.nextInt(12); i++) {
    + sb.append((char) ('a' + control.nextInt(26)));
    + }
    + return sb.toString();
    + }
    + case 9: {
    + StringBuffer sb = new StringBuffer(8);
    + for (int i = 0; i < control.nextInt(12); i++) {
    + sb.append((char) ('A' + control.nextInt(26)));
    + }
    + return sb.toString();
    + }
    + }
    + }
    +
    + private String generateCandidate(Random control, String pattern) {
    + StringBuffer sb = new StringBuffer();
    + final StringTokenizer tokens = new StringTokenizer(pattern, "%");
    + final boolean leftAnchor = pattern.startsWith("%");
    + final boolean rightAnchor = pattern.endsWith("%");
    + for (int i = 0; tokens.hasMoreTokens(); i++) {
    + String chunk = tokens.nextToken();
    + if (leftAnchor && i == 0) {
    + // first item
    + sb.append(randomizePattern(control, chunk));
    + } else if (rightAnchor && tokens.hasMoreTokens() == false) {
    + // last item
    + sb.append(randomizePattern(control, chunk));
    + } else {
    + // middle item
    + sb.append(randomizePattern(control, chunk));
    + }
    + }
    + return sb.toString();
    + }
    +
    + @Test
    + public void testStringLikeRandomized() throws HiveException, UnsupportedEncodingException {
    + final String [] patterns = new String[] {
    + "ABC%",
    + "%ABC",
    + "%ABC%",
    + "ABC%DEF",
    + "ABC%DEF%",
    + "%ABC%DEF",
    + "%ABC%DEF%",
    + "ABC%DEF%EFG",
    + "%ABC%DEF%EFG",
    + "%ABC%DEF%EFG%H",
    + };
    + long positive = 0;
    + long negative = 0;
    + Random control = new Random(1234);
    + UDFLike udf = new UDFLike();
    + for (String pattern : patterns) {
    + VectorExpression expr = new FilterStringColLikeStringScalar(0, pattern.getBytes("utf-8"));
    + VectorizedRowBatch batch = VectorizedRowGroupGenUtil.getVectorizedRowBatch(1, 1, 1);
    + batch.cols[0] = new BytesColumnVector(1);
    + BytesColumnVector bcv = (BytesColumnVector) batch.cols[0];
    +
    + Text pText = new Text(pattern);
    + for (int i=0; i < 1024; i++) {
    + String input = generateCandidate(control,pattern);
    + BooleanWritable like = udf.evaluate(new Text(input), pText);
    + batch.reset();
    + bcv.initBuffer();
    + byte[] utf8 = input.getBytes("utf-8");
    + bcv.setVal(0, utf8, 0, utf8.length);
    + bcv.noNulls = true;
    + batch.size = 1;
    + expr.evaluate(batch);
    + if (like.get()) {
    + positive++;
    + } else {
    + negative++;
    + }
    + assertEquals(String.format("Checking '%s' against '%s'", input, pattern), like.get(), (batch.size != 0));
    + }
    + }
    + LOG.info(String.format("Randomized testing: ran %d positive tests and %d negative tests",
    + positive, negative));
        }

        @Test
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13216 : ORC Reader will leave file open until GC when opening a malformed ORC file (Sergey Shelukhin, reviewed by Prasanth Jayachandran)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/3931d4d6
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/3931d4d6
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/3931d4d6

    Branch: refs/heads/llap
    Commit: 3931d4d67fe2ca930f0ca6ed2d9bd6ff37ff9087
    Parents: 61b6644
    Author: Sergey Shelukhin <sershe@apache.org>
    Authored: Wed Mar 9 10:51:58 2016 -0800
    Committer: Sergey Shelukhin <sershe@apache.org>
    Committed: Wed Mar 9 10:51:58 2016 -0800

    ----------------------------------------------------------------------
      .../hadoop/hive/ql/io/orc/ReaderImpl.java | 108 ++++++++++---------
      1 file changed, 57 insertions(+), 51 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/3931d4d6/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java
    index 1299c9c..773c2b1 100644
    --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java
    +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/ReaderImpl.java
    @@ -485,61 +485,67 @@ public class ReaderImpl implements Reader {
                                                              long maxFileLength
                                                              ) throws IOException {
          FSDataInputStream file = fs.open(path);
    + ByteBuffer buffer = null, fullFooterBuffer = null;
    + OrcProto.PostScript ps = null;
    + OrcFile.WriterVersion writerVersion = null;
    + try {
    + // figure out the size of the file using the option or filesystem
    + long size;
    + if (maxFileLength == Long.MAX_VALUE) {
    + size = fs.getFileStatus(path).getLen();
    + } else {
    + size = maxFileLength;
    + }

    - // figure out the size of the file using the option or filesystem
    - long size;
    - if (maxFileLength == Long.MAX_VALUE) {
    - size = fs.getFileStatus(path).getLen();
    - } else {
    - size = maxFileLength;
    - }
    -
    - //read last bytes into buffer to get PostScript
    - int readSize = (int) Math.min(size, DIRECTORY_SIZE_GUESS);
    - ByteBuffer buffer = ByteBuffer.allocate(readSize);
    - assert buffer.position() == 0;
    - file.readFully((size - readSize),
    - buffer.array(), buffer.arrayOffset(), readSize);
    - buffer.position(0);
    -
    - //read the PostScript
    - //get length of PostScript
    - int psLen = buffer.get(readSize - 1) & 0xff;
    - ensureOrcFooter(file, path, psLen, buffer);
    - int psOffset = readSize - 1 - psLen;
    - OrcProto.PostScript ps = extractPostScript(buffer, path, psLen, psOffset);
    -
    - int footerSize = (int) ps.getFooterLength();
    - int metadataSize = (int) ps.getMetadataLength();
    - OrcFile.WriterVersion writerVersion = extractWriterVersion(ps);
    -
    -
    - //check if extra bytes need to be read
    - ByteBuffer fullFooterBuffer = null;
    - int extra = Math.max(0, psLen + 1 + footerSize + metadataSize - readSize);
    - if (extra > 0) {
    - //more bytes need to be read, seek back to the right place and read extra bytes
    - ByteBuffer extraBuf = ByteBuffer.allocate(extra + readSize);
    - file.readFully((size - readSize - extra), extraBuf.array(),
    - extraBuf.arrayOffset() + extraBuf.position(), extra);
    - extraBuf.position(extra);
    - //append with already read bytes
    - extraBuf.put(buffer);
    - buffer = extraBuf;
    + //read last bytes into buffer to get PostScript
    + int readSize = (int) Math.min(size, DIRECTORY_SIZE_GUESS);
    + buffer = ByteBuffer.allocate(readSize);
    + assert buffer.position() == 0;
    + file.readFully((size - readSize),
    + buffer.array(), buffer.arrayOffset(), readSize);
            buffer.position(0);
    - fullFooterBuffer = buffer.slice();
    - buffer.limit(footerSize + metadataSize);
    - } else {
    - //footer is already in the bytes in buffer, just adjust position, length
    - buffer.position(psOffset - footerSize - metadataSize);
    - fullFooterBuffer = buffer.slice();
    - buffer.limit(psOffset);
    - }

    - // remember position for later
    - buffer.mark();
    + //read the PostScript
    + //get length of PostScript
    + int psLen = buffer.get(readSize - 1) & 0xff;
    + ensureOrcFooter(file, path, psLen, buffer);
    + int psOffset = readSize - 1 - psLen;
    + ps = extractPostScript(buffer, path, psLen, psOffset);
    +
    + int footerSize = (int) ps.getFooterLength();
    + int metadataSize = (int) ps.getMetadataLength();
    + writerVersion = extractWriterVersion(ps);
    +
    + //check if extra bytes need to be read
    + int extra = Math.max(0, psLen + 1 + footerSize + metadataSize - readSize);
    + if (extra > 0) {
    + //more bytes need to be read, seek back to the right place and read extra bytes
    + ByteBuffer extraBuf = ByteBuffer.allocate(extra + readSize);
    + file.readFully((size - readSize - extra), extraBuf.array(),
    + extraBuf.arrayOffset() + extraBuf.position(), extra);
    + extraBuf.position(extra);
    + //append with already read bytes
    + extraBuf.put(buffer);
    + buffer = extraBuf;
    + buffer.position(0);
    + fullFooterBuffer = buffer.slice();
    + buffer.limit(footerSize + metadataSize);
    + } else {
    + //footer is already in the bytes in buffer, just adjust position, length
    + buffer.position(psOffset - footerSize - metadataSize);
    + fullFooterBuffer = buffer.slice();
    + buffer.limit(psOffset);
    + }

    - file.close();
    + // remember position for later TODO: what later? this comment is useless
    + buffer.mark();
    + } finally {
    + try {
    + file.close();
    + } catch (IOException ex) {
    + LOG.error("Failed to close the file after another error", ex);
    + }
    + }

          return new FileMetaInfo(
              ps.getCompression().toString(),
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13211 : normalize Hive.get overloads to go thru one path (Sergey Shelukhin, reviewed by Ashutosh Chauhan)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/5bf324ea
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/5bf324ea
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/5bf324ea

    Branch: refs/heads/llap
    Commit: 5bf324ea5eaf308233a2af6149e8fb01bee0e4c6
    Parents: 3931d4d
    Author: Sergey Shelukhin <sershe@apache.org>
    Authored: Wed Mar 9 11:03:52 2016 -0800
    Committer: Sergey Shelukhin <sershe@apache.org>
    Committed: Wed Mar 9 11:03:52 2016 -0800

    ----------------------------------------------------------------------
      .../apache/hadoop/hive/ql/metadata/Hive.java | 92 +++++++++++---------
      .../hive/ql/parse/BaseSemanticAnalyzer.java | 2 +-
      2 files changed, 52 insertions(+), 42 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/5bf324ea/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 fdc7956..80208c2 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
    @@ -248,7 +248,7 @@ public class Hive {
         *
         */
        public static Hive get(HiveConf c) throws HiveException {
    - return getInternal(c, false);
    + return getInternal(c, false, false, true);
        }

        /**
    @@ -256,24 +256,67 @@ public class Hive {
         * MS client, assuming the relevant settings would be unchanged within the same conf object.
         */
        public static Hive getWithFastCheck(HiveConf c) throws HiveException {
    - return getInternal(c, true);
    + return getWithFastCheck(c, true);
        }

    - private static Hive getInternal(HiveConf c, boolean isFastCheck) throws HiveException {
    + /**
    + * Same as {@link #get(HiveConf)}, except that it checks only the object identity of existing
    + * MS client, assuming the relevant settings would be unchanged within the same conf object.
    + */
    + public static Hive getWithFastCheck(HiveConf c, boolean doRegisterAllFns) throws HiveException {
    + return getInternal(c, false, true, doRegisterAllFns);
    + }
    +
    + private static Hive getInternal(HiveConf c, boolean needsRefresh, boolean isFastCheck,
    + boolean doRegisterAllFns) throws HiveException {
          Hive db = hiveDB.get();
    - if (db == null || !db.isCurrentUserOwner() ||
    - (db.metaStoreClient != null && !isCompatible(db, c, isFastCheck))) {
    - return get(c, true);
    + if (db == null || !db.isCurrentUserOwner() || needsRefresh
    + || (c != null && db.metaStoreClient != null && !isCompatible(db, c, isFastCheck))) {
    + return create(c, false, db, doRegisterAllFns);
    + }
    + if (c != null) {
    + db.conf = c;
          }
    - db.conf = c;
          return db;
        }

    + private static Hive create(HiveConf c, boolean needsRefresh, Hive db, boolean doRegisterAllFns)
    + throws HiveException {
    + if (db != null) {
    + LOG.debug("Creating new db. db = " + db + ", needsRefresh = " + needsRefresh +
    + ", db.isCurrentUserOwner = " + db.isCurrentUserOwner());
    + db.close();
    + }
    + closeCurrent();
    + if (c == null) {
    + c = createHiveConf();
    + }
    + c.set("fs.scheme.class", "dfs");
    + Hive newdb = new Hive(c, doRegisterAllFns);
    + hiveDB.set(newdb);
    + return newdb;
    + }
    +
    +
    + private static HiveConf createHiveConf() {
    + SessionState session = SessionState.get();
    + return (session == null) ? new HiveConf(Hive.class) : session.getConf();
    + }
    +
        private static boolean isCompatible(Hive db, HiveConf c, boolean isFastCheck) {
          return isFastCheck
              ? db.metaStoreClient.isSameConfObj(c) : db.metaStoreClient.isCompatibleWith(c);
        }

    +
    + public static Hive get() throws HiveException {
    + return get(true);
    + }
    +
    + public static Hive get(boolean doRegisterAllFns) throws HiveException {
    + return getInternal(null, false, false, doRegisterAllFns);
    + }
    +
        /**
         * get a connection to metastore. see get(HiveConf) function for comments
         *
    @@ -285,40 +328,7 @@ public class Hive {
         * @throws HiveException
         */
        public static Hive get(HiveConf c, boolean needsRefresh) throws HiveException {
    - Hive db = hiveDB.get();
    - if (db == null || needsRefresh || !db.isCurrentUserOwner()) {
    - if (db != null) {
    - LOG.debug("Creating new db. db = " + db + ", needsRefresh = " + needsRefresh +
    - ", db.isCurrentUserOwner = " + db.isCurrentUserOwner());
    - }
    - closeCurrent();
    - c.set("fs.scheme.class", "dfs");
    - Hive newdb = new Hive(c, true);
    - hiveDB.set(newdb);
    - return newdb;
    - }
    - db.conf = c;
    - return db;
    - }
    -
    - public static Hive get() throws HiveException {
    - return get(true);
    - }
    -
    - public static Hive get(boolean doRegisterAllFns) throws HiveException {
    - Hive db = hiveDB.get();
    - if (db != null && !db.isCurrentUserOwner()) {
    - LOG.debug("Creating new db. db.isCurrentUserOwner = " + db.isCurrentUserOwner());
    - db.close();
    - db = null;
    - }
    - if (db == null) {
    - SessionState session = SessionState.get();
    - HiveConf conf = session == null ? new HiveConf(Hive.class) : session.getConf();
    - db = new Hive(conf, doRegisterAllFns);
    - hiveDB.set(db);
    - }
    - return db;
    + return getInternal(c, needsRefresh, false, true);
        }

        public static void set(Hive hive) {

    http://git-wip-us.apache.org/repos/asf/hive/blob/5bf324ea/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
    index b36a9a0..f6ba521 100644
    --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
    +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java
    @@ -200,7 +200,7 @@ public abstract class BaseSemanticAnalyzer {
        }

        public BaseSemanticAnalyzer(HiveConf conf) throws SemanticException {
    - this(conf, createHiveDB(conf));
    + this(conf, createHiveDB(conf));
        }

        public BaseSemanticAnalyzer(HiveConf conf, Hive db) throws SemanticException {
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13153: SessionID is appended to thread name twice (Prasanth Jayachandran reviewed by Vikram Dixit, Sergey Shelukhin)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/fe301214
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/fe301214
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/fe301214

    Branch: refs/heads/llap
    Commit: fe3012145643679c738232e6b0e7382ab810cdf6
    Parents: 87131d0
    Author: Prasanth Jayachandran <j.prasanth.j@gmail.com>
    Authored: Tue Mar 8 15:26:29 2016 -0600
    Committer: Prasanth Jayachandran <j.prasanth.j@gmail.com>
    Committed: Tue Mar 8 15:26:29 2016 -0600

    ----------------------------------------------------------------------
      .../org/apache/hadoop/hive/cli/CliDriver.java | 7 ++++---
      .../hadoop/hive/ql/session/SessionState.java | 22 ++++++++++++++++++++
      .../service/cli/session/HiveSessionImpl.java | 17 ++-------------
      3 files changed, 28 insertions(+), 18 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/fe301214/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
    ----------------------------------------------------------------------
    diff --git a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
    index e77b7f1..b6fe77c 100644
    --- a/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
    +++ b/cli/src/java/org/apache/hadoop/hive/cli/CliDriver.java
    @@ -118,8 +118,8 @@ public class CliDriver {
          CliSessionState ss = (CliSessionState) SessionState.get();
          ss.setLastCommand(cmd);

    - String callerInfo = ss.getConf().getLogIdVar(ss.getSessionId());
    - Thread.currentThread().setName(callerInfo + " " + originalThreadName);
    + ss.updateThreadName();
    +
          // Flush the print stream, so it doesn't include output from the last command
          ss.err.flush();
          String cmd_trimmed = cmd.trim();
    @@ -711,7 +711,8 @@ public class CliDriver {
            SessionState.start(ss);
          }

    - Thread.currentThread().setName(conf.getLogIdVar(ss.getSessionId()) + " " + originalThreadName);
    + ss.updateThreadName();
    +
          // execute cli driver work
          try {
            return executeDriver(ss, conf, oproc);

    http://git-wip-us.apache.org/repos/asf/hive/blob/fe301214/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
    ----------------------------------------------------------------------
    diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
    index 70b2bc0..109cd8c 100644
    --- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
    +++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
    @@ -399,6 +399,28 @@ public class SessionState {
          return (conf.getVar(HiveConf.ConfVars.HIVESESSIONID));
        }

    + public void updateThreadName() {
    + final String sessionId = getSessionId();
    + final String logPrefix = getConf().getLogIdVar(sessionId);
    + final String currThreadName = Thread.currentThread().getName();
    + if (!currThreadName.contains(logPrefix)) {
    + final String newThreadName = logPrefix + " " + currThreadName;
    + LOG.info("Updating thread name to {}", newThreadName);
    + Thread.currentThread().setName(newThreadName);
    + }
    + }
    +
    + public void resetThreadName() {
    + final String sessionId = getSessionId();
    + final String logPrefix = getConf().getLogIdVar(sessionId);
    + final String currThreadName = Thread.currentThread().getName();
    + if (currThreadName.contains(logPrefix)) {
    + final String[] names = currThreadName.split(logPrefix);
    + LOG.info("Resetting thread name to {}", names[names.length - 1]);
    + Thread.currentThread().setName(names[names.length - 1]);
    + }
    + }
    +
        /**
         * Initialize the transaction manager. This is done lazily to avoid hard wiring one
         * transaction manager at the beginning of the session.

    http://git-wip-us.apache.org/repos/asf/hive/blob/fe301214/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
    ----------------------------------------------------------------------
    diff --git a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
    index 2e45e2d..8baecdf 100644
    --- a/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
    +++ b/service/src/java/org/apache/hive/service/cli/session/HiveSessionImpl.java
    @@ -330,10 +330,7 @@ public class HiveSessionImpl implements HiveSession {
            lastAccessTime = System.currentTimeMillis();
          }
          // set the thread name with the logging prefix.
    - String logPrefix = getHiveConf().getLogIdVar(sessionState.getSessionId());
    - LOG.info(
    - "Prefixing the thread name (" + Thread.currentThread().getName() + ") with " + logPrefix);
    - Thread.currentThread().setName(logPrefix + Thread.currentThread().getName());
    + sessionState.updateThreadName();
          Hive.set(sessionHive);
        }

    @@ -348,17 +345,7 @@ public class HiveSessionImpl implements HiveSession {
          if (sessionState != null) {
            // can be null in-case of junit tests. skip reset.
            // reset thread name at release time.
    - String[] names = Thread.currentThread().getName()
    - .split(getHiveConf().getLogIdVar(sessionState.getSessionId()));
    - String threadName = null;
    - if (names.length > 1) {
    - threadName = names[names.length - 1];
    - } else if (names.length == 1) {
    - threadName = names[0];
    - } else {
    - threadName = "";
    - }
    - Thread.currentThread().setName(threadName);
    + sessionState.resetThreadName();
          }

          SessionState.detachSession();
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-13175: Disallow making external tables transactional (Wei Zheng, reviewed by Eugene Koifman)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ff55d0a6
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ff55d0a6
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ff55d0a6

    Branch: refs/heads/llap
    Commit: ff55d0a67e59c15b5ccfbdf1317bfd60cf057a30
    Parents: 1e8a31e
    Author: Wei <wzheng@hortonworks.com>
    Authored: Thu Mar 10 13:39:13 2016 -0800
    Committer: Wei <wzheng@hortonworks.com>
    Committed: Thu Mar 10 13:39:13 2016 -0800

    ----------------------------------------------------------------------
      .../hadoop/hive/metastore/TestHiveMetaStore.java | 1 +
      .../metastore/TransactionalValidationListener.java | 11 +++++++++++
      .../test/queries/clientnegative/alter_external_acid.q | 9 +++++++++
      .../test/queries/clientnegative/create_external_acid.q | 6 ++++++
      .../results/clientnegative/alter_external_acid.q.out | 13 +++++++++++++
      .../results/clientnegative/create_external_acid.q.out | 5 +++++
      6 files changed, 45 insertions(+)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
    ----------------------------------------------------------------------
    diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
    index a55c186..5da4165 100644
    --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
    +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/TestHiveMetaStore.java
    @@ -2944,6 +2944,7 @@ public abstract class TestHiveMetaStore extends TestCase {

          tbl.setSd(sd);
          tbl.setLastAccessTime(lastAccessTime);
    + tbl.setTableType(TableType.MANAGED_TABLE.toString());

          client.createTable(tbl);


    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/metastore/src/java/org/apache/hadoop/hive/metastore/TransactionalValidationListener.java
    ----------------------------------------------------------------------
    diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/TransactionalValidationListener.java b/metastore/src/java/org/apache/hadoop/hive/metastore/TransactionalValidationListener.java
    index 96158f8..3e74675 100644
    --- a/metastore/src/java/org/apache/hadoop/hive/metastore/TransactionalValidationListener.java
    +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/TransactionalValidationListener.java
    @@ -86,6 +86,12 @@ final class TransactionalValidationListener extends MetaStorePreEventListener {
              throw new MetaException("The table must be bucketed and stored using an ACID compliant" +
                  " format (such as ORC)");
            }
    +
    + if (newTable.getTableType().equals(TableType.EXTERNAL_TABLE.toString())) {
    + throw new MetaException(newTable.getDbName() + "." + newTable.getTableName() +
    + " cannot be declared transactional because it's an external table");
    + }
    +
            return;
          }
          Table oldTable = context.getOldTable();
    @@ -144,6 +150,11 @@ final class TransactionalValidationListener extends MetaStorePreEventListener {
                  " format (such as ORC)");
            }

    + if (newTable.getTableType().equals(TableType.EXTERNAL_TABLE.toString())) {
    + throw new MetaException(newTable.getDbName() + "." + newTable.getTableName() +
    + " cannot be declared transactional because it's an external table");
    + }
    +
            // normalize prop name
            parameters.put(hive_metastoreConstants.TABLE_IS_TRANSACTIONAL, Boolean.TRUE.toString());
            return;

    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/ql/src/test/queries/clientnegative/alter_external_acid.q
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/queries/clientnegative/alter_external_acid.q b/ql/src/test/queries/clientnegative/alter_external_acid.q
    new file mode 100644
    index 0000000..7807278
    --- /dev/null
    +++ b/ql/src/test/queries/clientnegative/alter_external_acid.q
    @@ -0,0 +1,9 @@
    +set hive.support.concurrency=true;
    +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    +
    +
    +create external table acid_external (a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc;
    +
    +alter table acid_external set TBLPROPERTIES ('transactional'='true');
    +
    +drop table acid_external;
    \ No newline at end of file

    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/ql/src/test/queries/clientnegative/create_external_acid.q
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/queries/clientnegative/create_external_acid.q b/ql/src/test/queries/clientnegative/create_external_acid.q
    new file mode 100644
    index 0000000..d6b2d84
    --- /dev/null
    +++ b/ql/src/test/queries/clientnegative/create_external_acid.q
    @@ -0,0 +1,6 @@
    +set hive.support.concurrency=true;
    +set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    +
    +
    +create external table acid_external (a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true');
    +

    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/ql/src/test/results/clientnegative/alter_external_acid.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientnegative/alter_external_acid.q.out b/ql/src/test/results/clientnegative/alter_external_acid.q.out
    new file mode 100644
    index 0000000..69bba3b
    --- /dev/null
    +++ b/ql/src/test/results/clientnegative/alter_external_acid.q.out
    @@ -0,0 +1,13 @@
    +PREHOOK: query: create external table acid_external (a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc
    +PREHOOK: type: CREATETABLE
    +PREHOOK: Output: database:default
    +PREHOOK: Output: default@acid_external
    +POSTHOOK: query: create external table acid_external (a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc
    +POSTHOOK: type: CREATETABLE
    +POSTHOOK: Output: database:default
    +POSTHOOK: Output: default@acid_external
    +PREHOOK: query: alter table acid_external set TBLPROPERTIES ('transactional'='true')
    +PREHOOK: type: ALTERTABLE_PROPERTIES
    +PREHOOK: Input: default@acid_external
    +PREHOOK: Output: default@acid_external
    +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter table. default.acid_external cannot be declared transactional because it's an external table

    http://git-wip-us.apache.org/repos/asf/hive/blob/ff55d0a6/ql/src/test/results/clientnegative/create_external_acid.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientnegative/create_external_acid.q.out b/ql/src/test/results/clientnegative/create_external_acid.q.out
    new file mode 100644
    index 0000000..123fe5a
    --- /dev/null
    +++ b/ql/src/test/results/clientnegative/create_external_acid.q.out
    @@ -0,0 +1,5 @@
    +PREHOOK: query: create external table acid_external (a int, b varchar(128)) clustered by (b) into 2 buckets stored as orc TBLPROPERTIES ('transactional'='true')
    +PREHOOK: type: CREATETABLE
    +PREHOOK: Output: database:default
    +PREHOOK: Output: default@acid_external
    +FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:default.acid_external cannot be declared transactional because it's an external table)
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/temp_table_join1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/temp_table_join1.q.out b/ql/src/test/results/clientpositive/temp_table_join1.q.out
    index bf41f8a..aafc263 100644
    --- a/ql/src/test/results/clientpositive/temp_table_join1.q.out
    +++ b/ql/src/test/results/clientpositive/temp_table_join1.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_nontemp
    +POSTHOOK: Lineage: src_nontemp.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_nontemp.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TEMPORARY TABLE src_temp AS SELECT * FROM src limit 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out
    index 3bc4e76..470590a 100644
    --- a/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out
    +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_1.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@A
    +POSTHOOK: Lineage: a.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: a.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table B as
      select * from src
      limit 10
    @@ -28,6 +30,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@B
    +POSTHOOK: Lineage: b.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: b.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      Warning: Shuffle Join MERGEJOIN[10][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product
      PREHOOK: query: explain select * from A join B
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out
    index 09f2fc5..68df37d 100644
    --- a/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out
    +++ b/ql/src/test/results/clientpositive/tez/cross_product_check_2.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@A
    +POSTHOOK: Lineage: a.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: a.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table B as
      select * from src order by key
      limit 10
    @@ -28,6 +30,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@B
    +POSTHOOK: Lineage: b.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: b.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      Warning: Map Join MAPJOIN[10][bigTable=?] in task 'Map 1' is a cross product
      PREHOOK: query: explain select * from A join B
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/ctas.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/ctas.q.out b/ql/src/test/results/clientpositive/tez/ctas.q.out
    index 0259c02..52ea981 100644
    --- a/ql/src/test/results/clientpositive/tez/ctas.q.out
    +++ b/ql/src/test/results/clientpositive/tez/ctas.q.out
    @@ -117,6 +117,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_CTAS1
    +POSTHOOK: Lineage: nzhang_ctas1.k SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_CTAS1
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas1
    @@ -267,6 +269,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas2
    +POSTHOOK: Lineage: nzhang_ctas2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas2
    @@ -417,6 +421,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas3
    +POSTHOOK: Lineage: nzhang_ctas3.conb EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas3.half_key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas3
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas3
    @@ -632,6 +638,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas4
    +POSTHOOK: Lineage: nzhang_ctas4.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas4.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas4
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas4
    @@ -906,6 +914,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas5
    +POSTHOOK: Lineage: nzhang_ctas5.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas5.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table nzhang_ctas6 (key string, `to` string)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -934,3 +944,5 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@nzhang_ctas6
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas7
    +POSTHOOK: Lineage: nzhang_ctas7.key SIMPLE [(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: nzhang_ctas7.to SIMPLE [(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:to, type:string, comment:null), ]

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/cte_2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/cte_2.q.out b/ql/src/test/results/clientpositive/tez/cte_2.q.out
    index 23f8ec6..017bded 100644
    --- a/ql/src/test/results/clientpositive/tez/cte_2.q.out
    +++ b/ql/src/test/results/clientpositive/tez/cte_2.q.out
    @@ -94,6 +94,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@s2
    +POSTHOOK: Lineage: s2.key SIMPLE []
      PREHOOK: query: select * from s2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@s2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/cte_4.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/cte_4.q.out b/ql/src/test/results/clientpositive/tez/cte_4.q.out
    index d560d74..6385abe 100644
    --- a/ql/src/test/results/clientpositive/tez/cte_4.q.out
    +++ b/ql/src/test/results/clientpositive/tez/cte_4.q.out
    @@ -124,6 +124,7 @@ POSTHOOK: Output: database:default
      POSTHOOK: Output: default@q1
      POSTHOOK: Output: default@s2
      #### A masked pattern was here ####
    +POSTHOOK: Lineage: s2.key SIMPLE [(q1)q1.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: select * from s2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@s2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
    index b4b14c2..159415d 100644
    --- a/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
    +++ b/ql/src/test/results/clientpositive/tez/dynamic_partition_pruning.q.out
    @@ -131,6 +131,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date
    +POSTHOOK: Lineage: srcpart_date.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_hour as select hr as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -149,6 +151,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_hour
    +POSTHOOK: Lineage: srcpart_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_date_hour as select ds as ds, ds as `date`, hr as hr, hr as hour from srcpart group by ds, hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -167,6 +171,10 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date_hour
    +POSTHOOK: Lineage: srcpart_date_hour.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_double_hour as select (hr*2) as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -185,6 +193,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_double_hour
    +POSTHOOK: Lineage: srcpart_double_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_double_hour.hr EXPRESSION [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: -- single column, single key
      EXPLAIN select count(*) from srcpart join srcpart_date on (srcpart.ds = srcpart_date.ds) where srcpart_date.`date` = '2008-04-08'
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/empty_join.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/empty_join.q.out b/ql/src/test/results/clientpositive/tez/empty_join.q.out
    index 4c89317..8a0c040 100644
    --- a/ql/src/test/results/clientpositive/tez/empty_join.q.out
    +++ b/ql/src/test/results/clientpositive/tez/empty_join.q.out
    @@ -12,6 +12,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: _dummy_database@_dummy_table
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@test_1
    +POSTHOOK: Lineage: test_1.id SIMPLE []
      PREHOOK: query: DROP TABLE IF EXISTS test_2
      PREHOOK: type: DROPTABLE
      POSTHOOK: query: DROP TABLE IF EXISTS test_2
    @@ -38,6 +39,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: _dummy_database@_dummy_table
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@test_3
    +POSTHOOK: Lineage: test_3.id SIMPLE []
      PREHOOK: query: explain
      SELECT t1.id, t2.id, t3.id
      FROM test_1 t1

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/explainuser_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/explainuser_1.q.out b/ql/src/test/results/clientpositive/tez/explainuser_1.q.out
    index 70a1322..a3ff85c 100644
    --- a/ql/src/test/results/clientpositive/tez/explainuser_1.q.out
    +++ b/ql/src/test/results/clientpositive/tez/explainuser_1.q.out
    @@ -3378,6 +3378,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_CTAS1
    +POSTHOOK: Lineage: nzhang_ctas1.k SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: query: explain create table nzhang_ctas3 row format serde "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" stored as RCFile as select key/2 half_key, concat(value, "_con") conb from src sort by half_key, conb limit 10
    @@ -3429,6 +3431,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas3
    +POSTHOOK: Lineage: nzhang_ctas3.conb EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas3.half_key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: explain create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2
      PREHOOK: type: CREATETABLE
      POSTHOOK: query: explain create table if not exists nzhang_ctas3 as select key, value from src sort by key, value limit 2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/explainuser_3.q.out b/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
    index 3f948a5..1222b94 100644
    --- a/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
    +++ b/ql/src/test/results/clientpositive/tez/explainuser_3.q.out
    @@ -288,6 +288,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_autho_test
    +POSTHOOK: Lineage: src_autho_test.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_autho_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain grant select on table src_autho_test to user hive_test_user
      PREHOOK: type: GRANT_PRIVILEGE
      POSTHOOK: query: explain grant select on table src_autho_test to user hive_test_user

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_1.q.out b/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_1.q.out
    index 3a1b937..a8eb0d3 100644
    --- a/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_1.q.out
    +++ b/ql/src/test/results/clientpositive/tez/hybridgrace_hashjoin_1.q.out
    @@ -1244,6 +1244,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_mapjoin
    +POSTHOOK: Lineage: decimal_mapjoin.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      Warning: Map Join MAPJOIN[14][bigTable=?] in task 'Map 1' is a cross product
      PREHOOK: query: EXPLAIN SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2
        FROM decimal_mapjoin l

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/llap_nullscan.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/llap_nullscan.q.out b/ql/src/test/results/clientpositive/tez/llap_nullscan.q.out
    index 099bfe6..39f04ea 100644
    --- a/ql/src/test/results/clientpositive/tez/llap_nullscan.q.out
    +++ b/ql/src/test/results/clientpositive/tez/llap_nullscan.q.out
    @@ -20,6 +20,10 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_orc
    +POSTHOOK: Lineage: src_orc.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: src_orc.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: src_orc.key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_orc.value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain extended
      select * from src_orc where 1=2
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/llapdecider.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/llapdecider.q.out b/ql/src/test/results/clientpositive/tez/llapdecider.q.out
    index a2d7f2a..2b0e639 100644
    --- a/ql/src/test/results/clientpositive/tez/llapdecider.q.out
    +++ b/ql/src/test/results/clientpositive/tez/llapdecider.q.out
    @@ -81,6 +81,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_orc
    +POSTHOOK: Lineage: src_orc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_orc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN SELECT key, count(value) as cnt FROM src_orc GROUP BY key ORDER BY cnt
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT key, count(value) as cnt FROM src_orc GROUP BY key ORDER BY cnt

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/temp_table.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/temp_table.q.out b/ql/src/test/results/clientpositive/tez/temp_table.q.out
    index d31dfb1..1c10a4e 100644
    --- a/ql/src/test/results/clientpositive/tez/temp_table.q.out
    +++ b/ql/src/test/results/clientpositive/tez/temp_table.q.out
    @@ -475,6 +475,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@s
    +POSTHOOK: Lineage: s.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: s.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select count(*) from s
      PREHOOK: type: QUERY
      PREHOOK: Input: default@s

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/tez_dml.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/tez_dml.q.out b/ql/src/test/results/clientpositive/tez/tez_dml.q.out
    index f80eaa7..43996cd 100644
    --- a/ql/src/test/results/clientpositive/tez/tez_dml.q.out
    +++ b/ql/src/test/results/clientpositive/tez/tez_dml.q.out
    @@ -104,6 +104,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@tmp_src
    +POSTHOOK: Lineage: tmp_src.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
    +POSTHOOK: Lineage: tmp_src.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: SELECT * FROM tmp_src
      PREHOOK: type: QUERY
      PREHOOK: Input: default@tmp_src
    @@ -1478,6 +1480,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tmp_src_part
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@empty
    +POSTHOOK: Lineage: empty.c SIMPLE [(tmp_src_part)tmp_src_part.FieldSchema(name:c, type:string, comment:null), ]
    +POSTHOOK: Lineage: empty.d SIMPLE []
      PREHOOK: query: SELECT * FROM empty
      PREHOOK: type: QUERY
      PREHOOK: Input: default@empty

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/tez_join_result_complex.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/tez_join_result_complex.q.out b/ql/src/test/results/clientpositive/tez/tez_join_result_complex.q.out
    index 58c4c86..180bcc6 100644
    --- a/ql/src/test/results/clientpositive/tez/tez_join_result_complex.q.out
    +++ b/ql/src/test/results/clientpositive/tez/tez_join_result_complex.q.out
    @@ -667,6 +667,22 @@ POSTHOOK: Input: default@ct_events_clean
      POSTHOOK: Input: default@service_request_clean
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ct_events1_test
    +POSTHOOK: Lineage: ct_events1_test.ce_create_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_create_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_end_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_end_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_notes SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cmpltyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cmpltyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctevs_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cnctevs_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctmd_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cnctmd_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cntvnst_stts_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cntvnst_stts_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_event_id SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_event_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_mode SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_mode, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_type SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_type, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.notes SIMPLE [(service_request_clean)b.FieldSchema(name:notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.src SIMPLE [(service_request_clean)b.FieldSchema(name:sum_reason_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqct_cds SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqct_cds, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqst_id SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqst_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrtyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:svcrtyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.total_transfers SIMPLE [(ct_events_clean)a.FieldSchema(name:total_transfers, type:int, comment:null), ]
      PREHOOK: query: select * from ct_events1_test
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ct_events1_test
    @@ -1889,6 +1905,22 @@ POSTHOOK: Input: default@ct_events_clean
      POSTHOOK: Input: default@service_request_clean
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ct_events1_test
    +POSTHOOK: Lineage: ct_events1_test.ce_create_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_create_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_end_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_end_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_notes SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cmpltyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cmpltyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctevs_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cnctevs_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctmd_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cnctmd_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cntvnst_stts_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cntvnst_stts_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_event_id SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_event_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_mode SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_mode, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_type SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_type, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.notes SIMPLE [(service_request_clean)b.FieldSchema(name:notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.src SIMPLE [(service_request_clean)b.FieldSchema(name:sum_reason_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqct_cds SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqct_cds, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqst_id SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqst_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrtyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:svcrtyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.total_transfers SIMPLE [(ct_events_clean)a.FieldSchema(name:total_transfers, type:int, comment:null), ]
      PREHOOK: query: select * from ct_events1_test
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ct_events1_test

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/tez_union.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/tez_union.q.out b/ql/src/test/results/clientpositive/tez/tez_union.q.out
    index 2c74605..bf03c1f 100644
    --- a/ql/src/test/results/clientpositive/tez/tez_union.q.out
    +++ b/ql/src/test/results/clientpositive/tez/tez_union.q.out
    @@ -109,6 +109,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.key EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.value EXPRESSION [(src)s1.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by key, value limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -299,6 +301,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.cnt EXPRESSION [(src)src.null, ]
      PREHOOK: query: select * from ut order by cnt limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -444,6 +447,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by skey, ukey limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -800,6 +805,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.lkey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by skey, ukey, lkey limit 100
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -1054,6 +1062,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.key EXPRESSION [(src)s2.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by key limit 30
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -1311,6 +1320,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by ukey, skey limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/unionDistinct_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/unionDistinct_1.q.out b/ql/src/test/results/clientpositive/tez/unionDistinct_1.q.out
    index 047c104..bef2365 100644
    --- a/ql/src/test/results/clientpositive/tez/unionDistinct_1.q.out
    +++ b/ql/src/test/results/clientpositive/tez/unionDistinct_1.q.out
    @@ -7778,6 +7778,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src2
    +POSTHOOK: Lineage: src2.count EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: src2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table src3 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -7788,6 +7790,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src3
    +POSTHOOK: Lineage: src3.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src3.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src4 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -7798,6 +7802,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src4
    +POSTHOOK: Lineage: src4.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src4.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src5 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -7808,6 +7814,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src5
    +POSTHOOK: Lineage: src5.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src5.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: explain extended
      select s.key, s.count from (
        select key, count from src2 where key < 10
    @@ -11134,6 +11142,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_same
    +POSTHOOK: Lineage: jackson_sev_same.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_same.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table dim_pho as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -11144,6 +11154,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@dim_pho
    +POSTHOOK: Lineage: dim_pho.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: dim_pho.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table jackson_sev_add as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -11154,6 +11166,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_add
    +POSTHOOK: Lineage: jackson_sev_add.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_add.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho UNION DISTINCT select * from jackson_sev_add)b on a.key=b.key and b.key=97
      PREHOOK: type: QUERY
      POSTHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho UNION DISTINCT select * from jackson_sev_add)b on a.key=b.key and b.key=97
    @@ -12459,6 +12473,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select * from src where key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -12469,6 +12485,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t3(key string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -13031,6 +13049,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select key, count(1) as cnt from src where key < 10 group by key
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -13041,6 +13061,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.cnt EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table t7(c1 string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -13348,6 +13370,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE t2 AS SELECT * FROM src WHERE key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -13358,6 +13382,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: -- Test simple union with double
      EXPLAIN
      SELECT * FROM

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/unionDistinct_2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/unionDistinct_2.q.out b/ql/src/test/results/clientpositive/tez/unionDistinct_2.q.out
    index f4cdd86..bd4ca72 100644
    --- a/ql/src/test/results/clientpositive/tez/unionDistinct_2.q.out
    +++ b/ql/src/test/results/clientpositive/tez/unionDistinct_2.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u1
    +POSTHOOK: Lineage: u1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE u2 as select key, value from src order by key limit 3
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -22,6 +24,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u2
    +POSTHOOK: Lineage: u2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE u3 as select key, value from src order by key desc limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -32,6 +36,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u3
    +POSTHOOK: Lineage: u3.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u3.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from u1
      PREHOOK: type: QUERY
      PREHOOK: Input: default@u1

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/union_fast_stats.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/union_fast_stats.q.out b/ql/src/test/results/clientpositive/tez/union_fast_stats.q.out
    index 46527d6..578205e 100644
    --- a/ql/src/test/results/clientpositive/tez/union_fast_stats.q.out
    +++ b/ql/src/test/results/clientpositive/tez/union_fast_stats.q.out
    @@ -28,6 +28,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -38,6 +50,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -48,6 +72,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -58,6 +94,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc_a stored as orc as select * from
      (select * from (select * from small_alltypesorc1a) sq1
       union all
    @@ -88,6 +136,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: desc formatted small_alltypesorc_a
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@small_alltypesorc_a
    @@ -301,6 +361,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -311,6 +383,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -321,6 +405,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -331,6 +427,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc_a stored as orc as select * from
      (select * from (select * from small_alltypesorc1a) sq1
       union all
    @@ -361,6 +469,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: desc formatted small_alltypesorc_a
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@small_alltypesorc_a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_between_columns.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_between_columns.q.out b/ql/src/test/results/clientpositive/tez/vector_between_columns.q.out
    index 66cda5a..d8f9c8b 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_between_columns.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_between_columns.q.out
    @@ -48,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tsint_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TSINT
    +POSTHOOK: Lineage: tsint.csint SIMPLE [(tsint_txt)tsint_txt.FieldSchema(name:csint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: tsint.rnum SIMPLE [(tsint_txt)tsint_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      tsint_txt.rnum tsint_txt.csint
      PREHOOK: query: create table TINT stored as orc AS SELECT * FROM TINT_txt
      PREHOOK: type: CREATETABLE_AS_SELECT
    @@ -59,6 +61,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tint_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TINT
    +POSTHOOK: Lineage: tint.cint SIMPLE [(tint_txt)tint_txt.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: tint.rnum SIMPLE [(tint_txt)tint_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      tint_txt.rnum tint_txt.cint
      Warning: Map Join MAPJOIN[11][bigTable=?] in task 'Map 1' is a cross product
      PREHOOK: query: -- We DO NOT expect the following to vectorized because the BETWEEN range expressions

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_between_in.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out
    index fb88d57..4ae687e 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_between_in.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_between_in.q.out
    @@ -8,6 +8,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_date_test
    +POSTHOOK: Lineage: decimal_date_test.cdate EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out b/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out
    index 7f1f1c1..4ee8150 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_char_mapjoin1.q.out
    @@ -98,6 +98,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_vc1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_vc1_orc
    +POSTHOOK: Lineage: char_join1_vc1_orc.c1 SIMPLE [(char_join1_vc1)char_join1_vc1.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_vc1_orc.c2 SIMPLE [(char_join1_vc1)char_join1_vc1.FieldSchema(name:c2, type:char(10), comment:null), ]
      PREHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@char_join1_vc2
    @@ -108,6 +110,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_vc2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_vc2_orc
    +POSTHOOK: Lineage: char_join1_vc2_orc.c1 SIMPLE [(char_join1_vc2)char_join1_vc2.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_vc2_orc.c2 SIMPLE [(char_join1_vc2)char_join1_vc2.FieldSchema(name:c2, type:char(20), comment:null), ]
      PREHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@char_join1_str
    @@ -118,6 +122,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_str
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_str_orc
    +POSTHOOK: Lineage: char_join1_str_orc.c1 SIMPLE [(char_join1_str)char_join1_str.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_str_orc.c2 SIMPLE [(char_join1_str)char_join1_str.FieldSchema(name:c2, type:string, comment:null), ]
      PREHOOK: query: -- Join char with same length char
      explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out
    index 4ed0a0f..7e6638e 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_10_0.q.out
    @@ -32,6 +32,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL
    +POSTHOOK: Lineage: decimal.dec SIMPLE [(decimal_txt)decimal_txt.FieldSchema(name:dec, type:decimal(10,0), comment:null), ]
      PREHOOK: query: EXPLAIN
      SELECT dec FROM `DECIMAL` order by dec
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out
    index eea91bb..537d568 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_3.q.out
    @@ -38,6 +38,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_3_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL_3
    +POSTHOOK: Lineage: decimal_3.key SIMPLE [(decimal_3_txt)decimal_3_txt.FieldSchema(name:key, type:decimal(38,18), comment:null), ]
    +POSTHOOK: Lineage: decimal_3.value SIMPLE [(decimal_3_txt)decimal_3_txt.FieldSchema(name:value, type:int, comment:null), ]
      PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value
      PREHOOK: type: QUERY
      PREHOOK: Input: default@decimal_3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out
    index e0ccbc6..15c9757 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_6.q.out
    @@ -258,6 +258,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_6_1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL_6_3
    +POSTHOOK: Lineage: decimal_6_3.k EXPRESSION [(decimal_6_1)decimal_6_1.FieldSchema(name:key, type:decimal(10,5), comment:null), ]
    +POSTHOOK: Lineage: decimal_6_3.v EXPRESSION [(decimal_6_1)decimal_6_1.FieldSchema(name:value, type:int, comment:null), ]
      PREHOOK: query: desc DECIMAL_6_3
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@decimal_6_3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out
    index 7d8823c..efc77ff 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_aggregate.q.out
    @@ -16,6 +16,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_vgby
    +POSTHOOK: Lineage: decimal_vgby.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      PREHOOK: query: -- SORT_QUERY_RESULTS

      -- First only do simple aggregations that output primitives only

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out
    index 1b0320c..2976cb5 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_expressions.q.out
    @@ -12,6 +12,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_test
    +POSTHOOK: Lineage: decimal_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2 as c1, cdecimal1 - (2*cdecimal2) as c2, ((cdecimal1+2.34)/cdecimal2) as c3, (cdecimal1 * (cdecimal2/3.4)) as c4, cdecimal1 % 10 as c5, CAST(cdecimal1 AS INT) as c6, CAST(cdecimal2 AS SMALLINT) as c7, CAST(cdecimal2 AS TINYINT) as c8, CAST(cdecimal1 AS BIGINT) as c9, CAST (cdecimal1 AS BOOLEAN) as c10, CAST(cdecimal2 AS DOUBLE) as c11, CAST(cdecimal1 AS FLOAT) as c12, CAST(cdecimal2 AS STRING) as c13, CAST(cdecimal1 AS TIMESTAMP) as c14 FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL
      ORDER BY c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14
      LIMIT 10

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out
    index 5e85b63..cf9a71e 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_math_funcs.q.out
    @@ -8,6 +8,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_test
    +POSTHOOK: Lineage: decimal_test.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end.

      explain

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/tez/vector_grouping_sets.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/tez/vector_grouping_sets.q.out b/ql/src/test/results/clientpositive/tez/vector_grouping_sets.q.out
    index 3b97296..86c7306 100644
    --- a/ql/src/test/results/clientpositive/tez/vector_grouping_sets.q.out
    +++ b/ql/src/test/results/clientpositive/tez/vector_grouping_sets.q.out
    @@ -98,6 +98,35 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@store_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@store
    +POSTHOOK: Lineage: store.s_city SIMPLE [(store_txt)store_txt.FieldSchema(name:s_city, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_closed_date_sk SIMPLE [(store_txt)store_txt.FieldSchema(name:s_closed_date_sk, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_company_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_company_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_company_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_company_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_country SIMPLE [(store_txt)store_txt.FieldSchema(name:s_country, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_county SIMPLE [(store_txt)store_txt.FieldSchema(name:s_county, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_division_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_division_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_division_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_division_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_floor_space SIMPLE [(store_txt)store_txt.FieldSchema(name:s_floor_space, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_geography_class SIMPLE [(store_txt)store_txt.FieldSchema(name:s_geography_class, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_gmt_offset SIMPLE [(store_txt)store_txt.FieldSchema(name:s_gmt_offset, type:decimal(5,2), comment:null), ]
    +POSTHOOK: Lineage: store.s_hours SIMPLE [(store_txt)store_txt.FieldSchema(name:s_hours, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_manager SIMPLE [(store_txt)store_txt.FieldSchema(name:s_manager, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_desc SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_desc, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_manager SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_manager, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_number_employees SIMPLE [(store_txt)store_txt.FieldSchema(name:s_number_employees, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_rec_end_date SIMPLE [(store_txt)store_txt.FieldSchema(name:s_rec_end_date, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_rec_start_date SIMPLE [(store_txt)store_txt.FieldSchema(name:s_rec_start_date, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_state SIMPLE [(store_txt)store_txt.FieldSchema(name:s_state, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_store_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_store_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_store_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_store_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_store_sk SIMPLE [(store_txt)store_txt.FieldSchema(name:s_store_sk, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_street_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_street_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_street_number SIMPLE [(store_txt)store_txt.FieldSchema(name:s_street_number, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_street_type SIMPLE [(store_txt)store_txt.FieldSchema(name:s_street_type, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_suite_number SIMPLE [(store_txt)store_txt.FieldSchema(name:s_suite_number, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_tax_precentage SIMPLE [(store_txt)store_txt.FieldSchema(name:s_tax_precentage, type:decimal(5,2), comment:null), ]
    +POSTHOOK: Lineage: store.s_zip SIMPLE [(store_txt)store_txt.FieldSchema(name:s_zip, type:string, comment:null), ]
      PREHOOK: query: explain
      select s_store_id
       from store
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join1.q.out b/ql/src/test/results/clientpositive/vector_outer_join1.q.out
    index 1f4c83a..93ab473 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join1.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join1.q.out
    @@ -10,6 +10,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -20,6 +32,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -30,6 +54,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -40,6 +76,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select * from small_alltypesorc1a
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc1a
    @@ -117,6 +165,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_alltypesorc_a COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc_a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join2.q.out b/ql/src/test/results/clientpositive/vector_outer_join2.q.out
    index 58f4fae..c8001e0 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join2.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join2.q.out
    @@ -10,6 +10,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and cbigint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -20,6 +32,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and cbigint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -30,6 +54,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and cbigint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -40,6 +76,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select * from small_alltypesorc1a
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc1a
    @@ -122,6 +170,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_alltypesorc_a COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc_a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join3.q.out b/ql/src/test/results/clientpositive/vector_outer_join3.q.out
    index 0df607d..4f1a98d 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join3.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join3.q.out
    @@ -10,6 +10,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and cstring1 is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -20,6 +32,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and cstring1 is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -30,6 +54,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and cstring1 is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -40,6 +76,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select * from small_alltypesorc1a
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc1a
    @@ -122,6 +170,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_alltypesorc_a COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc_a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join4.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join4.q.out b/ql/src/test/results/clientpositive/vector_outer_join4.q.out
    index a6c45b0..a32f585 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join4.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join4.q.out
    @@ -10,6 +10,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1b
    +POSTHOOK: Lineage: small_alltypesorc1b.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1b.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2b as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -20,6 +32,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2b
    +POSTHOOK: Lineage: small_alltypesorc2b.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2b.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3b as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -30,6 +54,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3b
    +POSTHOOK: Lineage: small_alltypesorc3b.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3b.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4b as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -40,6 +76,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4b
    +POSTHOOK: Lineage: small_alltypesorc4b.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4b.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select * from small_alltypesorc1b
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc1b
    @@ -132,6 +180,18 @@ POSTHOOK: Input: default@small_alltypesorc3b
      POSTHOOK: Input: default@small_alltypesorc4b
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_b
    +POSTHOOK: Lineage: small_alltypesorc_b.cbigint EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cboolean1 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cboolean2 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cdouble EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cfloat EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cint EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.csmallint EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cstring1 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.cstring2 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.ctimestamp1 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.ctimestamp2 EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_b.ctinyint EXPRESSION [(small_alltypesorc1b)small_alltypesorc1b.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2b)small_alltypesorc2b.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3b)small_alltypesorc3b.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4b)small_alltypesorc4b.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_alltypesorc_b COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_alltypesorc_b

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join5.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join5.q.out b/ql/src/test/results/clientpositive/vector_outer_join5.q.out
    index c7a85ee..1b09fda 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join5.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join5.q.out
    @@ -18,6 +18,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sorted_mod_4
    +POSTHOOK: Lineage: sorted_mod_4.cmodint EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: sorted_mod_4.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE sorted_mod_4 COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@sorted_mod_4
    @@ -46,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_table
    +POSTHOOK: Lineage: small_table.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_table.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_table COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_table
    @@ -665,6 +669,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@mod_8_mod_4
    +POSTHOOK: Lineage: mod_8_mod_4.cmodint EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: mod_8_mod_4.cmodtinyint EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE mod_8_mod_4 COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@mod_8_mod_4
    @@ -693,6 +699,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_table2
    +POSTHOOK: Lineage: small_table2.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_table2.cmodtinyint EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: ANALYZE TABLE small_table2 COMPUTE STATISTICS
      PREHOOK: type: QUERY
      PREHOOK: Input: default@small_table2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_outer_join6.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_outer_join6.q.out b/ql/src/test/results/clientpositive/vector_outer_join6.q.out
    index 02a3f87..8c09716 100644
    --- a/ql/src/test/results/clientpositive/vector_outer_join6.q.out
    +++ b/ql/src/test/results/clientpositive/vector_outer_join6.q.out
    @@ -84,6 +84,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tjoin1_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TJOIN1
    +POSTHOOK: Lineage: tjoin1.c1 SIMPLE [(tjoin1_txt)tjoin1_txt.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: tjoin1.c2 SIMPLE [(tjoin1_txt)tjoin1_txt.FieldSchema(name:c2, type:int, comment:null), ]
    +POSTHOOK: Lineage: tjoin1.rnum SIMPLE [(tjoin1_txt)tjoin1_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      PREHOOK: query: create table TJOIN2 stored as orc AS SELECT * FROM TJOIN2_txt
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@tjoin2_txt
    @@ -94,6 +97,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tjoin2_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TJOIN2
    +POSTHOOK: Lineage: tjoin2.c1 SIMPLE [(tjoin2_txt)tjoin2_txt.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: tjoin2.c2 SIMPLE [(tjoin2_txt)tjoin2_txt.FieldSchema(name:c2, type:char(2), comment:null), ]
    +POSTHOOK: Lineage: tjoin2.rnum SIMPLE [(tjoin2_txt)tjoin2_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      PREHOOK: query: create table TJOIN3 stored as orc AS SELECT * FROM TJOIN3_txt
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@tjoin3_txt
    @@ -104,6 +110,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tjoin3_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TJOIN3
    +POSTHOOK: Lineage: tjoin3.c1 SIMPLE [(tjoin3_txt)tjoin3_txt.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: tjoin3.c2 SIMPLE [(tjoin3_txt)tjoin3_txt.FieldSchema(name:c2, type:char(2), comment:null), ]
    +POSTHOOK: Lineage: tjoin3.rnum SIMPLE [(tjoin3_txt)tjoin3_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      PREHOOK: query: create table TJOIN4 stored as orc AS SELECT * FROM TJOIN4_txt
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@tjoin4_txt
    @@ -114,6 +123,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tjoin4_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TJOIN4
    +POSTHOOK: Lineage: tjoin4.c1 SIMPLE [(tjoin4_txt)tjoin4_txt.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: tjoin4.c2 SIMPLE [(tjoin4_txt)tjoin4_txt.FieldSchema(name:c2, type:char(2), comment:null), ]
    +POSTHOOK: Lineage: tjoin4.rnum SIMPLE [(tjoin4_txt)tjoin4_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      PREHOOK: query: explain
      select tj1rnum, tj2rnum, tjoin3.rnum as rnumt3 from
         (select tjoin1.rnum tj1rnum, tjoin2.rnum tj2rnum, tjoin2.c1 tj2c1 from tjoin1 left outer join tjoin2 on tjoin1.c1 = tjoin2.c1 ) tj left outer join tjoin3 on tj2c1 = tjoin3.c1

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out b/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out
    index 36d3b1a..09dd873 100644
    --- a/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out
    +++ b/ql/src/test/results/clientpositive/vector_partitioned_date_time.q.out
    @@ -52,6 +52,12 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@flights_tiny
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@flights_tiny_orc
    +POSTHOOK: Lineage: flights_tiny_orc.arr_delay SIMPLE [(flights_tiny)flights_tiny.FieldSchema(name:arr_delay, type:float, comment:null), ]
    +POSTHOOK: Lineage: flights_tiny_orc.dest_city_name SIMPLE [(flights_tiny)flights_tiny.FieldSchema(name:dest_city_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: flights_tiny_orc.fl_date SIMPLE [(flights_tiny)flights_tiny.FieldSchema(name:fl_date, type:date, comment:null), ]
    +POSTHOOK: Lineage: flights_tiny_orc.fl_num SIMPLE [(flights_tiny)flights_tiny.FieldSchema(name:fl_num, type:int, comment:null), ]
    +POSTHOOK: Lineage: flights_tiny_orc.fl_time EXPRESSION [(flights_tiny)flights_tiny.FieldSchema(name:fl_date, type:date, comment:null), ]
    +POSTHOOK: Lineage: flights_tiny_orc.origin_city_name SIMPLE [(flights_tiny)flights_tiny.FieldSchema(name:origin_city_name, type:string, comment:null), ]
      PREHOOK: query: SELECT * FROM flights_tiny_orc
      PREHOOK: type: QUERY
      PREHOOK: Input: default@flights_tiny_orc

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
    index fd1a58e..19a3d50 100644
    --- a/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
    +++ b/ql/src/test/results/clientpositive/vector_reduce_groupby_decimal.q.out
    @@ -10,6 +10,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_test
    +POSTHOOK: Lineage: decimal_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      PREHOOK: query: EXPLAIN
      SELECT cint, cdouble, cdecimal1, cdecimal2, min(cdecimal1) as min_decimal1 FROM decimal_test
      WHERE cdecimal1 is not null and cdecimal2 is not null

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out b/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out
    index 8806808..5ca6d70 100644
    --- a/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out
    +++ b/ql/src/test/results/clientpositive/vector_varchar_mapjoin1.q.out
    @@ -98,6 +98,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@varchar_join1_vc1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@varchar_join1_vc1_orc
    +POSTHOOK: Lineage: varchar_join1_vc1_orc.c1 SIMPLE [(varchar_join1_vc1)varchar_join1_vc1.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: varchar_join1_vc1_orc.c2 SIMPLE [(varchar_join1_vc1)varchar_join1_vc1.FieldSchema(name:c2, type:varchar(10), comment:null), ]
      PREHOOK: query: create table varchar_join1_vc2_orc stored as orc as select * from varchar_join1_vc2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@varchar_join1_vc2
    @@ -108,6 +110,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@varchar_join1_vc2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@varchar_join1_vc2_orc
    +POSTHOOK: Lineage: varchar_join1_vc2_orc.c1 SIMPLE [(varchar_join1_vc2)varchar_join1_vc2.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: varchar_join1_vc2_orc.c2 SIMPLE [(varchar_join1_vc2)varchar_join1_vc2.FieldSchema(name:c2, type:varchar(20), comment:null), ]
      PREHOOK: query: create table varchar_join1_str_orc stored as orc as select * from varchar_join1_str
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@varchar_join1_str
    @@ -118,6 +122,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@varchar_join1_str
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@varchar_join1_str_orc
    +POSTHOOK: Lineage: varchar_join1_str_orc.c1 SIMPLE [(varchar_join1_str)varchar_join1_str.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: varchar_join1_str_orc.c2 SIMPLE [(varchar_join1_str)varchar_join1_str.FieldSchema(name:c2, type:string, comment:null), ]
      PREHOOK: query: -- Join varchar with same length varchar
      explain select * from varchar_join1_vc1_orc a join varchar_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vectorization_decimal_date.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vectorization_decimal_date.q.out b/ql/src/test/results/clientpositive/vectorization_decimal_date.q.out
    index 93cdb24..6cae52c 100644
    --- a/ql/src/test/results/clientpositive/vectorization_decimal_date.q.out
    +++ b/ql/src/test/results/clientpositive/vectorization_decimal_date.q.out
    @@ -8,6 +8,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@date_decimal_test
    +POSTHOOK: Lineage: date_decimal_test.cdate EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: date_decimal_test.cdecimal EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: date_decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: date_decimal_test.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      PREHOOK: query: EXPLAIN SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT cdate, cdecimal from date_decimal_test where cint IS NOT NULL AND cdouble IS NOT NULL LIMIT 10

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vectorization_short_regress.q.out b/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
    index 4b8ff69..91c10f0 100644
    --- a/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
    +++ b/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
    @@ -2972,6 +2972,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesnull
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@alltypesnullorc
    +POSTHOOK: Lineage: alltypesnullorc.cbigint SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cboolean1 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cboolean2 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cdouble SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cfloat SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cint SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.csmallint SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cstring1 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.cstring2 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.ctimestamp1 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.ctimestamp2 SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: alltypesnullorc.ctinyint SIMPLE [(alltypesnull)alltypesnull.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: explain
      select count(*) from alltypesnullorc
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/windowing_navfn.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/windowing_navfn.q.out b/ql/src/test/results/clientpositive/windowing_navfn.q.out
    index a79fccc..1729434 100644
    --- a/ql/src/test/results/clientpositive/windowing_navfn.q.out
    +++ b/ql/src/test/results/clientpositive/windowing_navfn.q.out
    @@ -642,6 +642,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@wtest
    +POSTHOOK: Lineage: wtest.a SCRIPT []
    +POSTHOOK: Lineage: wtest.b SCRIPT []
      PREHOOK: query: select a, b,
      first_value(b) over (partition by a order by b rows between 1 preceding and 1 following ) ,
      first_value(b, true) over (partition by a order by b rows between 1 preceding and 1 following ) ,

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/windowing_streaming.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/windowing_streaming.q.out b/ql/src/test/results/clientpositive/windowing_streaming.q.out
    index 27dd96f..a74ddb3 100644
    --- a/ql/src/test/results/clientpositive/windowing_streaming.q.out
    +++ b/ql/src/test/results/clientpositive/windowing_streaming.q.out
    @@ -373,6 +373,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sB
    +POSTHOOK: Lineage: sb.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: sb.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
    +POSTHOOK: Lineage: sb.r SCRIPT [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null
      ), ]
      PREHOOK: query: select * from sB
      where ctinyint is null
      PREHOOK: type: QUERY
    @@ -441,6 +444,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sD
    +POSTHOOK: Lineage: sd.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: sd.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
    +POSTHOOK: Lineage: sd.r SCRIPT [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null
      ), ]
      PREHOOK: query: select * from sD
      where ctinyint is null
      PREHOOK: type: QUERY
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/cte_4.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/cte_4.q.out b/ql/src/test/results/clientpositive/llap/cte_4.q.out
    index d560d74..6385abe 100644
    --- a/ql/src/test/results/clientpositive/llap/cte_4.q.out
    +++ b/ql/src/test/results/clientpositive/llap/cte_4.q.out
    @@ -124,6 +124,7 @@ POSTHOOK: Output: database:default
      POSTHOOK: Output: default@q1
      POSTHOOK: Output: default@s2
      #### A masked pattern was here ####
    +POSTHOOK: Lineage: s2.key SIMPLE [(q1)q1.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: select * from s2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@s2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
    index 9f38717..ace2960 100644
    --- a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
    +++ b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
    @@ -133,6 +133,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date
    +POSTHOOK: Lineage: srcpart_date.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_hour as select hr as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -151,6 +153,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_hour
    +POSTHOOK: Lineage: srcpart_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_date_hour as select ds as ds, ds as `date`, hr as hr, hr as hour from srcpart group by ds, hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -169,6 +173,10 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date_hour
    +POSTHOOK: Lineage: srcpart_date_hour.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_double_hour as select (hr*2) as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -187,6 +195,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_double_hour
    +POSTHOOK: Lineage: srcpart_double_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_double_hour.hr EXPRESSION [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: -- single column, single key
      EXPLAIN select count(*) from srcpart join srcpart_date on (srcpart.ds = srcpart_date.ds) where srcpart_date.`date` = '2008-04-08'
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_1.q.out b/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_1.q.out
    index f3e9ac7..d611e8b 100644
    --- a/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_1.q.out
    +++ b/ql/src/test/results/clientpositive/llap/hybridgrace_hashjoin_1.q.out
    @@ -1274,6 +1274,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_mapjoin
    +POSTHOOK: Lineage: decimal_mapjoin.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_mapjoin.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      Warning: Map Join MAPJOIN[14][bigTable=?] in task 'Map 1' is a cross product
      PREHOOK: query: EXPLAIN SELECT l.cint, r.cint, l.cdecimal1, r.cdecimal2
        FROM decimal_mapjoin l

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/llap_nullscan.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/llap_nullscan.q.out b/ql/src/test/results/clientpositive/llap/llap_nullscan.q.out
    index ac429bc..947ff71 100644
    --- a/ql/src/test/results/clientpositive/llap/llap_nullscan.q.out
    +++ b/ql/src/test/results/clientpositive/llap/llap_nullscan.q.out
    @@ -20,6 +20,10 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_orc
    +POSTHOOK: Lineage: src_orc.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: src_orc.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: src_orc.key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_orc.value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain extended
      select * from src_orc where 1=2
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/llap_udf.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/llap_udf.q.out b/ql/src/test/results/clientpositive/llap/llap_udf.q.out
    index 29ed978..a8a9415 100644
    --- a/ql/src/test/results/clientpositive/llap/llap_udf.q.out
    +++ b/ql/src/test/results/clientpositive/llap/llap_udf.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_orc
    +POSTHOOK: Lineage: src_orc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_orc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: -- Not using GenericUDFTestGetJavaBoolean; that is already registered when tests begin

      CREATE TEMPORARY FUNCTION test_udf0 AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFEvaluateNPE'

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/llapdecider.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/llapdecider.q.out b/ql/src/test/results/clientpositive/llap/llapdecider.q.out
    index a2d7f2a..2b0e639 100644
    --- a/ql/src/test/results/clientpositive/llap/llapdecider.q.out
    +++ b/ql/src/test/results/clientpositive/llap/llapdecider.q.out
    @@ -81,6 +81,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_orc
    +POSTHOOK: Lineage: src_orc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_orc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN SELECT key, count(value) as cnt FROM src_orc GROUP BY key ORDER BY cnt
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT key, count(value) as cnt FROM src_orc GROUP BY key ORDER BY cnt

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/tez_dml.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/tez_dml.q.out b/ql/src/test/results/clientpositive/llap/tez_dml.q.out
    index b7a7e86..1487c90 100644
    --- a/ql/src/test/results/clientpositive/llap/tez_dml.q.out
    +++ b/ql/src/test/results/clientpositive/llap/tez_dml.q.out
    @@ -107,6 +107,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@tmp_src
    +POSTHOOK: Lineage: tmp_src.cnt EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
    +POSTHOOK: Lineage: tmp_src.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: SELECT * FROM tmp_src
      PREHOOK: type: QUERY
      PREHOOK: Input: default@tmp_src
    @@ -1483,6 +1485,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tmp_src_part
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@empty
    +POSTHOOK: Lineage: empty.c SIMPLE [(tmp_src_part)tmp_src_part.FieldSchema(name:c, type:string, comment:null), ]
    +POSTHOOK: Lineage: empty.d SIMPLE []
      PREHOOK: query: SELECT * FROM empty
      PREHOOK: type: QUERY
      PREHOOK: Input: default@empty

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/tez_join_result_complex.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/tez_join_result_complex.q.out b/ql/src/test/results/clientpositive/llap/tez_join_result_complex.q.out
    index d3c714c..08d89c4 100644
    --- a/ql/src/test/results/clientpositive/llap/tez_join_result_complex.q.out
    +++ b/ql/src/test/results/clientpositive/llap/tez_join_result_complex.q.out
    @@ -669,6 +669,22 @@ POSTHOOK: Input: default@ct_events_clean
      POSTHOOK: Input: default@service_request_clean
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ct_events1_test
    +POSTHOOK: Lineage: ct_events1_test.ce_create_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_create_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_end_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_end_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_notes SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cmpltyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cmpltyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctevs_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cnctevs_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctmd_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cnctmd_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cntvnst_stts_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cntvnst_stts_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_event_id SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_event_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_mode SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_mode, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_type SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_type, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.notes SIMPLE [(service_request_clean)b.FieldSchema(name:notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.src SIMPLE [(service_request_clean)b.FieldSchema(name:sum_reason_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqct_cds SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqct_cds, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqst_id SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqst_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrtyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:svcrtyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.total_transfers SIMPLE [(ct_events_clean)a.FieldSchema(name:total_transfers, type:int, comment:null), ]
      PREHOOK: query: select * from ct_events1_test
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ct_events1_test
    @@ -1893,6 +1909,22 @@ POSTHOOK: Input: default@ct_events_clean
      POSTHOOK: Input: default@service_request_clean
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ct_events1_test
    +POSTHOOK: Lineage: ct_events1_test.ce_create_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_create_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_end_dt SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_end_dt, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.ce_notes SIMPLE [(ct_events_clean)a.FieldSchema(name:ce_notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cmpltyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cmpltyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctevs_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cnctevs_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cnctmd_cd SIMPLE [(service_request_clean)b.FieldSchema(name:cnctmd_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.cntvnst_stts_cd SIMPLE [(ct_events_clean)a.FieldSchema(name:cntvnst_stts_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_event_id SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_event_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_mode SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_mode, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.contact_type SIMPLE [(ct_events_clean)a.FieldSchema(name:contact_type, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.notes SIMPLE [(service_request_clean)b.FieldSchema(name:notes, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.src SIMPLE [(service_request_clean)b.FieldSchema(name:sum_reason_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqct_cds SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqct_cds, type:array<string>, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrqst_id SIMPLE [(service_request_clean)b.FieldSchema(name:svcrqst_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.svcrtyp_cd SIMPLE [(service_request_clean)b.FieldSchema(name:svcrtyp_cd, type:string, comment:null), ]
    +POSTHOOK: Lineage: ct_events1_test.total_transfers SIMPLE [(ct_events_clean)a.FieldSchema(name:total_transfers, type:int, comment:null), ]
      PREHOOK: query: select * from ct_events1_test
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ct_events1_test

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/tez_union.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/tez_union.q.out b/ql/src/test/results/clientpositive/llap/tez_union.q.out
    index f42fae1..4388bfc 100644
    --- a/ql/src/test/results/clientpositive/llap/tez_union.q.out
    +++ b/ql/src/test/results/clientpositive/llap/tez_union.q.out
    @@ -112,6 +112,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.key EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.value EXPRESSION [(src)s1.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by key, value limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -308,6 +310,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.cnt EXPRESSION [(src)src.null, ]
      PREHOOK: query: select * from ut order by cnt limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -456,6 +459,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by skey, ukey limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -821,6 +826,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.lkey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)s1.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by skey, ukey, lkey limit 100
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -1079,6 +1087,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.key EXPRESSION [(src)s2.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by key limit 30
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut
    @@ -1342,6 +1351,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@ut
    +POSTHOOK: Lineage: ut.skey SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: ut.ukey EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from ut order by ukey, skey limit 20
      PREHOOK: type: QUERY
      PREHOOK: Input: default@ut

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
    index 35b7544..db21036 100644
    --- a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
    +++ b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
    @@ -133,6 +133,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date
    +POSTHOOK: Lineage: srcpart_date.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_hour stored as orc as select hr as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -151,6 +153,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_hour
    +POSTHOOK: Lineage: srcpart_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_date_hour stored as orc as select ds as ds, ds as `date`, hr as hr, hr as hour from srcpart group by ds, hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -169,6 +173,10 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_date_hour
    +POSTHOOK: Lineage: srcpart_date_hour.date SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.ds SIMPLE [(srcpart)srcpart.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_date_hour.hr SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: create table srcpart_double_hour stored as orc as select (hr*2) as hr, hr as hour from srcpart group by hr
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@srcpart
    @@ -187,6 +195,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srcpart_double_hour
    +POSTHOOK: Lineage: srcpart_double_hour.hour SIMPLE [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
    +POSTHOOK: Lineage: srcpart_double_hour.hr EXPRESSION [(srcpart)srcpart.FieldSchema(name:hr, type:string, comment:null), ]
      PREHOOK: query: -- single column, single key
      EXPLAIN select count(*) from srcpart join srcpart_date on (srcpart.ds = srcpart_date.ds) where srcpart_date.`date` = '2008-04-08'
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap_partitioned.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap_partitioned.q.out b/ql/src/test/results/clientpositive/llap_partitioned.q.out
    index 25d2f4f..6f259a6 100644
    --- a/ql/src/test/results/clientpositive/llap_partitioned.q.out
    +++ b/ql/src/test/results/clientpositive/llap_partitioned.q.out
    @@ -1964,6 +1964,10 @@ POSTHOOK: Input: default@orc_llap_part@ctinyint=9
      POSTHOOK: Input: default@orc_llap_part@ctinyint=__HIVE_DEFAULT_PARTITION__
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cchar1 SIMPLE [(orc_llap_part)oft.FieldSchema(name:cchar1, type:char(255), comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap_part)oft.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctinyint SIMPLE [(orc_llap_part)oft.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cvchar1 SIMPLE [(orc_llap_part)oft.FieldSchema(name:cvchar1, type:varchar(255), comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/llap_uncompressed.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/llap_uncompressed.q.out b/ql/src/test/results/clientpositive/llap_uncompressed.q.out
    index 4f4eb70..d40d63d 100644
    --- a/ql/src/test/results/clientpositive/llap_uncompressed.q.out
    +++ b/ql/src/test/results/clientpositive/llap_uncompressed.q.out
    @@ -117,6 +117,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cbigint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cdouble SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cfloat SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.csmallint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctinyint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/merge3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/merge3.q.out b/ql/src/test/results/clientpositive/merge3.q.out
    index 266abdf..5b581db 100644
    --- a/ql/src/test/results/clientpositive/merge3.q.out
    +++ b/ql/src/test/results/clientpositive/merge3.q.out
    @@ -22,6 +22,8 @@ POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
      POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@merge_src
    +POSTHOOK: Lineage: merge_src.key SIMPLE [(srcpart)srcpart.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: merge_src.value SIMPLE [(srcpart)srcpart.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table merge_src_part (key string, value string) partitioned by (ds string)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -339,6 +341,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@merge_src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@merge_src2
    +POSTHOOK: Lineage: merge_src2.key SIMPLE [(merge_src)merge_src.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: merge_src2.value SIMPLE [(merge_src)merge_src.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: select * from merge_src2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@merge_src2

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/multi_insert_lateral_view.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/multi_insert_lateral_view.q.out b/ql/src/test/results/clientpositive/multi_insert_lateral_view.q.out
    index 07a0f3e..7964405 100644
    --- a/ql/src/test/results/clientpositive/multi_insert_lateral_view.q.out
    +++ b/ql/src/test/results/clientpositive/multi_insert_lateral_view.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_10
    +POSTHOOK: Lineage: src_10.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_10.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table src_lv1 (key string, value string)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/multi_insert_union_src.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/multi_insert_union_src.q.out b/ql/src/test/results/clientpositive/multi_insert_union_src.q.out
    index 3a35323..2036e63 100644
    --- a/ql/src/test/results/clientpositive/multi_insert_union_src.q.out
    +++ b/ql/src/test/results/clientpositive/multi_insert_union_src.q.out
    @@ -20,6 +20,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src2
    +POSTHOOK: Lineage: src2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table src_multi1 like src
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/multi_join_union.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/multi_join_union.q.out b/ql/src/test/results/clientpositive/multi_join_union.q.out
    index aad66db..b361a1a 100644
    --- a/ql/src/test/results/clientpositive/multi_join_union.q.out
    +++ b/ql/src/test/results/clientpositive/multi_join_union.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src11
    +POSTHOOK: Lineage: src11.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src11.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src12 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -22,6 +24,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src12
    +POSTHOOK: Lineage: src12.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src12.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src13 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -32,6 +36,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src13
    +POSTHOOK: Lineage: src13.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src13.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src14 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -42,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src14
    +POSTHOOK: Lineage: src14.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src14.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN SELECT * FROM
      src11 a JOIN
      src12 b ON (a.key = b.key) JOIN

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/nestedvirtual.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/nestedvirtual.q.out b/ql/src/test/results/clientpositive/nestedvirtual.q.out
    index 05af502..4e3488b 100644
    --- a/ql/src/test/results/clientpositive/nestedvirtual.q.out
    +++ b/ql/src/test/results/clientpositive/nestedvirtual.q.out
    @@ -26,6 +26,9 @@ POSTHOOK: Input: default@pokes
      POSTHOOK: Input: default@pokes2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jssarma_nilzma_bad
    +POSTHOOK: Lineage: jssarma_nilzma_bad.filename SIMPLE [(pokes)pokes.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.offset SIMPLE [(pokes)pokes.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.val EXPRESSION [(pokes)pokes.FieldSchema(name:foo, type:int, comment:null), ]
      PREHOOK: query: drop table jssarma_nilzma_bad
      PREHOOK: type: DROPTABLE
      PREHOOK: Input: default@jssarma_nilzma_bad
    @@ -78,6 +81,9 @@ POSTHOOK: Input: default@pokes
      POSTHOOK: Input: default@pokes2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jssarma_nilzma_bad
    +POSTHOOK: Lineage: jssarma_nilzma_bad.filename SIMPLE [(pokes)pokes.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.offset SIMPLE [(pokes)pokes.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.val EXPRESSION [(pokes)pokes.FieldSchema(name:foo, type:int, comment:null), ]
      PREHOOK: query: drop table jssarma_nilzma_bad
      PREHOOK: type: DROPTABLE
      PREHOOK: Input: default@jssarma_nilzma_bad
    @@ -130,6 +136,9 @@ POSTHOOK: Input: default@pokes
      POSTHOOK: Input: default@pokes2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jssarma_nilzma_bad
    +POSTHOOK: Lineage: jssarma_nilzma_bad.filename SIMPLE [(pokes)pokes.FieldSchema(name:INPUT__FILE__NAME, type:string, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.offset SIMPLE [(pokes)pokes.FieldSchema(name:BLOCK__OFFSET__INSIDE__FILE, type:bigint, comment:), ]
    +POSTHOOK: Lineage: jssarma_nilzma_bad.val EXPRESSION [(pokes)pokes.FieldSchema(name:foo, type:int, comment:null), ]
      PREHOOK: query: drop table jssarma_nilzma_bad
      PREHOOK: type: DROPTABLE
      PREHOOK: Input: default@jssarma_nilzma_bad

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/non_ascii_literal2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/non_ascii_literal2.q.out b/ql/src/test/results/clientpositive/non_ascii_literal2.q.out
    index 7e19143..97a523e 100644
    --- a/ql/src/test/results/clientpositive/non_ascii_literal2.q.out
    +++ b/ql/src/test/results/clientpositive/non_ascii_literal2.q.out
    @@ -10,6 +10,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: _dummy_database@_dummy_table
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@non_ascii_literal2
    +POSTHOOK: Lineage: non_ascii_literal2.col1 SIMPLE []
    +POSTHOOK: Lineage: non_ascii_literal2.col2 SIMPLE []
      PREHOOK: query: select * from non_ascii_literal2
      where col2 = "Ð�бвгде"
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/nullformatCTAS.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/nullformatCTAS.q.out b/ql/src/test/results/clientpositive/nullformatCTAS.q.out
    index c8628fd..7686419 100644
    --- a/ql/src/test/results/clientpositive/nullformatCTAS.q.out
    +++ b/ql/src/test/results/clientpositive/nullformatCTAS.q.out
    @@ -144,6 +144,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@base_tab
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@null_tab3
    +POSTHOOK: Lineage: null_tab3.a SIMPLE [(base_tab)base_tab.FieldSchema(name:a, type:string, comment:null), ]
    +POSTHOOK: Lineage: null_tab3.b SIMPLE [(base_tab)base_tab.FieldSchema(name:b, type:string, comment:null), ]
      PREHOOK: query: DESCRIBE EXTENDED null_tab3
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@null_tab3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/orc_createas1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/orc_createas1.q.out b/ql/src/test/results/clientpositive/orc_createas1.q.out
    index 0e1bb54..506f39d 100644
    --- a/ql/src/test/results/clientpositive/orc_createas1.q.out
    +++ b/ql/src/test/results/clientpositive/orc_createas1.q.out
    @@ -144,6 +144,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@orc_createas1b
    +POSTHOOK: Lineage: orc_createas1b.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: orc_createas1b.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN SELECT * FROM orc_createas1b ORDER BY key LIMIT 5
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT * FROM orc_createas1b ORDER BY key LIMIT 5
    @@ -314,6 +316,9 @@ POSTHOOK: Input: default@orc_createas1a@ds=1
      POSTHOOK: Input: default@orc_createas1a@ds=2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@orc_createas1c
    +POSTHOOK: Lineage: orc_createas1c.key SIMPLE [(orc_createas1a)orc_createas1a.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: orc_createas1c.part EXPRESSION [(orc_createas1a)orc_createas1a.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: orc_createas1c.value SIMPLE [(orc_createas1a)orc_createas1a.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: SELECT SUM(HASH(c)) FROM (
          SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c)
          FROM orc_createas1a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/orc_llap.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/orc_llap.q.out b/ql/src/test/results/clientpositive/orc_llap.q.out
    index 894add3..6fc73b7 100644
    --- a/ql/src/test/results/clientpositive/orc_llap.q.out
    +++ b/ql/src/test/results/clientpositive/orc_llap.q.out
    @@ -293,6 +293,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cbigint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.csmallint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:csmallint, type:smallint, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -363,6 +366,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cbigint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cdouble SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cfloat SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.csmallint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctinyint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -433,6 +448,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -518,6 +534,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.c2 EXPRESSION [(orc_llap)orc_llap.null, ]
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -627,6 +646,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)o1.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)o1.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -734,6 +755,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cbigint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.csmallint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:csmallint, type:smallint, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -804,6 +828,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cbigint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cboolean2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cdouble SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cfloat SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.csmallint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctimestamp2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.ctinyint SIMPLE [(orc_llap)orc_llap.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -874,6 +910,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -959,6 +996,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.c2 EXPRESSION [(orc_llap)orc_llap.null, ]
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)orc_llap.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table
    @@ -1068,6 +1108,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@orc_llap
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@llap_temp_table
    +POSTHOOK: Lineage: llap_temp_table.cstring1 SIMPLE [(orc_llap)o1.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: llap_temp_table.cstring2 SIMPLE [(orc_llap)o1.FieldSchema(name:cstring2, type:string, comment:null), ]
      PREHOOK: query: select sum(hash(*)) from llap_temp_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@llap_temp_table

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parallel_orderby.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parallel_orderby.q.out b/ql/src/test/results/clientpositive/parallel_orderby.q.out
    index 23b0c10..2991122 100644
    --- a/ql/src/test/results/clientpositive/parallel_orderby.q.out
    +++ b/ql/src/test/results/clientpositive/parallel_orderby.q.out
    @@ -91,6 +91,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src5
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@total_ordered
    +POSTHOOK: Lineage: total_ordered.key SIMPLE [(src5)src5.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: total_ordered.value SIMPLE [(src5)src5.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: desc formatted total_ordered
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@total_ordered
    @@ -204,6 +206,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src5
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@total_ordered
    +POSTHOOK: Lineage: total_ordered.key SIMPLE [(src5)src5.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: total_ordered.value SIMPLE [(src5)src5.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: desc formatted total_ordered
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@total_ordered

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_ctas.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_ctas.q.out b/ql/src/test/results/clientpositive/parquet_ctas.q.out
    index 68f0ead..c9a9c13 100644
    --- a/ql/src/test/results/clientpositive/parquet_ctas.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_ctas.q.out
    @@ -46,6 +46,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_ctas
    +POSTHOOK: Lineage: parquet_ctas.key SIMPLE [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_ctas.value SIMPLE [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: describe parquet_ctas
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@parquet_ctas
    @@ -82,6 +84,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_ctas_advanced
    +POSTHOOK: Lineage: parquet_ctas_advanced.c0 EXPRESSION [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_ctas_advanced.c1 EXPRESSION [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: describe parquet_ctas_advanced
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@parquet_ctas_advanced
    @@ -118,6 +122,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_ctas_alias
    +POSTHOOK: Lineage: parquet_ctas_alias.mykey EXPRESSION [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_ctas_alias.myvalue EXPRESSION [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: describe parquet_ctas_alias
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@parquet_ctas_alias
    @@ -154,6 +160,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_ctas_mixed
    +POSTHOOK: Lineage: parquet_ctas_mixed.c1 EXPRESSION [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_ctas_mixed.key SIMPLE [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_ctas_mixed.myvalue EXPRESSION [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: describe parquet_ctas_mixed
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@parquet_ctas_mixed

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_join.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_join.q.out b/ql/src/test/results/clientpositive/parquet_join.q.out
    index 91bda4e..86fb64a 100644
    --- a/ql/src/test/results/clientpositive/parquet_join.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_join.q.out
    @@ -46,6 +46,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_jointable1
    +POSTHOOK: Lineage: parquet_jointable1.key SIMPLE [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_jointable1.value SIMPLE [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: create table parquet_jointable2 stored as parquet as select key,key+1,concat(value,"value") as myvalue from staging
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@staging
    @@ -56,6 +58,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@staging
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_jointable2
    +POSTHOOK: Lineage: parquet_jointable2.c1 EXPRESSION [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_jointable2.key SIMPLE [(staging)staging.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_jointable2.myvalue EXPRESSION [(staging)staging.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: -- SORT_QUERY_RESULTS

      -- MR join

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_map_null.q.java1.7.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_map_null.q.java1.7.out b/ql/src/test/results/clientpositive/parquet_map_null.q.java1.7.out
    index 5b4e7b6..825e668 100644
    --- a/ql/src/test/results/clientpositive/parquet_map_null.q.java1.7.out
    +++ b/ql/src/test/results/clientpositive/parquet_map_null.q.java1.7.out
    @@ -38,6 +38,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@avro_table
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_table
    +POSTHOOK: Lineage: parquet_table.avreau_col_1 SIMPLE [(avro_table)avro_table.FieldSchema(name:avreau_col_1, type:map<string,string>, comment:), ]
      PREHOOK: query: SELECT * FROM parquet_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@parquet_table

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_map_of_arrays_of_ints.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_map_of_arrays_of_ints.q.out b/ql/src/test/results/clientpositive/parquet_map_of_arrays_of_ints.q.out
    index 6ce63f7..8d5b8f2 100644
    --- a/ql/src/test/results/clientpositive/parquet_map_of_arrays_of_ints.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_map_of_arrays_of_ints.q.out
    @@ -36,6 +36,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@parquet_map_of_arrays_of_ints
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_map_of_arrays_of_ints_copy
    +POSTHOOK: Lineage: parquet_map_of_arrays_of_ints_copy.examples SIMPLE [(parquet_map_of_arrays_of_ints)parquet_map_of_arrays_of_ints.FieldSchema(name:examples, type:map<string,array<int>>, comment:null), ]
      PREHOOK: query: SELECT * FROM parquet_map_of_arrays_of_ints_copy
      PREHOOK: type: QUERY
      PREHOOK: Input: default@parquet_map_of_arrays_of_ints_copy

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_map_of_maps.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_map_of_maps.q.out b/ql/src/test/results/clientpositive/parquet_map_of_maps.q.out
    index 4775d2e..4c26b45 100644
    --- a/ql/src/test/results/clientpositive/parquet_map_of_maps.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_map_of_maps.q.out
    @@ -34,6 +34,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@parquet_map_of_maps
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_map_of_maps_copy
    +POSTHOOK: Lineage: parquet_map_of_maps_copy.map_of_maps SIMPLE [(parquet_map_of_maps)parquet_map_of_maps.FieldSchema(name:map_of_maps, type:map<string,map<string,int>>, comment:null), ]
      PREHOOK: query: SELECT * FROM parquet_map_of_maps_copy
      PREHOOK: type: QUERY
      PREHOOK: Input: default@parquet_map_of_maps_copy

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_mixed_partition_formats2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_mixed_partition_formats2.q.out b/ql/src/test/results/clientpositive/parquet_mixed_partition_formats2.q.out
    index c4d7197..575e83f 100644
    --- a/ql/src/test/results/clientpositive/parquet_mixed_partition_formats2.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_mixed_partition_formats2.q.out
    @@ -87,6 +87,10 @@ POSTHOOK: Input: default@parquet_table_json_partition
      POSTHOOK: Input: default@parquet_table_json_partition@ts=20150101
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@new_table
    +POSTHOOK: Lineage: new_table.address SIMPLE [(parquet_table_json_partition)parquet_table_json_partition.FieldSchema(name:address, type:struct<country:bigint,state:bigint>, comment:from deserializer), ]
    +POSTHOOK: Lineage: new_table.id SIMPLE [(parquet_table_json_partition)parquet_table_json_partition.FieldSchema(name:id, type:bigint, comment:from deserializer), ]
    +POSTHOOK: Lineage: new_table.reports SIMPLE [(parquet_table_json_partition)parquet_table_json_partition.FieldSchema(name:reports, type:array<bigint>, comment:from deserializer), ]
    +POSTHOOK: Lineage: new_table.ts SIMPLE [(parquet_table_json_partition)parquet_table_json_partition.FieldSchema(name:ts, type:string, comment:null), ]
      PREHOOK: query: SELECT * FROM new_table
      PREHOOK: type: QUERY
      PREHOOK: Input: default@new_table

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_nested_complex.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_nested_complex.q.out b/ql/src/test/results/clientpositive/parquet_nested_complex.q.out
    index e1f316f..d7ef637 100644
    --- a/ql/src/test/results/clientpositive/parquet_nested_complex.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_nested_complex.q.out
    @@ -78,6 +78,11 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@nestedcomplex
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parquet_nested_complex
    +POSTHOOK: Lineage: parquet_nested_complex.max_nested_array SIMPLE [(nestedcomplex)nestedcomplex.FieldSchema(name:max_nested_array, type:array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<int>>>>>>>>>>>>>>>>>>>>>>>, comment:null), ]
    +POSTHOOK: Lineage: parquet_nested_complex.max_nested_map SIMPLE [(nestedcomplex)nestedcomplex.FieldSchema(name:max_nested_map, type:array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<map<string,string>>>>>>>>>>>>>>>>>>>>>>, comment:null), ]
    +POSTHOOK: Lineage: parquet_nested_complex.max_nested_struct SIMPLE [(nestedcomplex)nestedcomplex.FieldSchema(name:max_nested_struct, type:array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<array<struct<s:string,i:bigint>>>>>>>>>>>>>>>>>>>>>>>, comment:null), ]
    +POSTHOOK: Lineage: parquet_nested_complex.simple_int SIMPLE [(nestedcomplex)nestedcomplex.FieldSchema(name:simple_int, type:int, comment:null), ]
    +POSTHOOK: Lineage: parquet_nested_complex.simple_string SIMPLE [(nestedcomplex)nestedcomplex.FieldSchema(name:simple_string, type:string, comment:null), ]
      PREHOOK: query: SELECT * FROM parquet_nested_complex SORT BY simple_int
      PREHOOK: type: QUERY
      PREHOOK: Input: default@parquet_nested_complex

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_schema_evolution.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_schema_evolution.q.out b/ql/src/test/results/clientpositive/parquet_schema_evolution.q.out
    index 4b0711e..0b88d84 100644
    --- a/ql/src/test/results/clientpositive/parquet_schema_evolution.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_schema_evolution.q.out
    @@ -102,6 +102,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@newstructfield
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@NewStructFieldTable
    +POSTHOOK: Lineage: newstructfieldtable.a SIMPLE [(newstructfield)newstructfield.FieldSchema(name:a, type:struct<a1:map<string,string>,a2:struct<e1:int,e2:string>,a3:int>, comment:null), ]
    +POSTHOOK: Lineage: newstructfieldtable.b SIMPLE [(newstructfield)newstructfield.FieldSchema(name:b, type:int, comment:null), ]
      PREHOOK: query: DESCRIBE NewStructFieldTable
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@newstructfieldtable

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/parquet_write_correct_definition_levels.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/parquet_write_correct_definition_levels.q.out b/ql/src/test/results/clientpositive/parquet_write_correct_definition_levels.q.out
    index 3aa1040..de58369 100644
    --- a/ql/src/test/results/clientpositive/parquet_write_correct_definition_levels.q.out
    +++ b/ql/src/test/results/clientpositive/parquet_write_correct_definition_levels.q.out
    @@ -39,6 +39,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@text_tbl
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@parq_tbl
    +POSTHOOK: Lineage: parq_tbl.a SIMPLE [(text_tbl)text_tbl.FieldSchema(name:a, type:struct<b:struct<c:int>>, comment:null), ]
      PREHOOK: query: SELECT * FROM text_tbl
      PREHOOK: type: QUERY
      PREHOOK: Input: default@text_tbl

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/partition_decode_name.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/partition_decode_name.q.out b/ql/src/test/results/clientpositive/partition_decode_name.q.out
    index e1d06bb..2c700dc 100644
    --- a/ql/src/test/results/clientpositive/partition_decode_name.q.out
    +++ b/ql/src/test/results/clientpositive/partition_decode_name.q.out
    @@ -18,6 +18,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sc
    +POSTHOOK: Lineage: sc._c0 EXPRESSION []
    +POSTHOOK: Lineage: sc._c1 EXPRESSION []
      PREHOOK: query: create table sc_part (key string) partitioned by (ts string) stored as rcfile
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/partition_special_char.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/partition_special_char.q.out b/ql/src/test/results/clientpositive/partition_special_char.q.out
    index 846f6f8..18ca0c3 100644
    --- a/ql/src/test/results/clientpositive/partition_special_char.q.out
    +++ b/ql/src/test/results/clientpositive/partition_special_char.q.out
    @@ -18,6 +18,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sc
    +POSTHOOK: Lineage: sc._c0 EXPRESSION []
    +POSTHOOK: Lineage: sc._c1 EXPRESSION []
      PREHOOK: query: create table sc_part (key string) partitioned by (ts string) stored as rcfile
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/query_result_fileformat.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/query_result_fileformat.q.out b/ql/src/test/results/clientpositive/query_result_fileformat.q.out
    index 747a5f3..bce3e22 100644
    --- a/ql/src/test/results/clientpositive/query_result_fileformat.q.out
    +++ b/ql/src/test/results/clientpositive/query_result_fileformat.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_test1
    +POSTHOOK: Lineage: nzhang_test1.key SIMPLE []
    +POSTHOOK: Lineage: nzhang_test1.value SIMPLE []
      PREHOOK: query: select * from nzhang_test1
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_test1

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/rcfile_createas1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/rcfile_createas1.q.out b/ql/src/test/results/clientpositive/rcfile_createas1.q.out
    index 97eaa1a..9966fa2 100644
    --- a/ql/src/test/results/clientpositive/rcfile_createas1.q.out
    +++ b/ql/src/test/results/clientpositive/rcfile_createas1.q.out
    @@ -150,6 +150,9 @@ POSTHOOK: Input: default@rcfile_createas1a@ds=1
      POSTHOOK: Input: default@rcfile_createas1a@ds=2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@rcfile_createas1b
    +POSTHOOK: Lineage: rcfile_createas1b.key SIMPLE [(rcfile_createas1a)rcfile_createas1a.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: rcfile_createas1b.part EXPRESSION [(rcfile_createas1a)rcfile_createas1a.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: rcfile_createas1b.value SIMPLE [(rcfile_createas1a)rcfile_createas1a.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: SELECT SUM(HASH(c)) FROM (
          SELECT TRANSFORM(key, value) USING 'tr \t _' AS (c)
          FROM rcfile_createas1a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/rcfile_default_format.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/rcfile_default_format.q.out b/ql/src/test/results/clientpositive/rcfile_default_format.q.out
    index e85a16d..c961231 100644
    --- a/ql/src/test/results/clientpositive/rcfile_default_format.q.out
    +++ b/ql/src/test/results/clientpositive/rcfile_default_format.q.out
    @@ -45,6 +45,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@rcfile_default_format_ctas
    +POSTHOOK: Lineage: rcfile_default_format_ctas.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: rcfile_default_format_ctas.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: DESCRIBE FORMATTED rcfile_default_format_ctas
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@rcfile_default_format_ctas
    @@ -141,6 +143,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@rcfile_default_format_ctas
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@textfile_default_format_ctas
    +POSTHOOK: Lineage: textfile_default_format_ctas.key SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: textfile_default_format_ctas.value SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: DESCRIBE FORMATTED textfile_default_format_ctas
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@textfile_default_format_ctas
    @@ -186,6 +190,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@rcfile_default_format_ctas
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@rcfile_default_format_ctas_default_serde
    +POSTHOOK: Lineage: rcfile_default_format_ctas_default_serde.key SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: rcfile_default_format_ctas_default_serde.value SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: DESCRIBE FORMATTED rcfile_default_format_ctas_default_serde
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@rcfile_default_format_ctas_default_serde
    @@ -268,6 +274,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@rcfile_default_format_ctas
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@rcfile_ctas_default_serde
    +POSTHOOK: Lineage: rcfile_ctas_default_serde.key SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: rcfile_ctas_default_serde.value SIMPLE [(rcfile_default_format_ctas)rcfile_default_format_ctas.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: DESCRIBE FORMATTED rcfile_ctas_default_serde
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@rcfile_ctas_default_serde

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/sample_islocalmode_hook.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/sample_islocalmode_hook.q.out b/ql/src/test/results/clientpositive/sample_islocalmode_hook.q.out
    index 71b46e0..094cc8d 100644
    --- a/ql/src/test/results/clientpositive/sample_islocalmode_hook.q.out
    +++ b/ql/src/test/results/clientpositive/sample_islocalmode_hook.q.out
    @@ -58,6 +58,8 @@ POSTHOOK: Input: default@sih_i_part@p=2
      POSTHOOK: Input: default@sih_i_part@p=3
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sih_src
    +POSTHOOK: Lineage: sih_src.key SIMPLE [(sih_i_part)sih_i_part.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: sih_src.value SIMPLE [(sih_i_part)sih_i_part.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: create table sih_src2 as select key, value from sih_src order by key, value
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@sih_src
    @@ -68,6 +70,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@sih_src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@sih_src2
    +POSTHOOK: Lineage: sih_src2.key SIMPLE [(sih_src)sih_src.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: sih_src2.value SIMPLE [(sih_src)sih_src.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: -- Relaxing hive.exec.mode.local.auto.input.files.max=1.
      -- Hadoop20 will not generate more splits than there are files (one).
      -- Hadoop23 generate splits correctly (four), hence the max needs to be adjusted to ensure running in local mode.

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/select_same_col.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/select_same_col.q.out b/ql/src/test/results/clientpositive/select_same_col.q.out
    index f7362f0..66bf5c2 100644
    --- a/ql/src/test/results/clientpositive/select_same_col.q.out
    +++ b/ql/src/test/results/clientpositive/select_same_col.q.out
    @@ -16,6 +16,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@srclimit
    +POSTHOOK: Lineage: srclimit.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: srclimit.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select cast(value as binary), value from srclimit
      PREHOOK: type: QUERY
      PREHOOK: Input: default@srclimit

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/semijoin.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/semijoin.q.out b/ql/src/test/results/clientpositive/semijoin.q.out
    index 7624fa7..6005f72 100644
    --- a/ql/src/test/results/clientpositive/semijoin.q.out
    +++ b/ql/src/test/results/clientpositive/semijoin.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from t1 sort by key
      PREHOOK: type: QUERY
      PREHOOK: Input: default@t1
    @@ -41,6 +43,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@t1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key EXPRESSION [(t1)t1.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(t1)t1.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: select * from t2 sort by key
      PREHOOK: type: QUERY
      PREHOOK: Input: default@t2
    @@ -72,6 +76,8 @@ POSTHOOK: Input: default@t1
      POSTHOOK: Input: default@t2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t3
    +POSTHOOK: Lineage: t3.key EXPRESSION [(t1)t1.FieldSchema(name:key, type:int, comment:null), (t2)t2.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: t3.value EXPRESSION [(t1)t1.FieldSchema(name:value, type:string, comment:null), (t2)t2.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: select * from t3 sort by key, value
      PREHOOK: type: QUERY
      PREHOOK: Input: default@t3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/semijoin3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/semijoin3.q.out b/ql/src/test/results/clientpositive/semijoin3.q.out
    index d62c32f..aea7e45 100644
    --- a/ql/src/test/results/clientpositive/semijoin3.q.out
    +++ b/ql/src/test/results/clientpositive/semijoin3.q.out
    @@ -8,6 +8,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select cast(key as int) key, value from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -18,6 +20,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain
      select count(1)
      from

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/skewjoin_noskew.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/skewjoin_noskew.q.out b/ql/src/test/results/clientpositive/skewjoin_noskew.q.out
    index 9b28649..c874b45 100644
    --- a/ql/src/test/results/clientpositive/skewjoin_noskew.q.out
    +++ b/ql/src/test/results/clientpositive/skewjoin_noskew.q.out
    @@ -158,6 +158,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@noskew
    +POSTHOOK: Lineage: noskew.key SIMPLE [(src)a.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: noskew.value SIMPLE [(src)a.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from noskew
      PREHOOK: type: QUERY
      PREHOOK: Input: default@noskew

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/skewjoin_onesideskew.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/skewjoin_onesideskew.q.out b/ql/src/test/results/clientpositive/skewjoin_onesideskew.q.out
    index 5fec08b..4556ab7 100644
    --- a/ql/src/test/results/clientpositive/skewjoin_onesideskew.q.out
    +++ b/ql/src/test/results/clientpositive/skewjoin_onesideskew.q.out
    @@ -210,6 +210,8 @@ POSTHOOK: Input: default@nonskewtable
      POSTHOOK: Input: default@skewtable
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@result
    +POSTHOOK: Lineage: result.key SIMPLE [(skewtable)a.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: result.value SIMPLE [(skewtable)a.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: SELECT * FROM result
      PREHOOK: type: QUERY
      PREHOOK: Input: default@result

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/smb_mapjoin9.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/smb_mapjoin9.q.out b/ql/src/test/results/clientpositive/smb_mapjoin9.q.out
    index 1606110..ff7c0aa 100644
    --- a/ql/src/test/results/clientpositive/smb_mapjoin9.q.out
    +++ b/ql/src/test/results/clientpositive/smb_mapjoin9.q.out
    @@ -492,6 +492,10 @@ POSTHOOK: Input: default@hive_test_smb_bucket2
      POSTHOOK: Input: default@hive_test_smb_bucket2@ds=2010-10-15
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@smb_mapjoin9_results
    +POSTHOOK: Lineage: smb_mapjoin9_results.ds SIMPLE [(hive_test_smb_bucket2)b.FieldSchema(name:ds, type:string, comment:null), ]
    +POSTHOOK: Lineage: smb_mapjoin9_results.k1 SIMPLE [(hive_test_smb_bucket2)b.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: smb_mapjoin9_results.k2 SIMPLE [(hive_test_smb_bucket1)a.FieldSchema(name:key, type:int, comment:null), ]
    +POSTHOOK: Lineage: smb_mapjoin9_results.value SIMPLE [(hive_test_smb_bucket2)b.FieldSchema(name:value, type:string, comment:null), ]
      PREHOOK: query: drop table smb_mapjoin9_results
      PREHOOK: type: DROPTABLE
      PREHOOK: Input: default@smb_mapjoin9_results

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/cross_product_check_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/cross_product_check_1.q.out b/ql/src/test/results/clientpositive/spark/cross_product_check_1.q.out
    index f115f68..65f0c22 100644
    --- a/ql/src/test/results/clientpositive/spark/cross_product_check_1.q.out
    +++ b/ql/src/test/results/clientpositive/spark/cross_product_check_1.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@A
    +POSTHOOK: Lineage: a.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: a.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table B as
      select * from src
      limit 10
    @@ -28,6 +30,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@B
    +POSTHOOK: Lineage: b.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: b.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      Warning: Shuffle Join JOIN[7][tables = [$hdt$_0, $hdt$_1]] in Work 'Reducer 2' is a cross product
      PREHOOK: query: explain select * from A join B
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/cross_product_check_2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/spark/cross_product_check_2.q.out
    index b533711..26bee4e 100644
    --- a/ql/src/test/results/clientpositive/spark/cross_product_check_2.q.out
    +++ b/ql/src/test/results/clientpositive/spark/cross_product_check_2.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@A
    +POSTHOOK: Lineage: a.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: a.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table B as
      select * from src order by key
      limit 10
    @@ -28,6 +30,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@B
    +POSTHOOK: Lineage: b.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: b.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      Warning: Map Join MAPJOIN[10][bigTable=?] in task 'Stage-1:MAPRED' is a cross product
      PREHOOK: query: explain select * from A join B
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/ctas.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/ctas.q.out b/ql/src/test/results/clientpositive/spark/ctas.q.out
    index 490e957..086ad73 100644
    --- a/ql/src/test/results/clientpositive/spark/ctas.q.out
    +++ b/ql/src/test/results/clientpositive/spark/ctas.q.out
    @@ -112,6 +112,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_CTAS1
    +POSTHOOK: Lineage: nzhang_ctas1.k SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_CTAS1
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas1
    @@ -257,6 +259,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas2
    +POSTHOOK: Lineage: nzhang_ctas2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas2
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas2
    @@ -402,6 +406,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas3
    +POSTHOOK: Lineage: nzhang_ctas3.conb EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas3.half_key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas3
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas3
    @@ -612,6 +618,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas4
    +POSTHOOK: Lineage: nzhang_ctas4.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas4.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from nzhang_ctas4
      PREHOOK: type: QUERY
      PREHOOK: Input: default@nzhang_ctas4
    @@ -881,6 +889,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas5
    +POSTHOOK: Lineage: nzhang_ctas5.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: nzhang_ctas5.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table nzhang_ctas6 (key string, `to` string)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -909,3 +919,5 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@nzhang_ctas6
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@nzhang_ctas7
    +POSTHOOK: Lineage: nzhang_ctas7.key SIMPLE [(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:key, type:string, comment:null), ]
    +POSTHOOK: Lineage: nzhang_ctas7.to SIMPLE [(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:to, type:string, comment:null), ]

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/join41.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/join41.q.out b/ql/src/test/results/clientpositive/spark/join41.q.out
    index 07fdf1d..2c2f128 100644
    --- a/ql/src/test/results/clientpositive/spark/join41.q.out
    +++ b/ql/src/test/results/clientpositive/spark/join41.q.out
    @@ -8,6 +8,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@s1
    +POSTHOOK: Lineage: s1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: s1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN
      SELECT * FROM s1 src1 LEFT OUTER JOIN s1 src2 ON (src1.key = src2.key AND src2.key > 10)
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/join_filters_overlap.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/join_filters_overlap.q.out b/ql/src/test/results/clientpositive/spark/join_filters_overlap.q.out
    index 49d1baa..cde7213 100644
    --- a/ql/src/test/results/clientpositive/spark/join_filters_overlap.q.out
    +++ b/ql/src/test/results/clientpositive/spark/join_filters_overlap.q.out
    @@ -14,6 +14,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@a
    +POSTHOOK: Lineage: a.key SIMPLE []
    +POSTHOOK: Lineage: a.value SCRIPT []
      PREHOOK: query: -- overlap on a
      explain extended select * from a left outer join a b on (a.key=b.key AND a.value=50 AND b.value=50) left outer join a c on (a.key=c.key AND a.value=60 AND c.value=60)
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/multi_insert_lateral_view.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/multi_insert_lateral_view.q.out b/ql/src/test/results/clientpositive/spark/multi_insert_lateral_view.q.out
    index d000ad7..c3a3511 100644
    --- a/ql/src/test/results/clientpositive/spark/multi_insert_lateral_view.q.out
    +++ b/ql/src/test/results/clientpositive/spark/multi_insert_lateral_view.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src_10
    +POSTHOOK: Lineage: src_10.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src_10.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table src_lv1 (key string, value string)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/spark/multi_join_union.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/spark/multi_join_union.q.out b/ql/src/test/results/clientpositive/spark/multi_join_union.q.out
    index 0f80836..52b3c74 100644
    --- a/ql/src/test/results/clientpositive/spark/multi_join_union.q.out
    +++ b/ql/src/test/results/clientpositive/spark/multi_join_union.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src11
    +POSTHOOK: Lineage: src11.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src11.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src12 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -22,6 +24,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src12
    +POSTHOOK: Lineage: src12.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src12.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src13 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -32,6 +36,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src13
    +POSTHOOK: Lineage: src13.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src13.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE src14 as SELECT * FROM src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -42,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src14
    +POSTHOOK: Lineage: src14.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: src14.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: EXPLAIN SELECT * FROM
      src11 a JOIN
      src12 b ON (a.key = b.key) JOIN
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-12270: Add DBTokenStore support to HS2 delegation token (Chaoyu Tang, reviewed by Szehon Ho)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/87131d0c
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/87131d0c
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/87131d0c

    Branch: refs/heads/llap
    Commit: 87131d0c7cce973d8792ed354f70ec73b0f52dcd
    Parents: 41e8201
    Author: ctang <ctang@cloudera.com>
    Authored: Tue Mar 8 15:05:54 2016 -0500
    Committer: ctang <ctang@cloudera.com>
    Committed: Tue Mar 8 15:05:54 2016 -0500

    ----------------------------------------------------------------------
      .../org/apache/hive/minikdc/MiniHiveKdc.java | 15 +
      .../hive/minikdc/TestJdbcWithDBTokenStore.java | 40 +
      .../hive/minikdc/TestJdbcWithMiniKdc.java | 12 +-
      .../hadoop/hive/thrift/TestDBTokenStore.java | 3 +-
      metastore/if/hive_metastore.thrift | 24 +
      .../gen/thrift/gen-cpp/ThriftHiveMetastore.cpp | 22340 ++++++++++-------
      .../gen/thrift/gen-cpp/ThriftHiveMetastore.h | 1409 +-
      .../ThriftHiveMetastore_server.skeleton.cpp | 40 +
      .../hive/metastore/api/ThriftHiveMetastore.java | 9220 ++++++-
      .../gen-php/metastore/ThriftHiveMetastore.php | 1756 ++
      .../hive_metastore/ThriftHiveMetastore-remote | 56 +
      .../hive_metastore/ThriftHiveMetastore.py | 1639 +-
      .../gen/thrift/gen-rb/thrift_hive_metastore.rb | 450 +
      .../hadoop/hive/metastore/HiveMetaStore.java | 159 +
      .../hive/metastore/HiveMetaStoreClient.java | 42 +
      .../hadoop/hive/metastore/IMetaStoreClient.java | 19 +-
      .../gen-py/TCLIService/TCLIService-remote | 0
      .../hive/service/auth/HiveAuthFactory.java | 33 +-
      .../apache/hadoop/hive/thrift/DBTokenStore.java | 49 +-
      .../hive/thrift/HiveDelegationTokenManager.java | 1 +
      20 files changed, 26383 insertions(+), 10924 deletions(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/MiniHiveKdc.java
    ----------------------------------------------------------------------
    diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/MiniHiveKdc.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/MiniHiveKdc.java
    index dedbf35..4e3a9c5 100644
    --- a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/MiniHiveKdc.java
    +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/MiniHiveKdc.java
    @@ -179,5 +179,20 @@ public class MiniHiveKdc {
              withMiniKdc(hivePrincipal, hiveKeytab).build();
        }

    + /**
    + * Create a MiniHS2 with the hive service principal and keytab in MiniHiveKdc
    + * @param miniHiveKdc
    + * @param hiveConf
    + * @return new MiniHS2 instance
    + * @throws Exception
    + */
    + public static MiniHS2 getMiniHS2WithKerbWithRemoteHMS(MiniHiveKdc miniHiveKdc, HiveConf hiveConf) throws Exception {
    + String hivePrincipal =
    + miniHiveKdc.getFullyQualifiedServicePrincipal(MiniHiveKdc.HIVE_SERVICE_PRINCIPAL);
    + String hiveKeytab = miniHiveKdc.getKeyTabFile(
    + miniHiveKdc.getServicePrincipalForUser(MiniHiveKdc.HIVE_SERVICE_PRINCIPAL));

    + return new MiniHS2.Builder().withConf(hiveConf).withRemoteMetastore().
    + withMiniKdc(hivePrincipal, hiveKeytab).build();
    + }
      }

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithDBTokenStore.java
    ----------------------------------------------------------------------
    diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithDBTokenStore.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithDBTokenStore.java
    new file mode 100644
    index 0000000..d690aaa
    --- /dev/null
    +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithDBTokenStore.java
    @@ -0,0 +1,40 @@
    +/**
    + * 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.hive.minikdc;
    +
    +import org.apache.hadoop.hive.conf.HiveConf;
    +import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
    +import org.apache.hive.jdbc.miniHS2.MiniHS2;
    +import org.junit.BeforeClass;
    +
    +public class TestJdbcWithDBTokenStore extends TestJdbcWithMiniKdc{
    +
    + @BeforeClass
    + public static void beforeTest() throws Exception {
    + Class.forName(MiniHS2.getJdbcDriverName());
    + confOverlay.put(ConfVars.HIVE_SERVER2_SESSION_HOOK.varname,
    + SessionHookTest.class.getName());
    +
    + HiveConf hiveConf = new HiveConf();
    + hiveConf.setVar(ConfVars.METASTORE_CLUSTER_DELEGATION_TOKEN_STORE_CLS, "org.apache.hadoop.hive.thrift.DBTokenStore");
    + miniHiveKdc = MiniHiveKdc.getMiniHiveKdc(hiveConf);
    + miniHS2 = MiniHiveKdc.getMiniHS2WithKerbWithRemoteHMS(miniHiveKdc, hiveConf);
    + miniHS2.start(confOverlay);
    + }
    +}
    \ No newline at end of file

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java
    ----------------------------------------------------------------------
    diff --git a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java
    index 3ef2ce3..71a08fb 100644
    --- a/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java
    +++ b/itests/hive-minikdc/src/test/java/org/apache/hive/minikdc/TestJdbcWithMiniKdc.java
    @@ -57,10 +57,10 @@ public class TestJdbcWithMiniKdc {
          }
        }

    - private static MiniHS2 miniHS2 = null;
    - private static MiniHiveKdc miniHiveKdc = null;
    - private static Map<String, String> confOverlay = new HashMap<String, String>();
    - private Connection hs2Conn;
    + protected static MiniHS2 miniHS2 = null;
    + protected static MiniHiveKdc miniHiveKdc = null;
    + protected static Map<String, String> confOverlay = new HashMap<String, String>();
    + protected Connection hs2Conn;

        @BeforeClass
        public static void beforeTest() throws Exception {
    @@ -241,7 +241,7 @@ public class TestJdbcWithMiniKdc {
         * @param expectedValue
         * @throws Exception
         */
    - private void verifyProperty(String propertyName, String expectedValue) throws Exception {
    + protected void verifyProperty(String propertyName, String expectedValue) throws Exception {
          Statement stmt = hs2Conn .createStatement();
          ResultSet res = stmt.executeQuery("set " + propertyName);
          assertTrue(res.next());
    @@ -251,7 +251,7 @@ public class TestJdbcWithMiniKdc {
        }

        // Store the given token in the UGI
    - private void storeToken(String tokenStr, UserGroupInformation ugi)
    + protected void storeToken(String tokenStr, UserGroupInformation ugi)
            throws Exception {
          Utils.setTokenStr(ugi,
              tokenStr, HiveAuthFactory.HS2_CLIENT_TOKEN);

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java
    ----------------------------------------------------------------------
    diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java
    index f5934ee..4bfa224 100644
    --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java
    +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/thrift/TestDBTokenStore.java
    @@ -27,6 +27,7 @@ import org.apache.hadoop.hive.metastore.HiveMetaStore.HMSHandler;
      import org.apache.hadoop.hive.metastore.api.MetaException;
      import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
      import org.apache.hadoop.hive.thrift.DelegationTokenStore.TokenStoreException;
    +import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge.Server.ServerMode;
      import org.apache.hadoop.io.Text;
      import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager.DelegationTokenInformation;
      import org.apache.hadoop.security.token.delegation.HiveDelegationTokenSupport;
    @@ -37,7 +38,7 @@ public class TestDBTokenStore extends TestCase{
        public void testDBTokenStore() throws TokenStoreException, MetaException, IOException {

          DelegationTokenStore ts = new DBTokenStore();
    - ts.init(new HMSHandler("Test handler"), null);
    + ts.init(new HMSHandler("Test handler"), ServerMode.METASTORE);
          assertEquals(0, ts.getMasterKeys().length);
          assertEquals(false,ts.removeMasterKey(-1));
          try{

    http://git-wip-us.apache.org/repos/asf/hive/blob/87131d0c/metastore/if/hive_metastore.thrift
    ----------------------------------------------------------------------
    diff --git a/metastore/if/hive_metastore.thrift b/metastore/if/hive_metastore.thrift
    index 3635054..6a55962 100755
    --- a/metastore/if/hive_metastore.thrift
    +++ b/metastore/if/hive_metastore.thrift
    @@ -1294,6 +1294,30 @@ service ThriftHiveMetastore extends fb303.FacebookService
        // method to cancel delegation token obtained from metastore server
        void cancel_delegation_token(1:string token_str_form) throws (1:MetaException o1)

    + // add a delegation token
    + bool add_token(1:string token_identifier, 2:string delegation_token)
    +
    + // remove a delegation token
    + bool remove_token(1:string token_identifier)
    +
    + // get a delegation token by identifier
    + string get_token(1:string token_identifier)
    +
    + // get all delegation token identifiers
    + list<string> get_all_token_identifiers()
    +
    + // add master key
    + i32 add_master_key(1:string key) throws (1:MetaException o1)
    +
    + // update master key
    + void update_master_key(1:i32 seq_number, 2:string key) throws (1:NoSuchObjectException o1, 2:MetaException o2)
    +
    + // remove master key
    + bool remove_master_key(1:i32 key_seq)
    +
    + // get master keys
    + list<string> get_master_keys()
    +
        // Transaction and lock management calls
        // Get just list of open transactions
        GetOpenTxnsResponse get_open_txns()
  • Jdere at Mar 17, 2016 at 10:47 pm
    HIVE-12781 : Temporarily disable authorization tests that always fail on Jenkins (Ashutosh Chauhan via Sushanth Sowmyan)


    Project: http://git-wip-us.apache.org/repos/asf/hive/repo
    Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9e231f2b
    Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9e231f2b
    Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9e231f2b

    Branch: refs/heads/llap
    Commit: 9e231f2b35cf58437be6c274217147010a28e207
    Parents: fdc9caf
    Author: Ashutosh Chauhan <hashutosh@apache.org>
    Authored: Wed Mar 9 16:11:56 2016 -0800
    Committer: Ashutosh Chauhan <hashutosh@apache.org>
    Committed: Wed Mar 9 16:11:56 2016 -0800

    ----------------------------------------------------------------------
      itests/qtest/pom.xml | 2 +-
      1 file changed, 1 insertion(+), 1 deletion(-)
    ----------------------------------------------------------------------


    http://git-wip-us.apache.org/repos/asf/hive/blob/9e231f2b/itests/qtest/pom.xml
    ----------------------------------------------------------------------
    diff --git a/itests/qtest/pom.xml b/itests/qtest/pom.xml
    index cb68e39..a479557 100644
    --- a/itests/qtest/pom.xml
    +++ b/itests/qtest/pom.xml
    @@ -467,7 +467,7 @@
                        templatePath="${basedir}/${hive.path.to.root}/ql/src/test/templates/" template="TestNegativeCliDriver.vm"
                        queryDirectory="${basedir}/${hive.path.to.root}/ql/src/test/queries/clientnegative/"
                        queryFile="${qfile}"
    - excludeQueryFile="${minimr.query.negative.files}"
    + excludeQueryFile="${minimr.query.negative.files},authorization_uri_import.q"
                        queryFileRegex="${qfile_regex}"
                        clusterMode="${clustermode}"
                        runDisabled="${run_disabled}"
  • Jdere at Mar 17, 2016 at 10:47 pm
    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/udf_unix_timestamp.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/udf_unix_timestamp.q.out b/ql/src/test/results/clientpositive/udf_unix_timestamp.q.out
    index c64379d..1aa9727 100644
    --- a/ql/src/test/results/clientpositive/udf_unix_timestamp.q.out
    +++ b/ql/src/test/results/clientpositive/udf_unix_timestamp.q.out
    @@ -88,6 +88,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@oneline
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@foo
    +POSTHOOK: Lineage: foo.a SIMPLE []
    +POSTHOOK: Lineage: foo.b EXPRESSION []
      PREHOOK: query: drop table foo
      PREHOOK: type: DROPTABLE
      PREHOOK: Input: default@foo

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union24.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union24.q.out b/ql/src/test/results/clientpositive/union24.q.out
    index 9147d4f..993b838 100644
    --- a/ql/src/test/results/clientpositive/union24.q.out
    +++ b/ql/src/test/results/clientpositive/union24.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src2
    +POSTHOOK: Lineage: src2.count EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: src2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table src3 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -22,6 +24,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src3
    +POSTHOOK: Lineage: src3.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src3.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src4 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -32,6 +36,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src4
    +POSTHOOK: Lineage: src4.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src4.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src5 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -42,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src5
    +POSTHOOK: Lineage: src5.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src5.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: explain extended
      select s.key, s.count from (
        select key, count from src2 where key < 10

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union27.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union27.q.out b/ql/src/test/results/clientpositive/union27.q.out
    index 508582b..f023360 100644
    --- a/ql/src/test/results/clientpositive/union27.q.out
    +++ b/ql/src/test/results/clientpositive/union27.q.out
    @@ -10,6 +10,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_same
    +POSTHOOK: Lineage: jackson_sev_same.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_same.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table dim_pho as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -20,6 +22,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@dim_pho
    +POSTHOOK: Lineage: dim_pho.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: dim_pho.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table jackson_sev_add as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -30,6 +34,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_add
    +POSTHOOK: Lineage: jackson_sev_add.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_add.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho union all select * from jackson_sev_add)b on a.key=b.key and b.key=97
      PREHOOK: type: QUERY
      POSTHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho union all select * from jackson_sev_add)b on a.key=b.key and b.key=97

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union31.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union31.q.out b/ql/src/test/results/clientpositive/union31.q.out
    index 9b970c0..bb35d5c 100644
    --- a/ql/src/test/results/clientpositive/union31.q.out
    +++ b/ql/src/test/results/clientpositive/union31.q.out
    @@ -20,6 +20,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select * from src where key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -30,6 +32,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t3(key string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -595,6 +599,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select key, count(1) as cnt from src where key < 10 group by key
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -605,6 +611,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.cnt EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table t7(c1 string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union32.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union32.q.out b/ql/src/test/results/clientpositive/union32.q.out
    index 444a84c..a3fefa8 100644
    --- a/ql/src/test/results/clientpositive/union32.q.out
    +++ b/ql/src/test/results/clientpositive/union32.q.out
    @@ -18,6 +18,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE t2 AS SELECT * FROM src WHERE key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -28,6 +30,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: -- Test simple union with double
      EXPLAIN
      SELECT * FROM

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/unionDistinct_1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/unionDistinct_1.q.out b/ql/src/test/results/clientpositive/unionDistinct_1.q.out
    index d6e82dd..61bfa74 100644
    --- a/ql/src/test/results/clientpositive/unionDistinct_1.q.out
    +++ b/ql/src/test/results/clientpositive/unionDistinct_1.q.out
    @@ -8400,6 +8400,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src2
    +POSTHOOK: Lineage: src2.count EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: src2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table src3 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -8410,6 +8412,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src3
    +POSTHOOK: Lineage: src3.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src3.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src4 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -8420,6 +8424,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src4
    +POSTHOOK: Lineage: src4.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src4.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: create table src5 as select * from src2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src2
    @@ -8430,6 +8436,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@src5
    +POSTHOOK: Lineage: src5.count SIMPLE [(src2)src2.FieldSchema(name:count, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: src5.key SIMPLE [(src2)src2.FieldSchema(name:key, type:string, comment:null), ]
      PREHOOK: query: explain extended
      select s.key, s.count from (
        select key, count from src2 where key < 10
    @@ -11968,6 +11976,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_same
    +POSTHOOK: Lineage: jackson_sev_same.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_same.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table dim_pho as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -11978,6 +11988,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@dim_pho
    +POSTHOOK: Lineage: dim_pho.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: dim_pho.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table jackson_sev_add as select * from src
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -11988,6 +12000,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@jackson_sev_add
    +POSTHOOK: Lineage: jackson_sev_add.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: jackson_sev_add.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho UNION DISTINCT select * from jackson_sev_add)b on a.key=b.key and b.key=97
      PREHOOK: type: QUERY
      POSTHOOK: query: explain select b.* from jackson_sev_same a join (select * from dim_pho UNION DISTINCT select * from jackson_sev_add)b on a.key=b.key and b.key=97
    @@ -13396,6 +13410,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select * from src where key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -13406,6 +13422,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t3(key string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -13984,6 +14002,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: create table t2 as select key, count(1) as cnt from src where key < 10 group by key
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -13994,6 +14014,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.cnt EXPRESSION [(src)src.null, ]
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
      PREHOOK: query: create table t7(c1 string, cnt int)
      PREHOOK: type: CREATETABLE
      PREHOOK: Output: database:default
    @@ -14309,6 +14331,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t1
    +POSTHOOK: Lineage: t1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE t2 AS SELECT * FROM src WHERE key < 10
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -14319,6 +14343,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@t2
    +POSTHOOK: Lineage: t2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: t2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: -- Test simple union with double
      EXPLAIN
      SELECT * FROM

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/unionDistinct_2.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/unionDistinct_2.q.out b/ql/src/test/results/clientpositive/unionDistinct_2.q.out
    index 6d59369..304d74f 100644
    --- a/ql/src/test/results/clientpositive/unionDistinct_2.q.out
    +++ b/ql/src/test/results/clientpositive/unionDistinct_2.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u1
    +POSTHOOK: Lineage: u1.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u1.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE u2 as select key, value from src order by key limit 3
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -22,6 +24,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u2
    +POSTHOOK: Lineage: u2.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u2.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: CREATE TABLE u3 as select key, value from src order by key desc limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@src
    @@ -32,6 +36,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@u3
    +POSTHOOK: Lineage: u3.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: u3.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: select * from u1
      PREHOOK: type: QUERY
      PREHOOK: Input: default@u1

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union_fast_stats.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union_fast_stats.q.out b/ql/src/test/results/clientpositive/union_fast_stats.q.out
    index e908ec0..f0879af 100644
    --- a/ql/src/test/results/clientpositive/union_fast_stats.q.out
    +++ b/ql/src/test/results/clientpositive/union_fast_stats.q.out
    @@ -28,6 +28,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -38,6 +50,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -48,6 +72,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -58,6 +94,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc_a stored as orc as select * from
      (select * from (select * from small_alltypesorc1a) sq1
       union all
    @@ -88,6 +136,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: desc formatted small_alltypesorc_a
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@small_alltypesorc_a
    @@ -301,6 +361,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc1a
    +POSTHOOK: Lineage: small_alltypesorc1a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc1a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc2a as select * from alltypesorc where cint is null and ctinyint is not null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -311,6 +383,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc2a
    +POSTHOOK: Lineage: small_alltypesorc2a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc2a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc3a as select * from alltypesorc where cint is not null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -321,6 +405,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc3a
    +POSTHOOK: Lineage: small_alltypesorc3a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc3a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc4a as select * from alltypesorc where cint is null and ctinyint is null order by ctinyint, csmallint, cint, cbigint, cfloat, cdouble, cstring1, cstring2, ctimestamp1, ctimestamp2, cboolean1, cboolean2 limit 5
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@alltypesorc
    @@ -331,6 +427,18 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc4a
    +POSTHOOK: Lineage: small_alltypesorc4a.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cboolean2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cfloat SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.csmallint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.cstring2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp1 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctimestamp2 SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc4a.ctinyint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: create table small_alltypesorc_a stored as orc as select * from
      (select * from (select * from small_alltypesorc1a) sq1
       union all
    @@ -361,6 +469,18 @@ POSTHOOK: Input: default@small_alltypesorc3a
      POSTHOOK: Input: default@small_alltypesorc4a
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@small_alltypesorc_a
    +POSTHOOK: Lineage: small_alltypesorc_a.cbigint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cbigint, type:bigint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean1, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean1, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cboolean2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cboolean2, type:boolean, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cboolean2, type:boolean, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cdouble EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cdouble, type:double, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cfloat EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cfloat, type:float, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cfloat, type:float, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cint, type:int, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.csmallint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:csmallint, type:smallint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:csmallint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring1, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring1, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.cstring2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:cstring2, type:string, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:cstring2, type:string, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp1 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp1, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctimestamp2 EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctimestamp2, type:timestamp, comment:null), ]
    +POSTHOOK: Lineage: small_alltypesorc_a.ctinyint EXPRESSION [(small_alltypesorc1a)small_alltypesorc1a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc2a)small_alltypesorc2a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc3a)small_alltypesorc3a.FieldSchema(name:ctinyint, type:tinyint, comment:null), (small_alltypesorc4a)small_alltypesorc4a.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
      PREHOOK: query: desc formatted small_alltypesorc_a
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@small_alltypesorc_a

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/union_top_level.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/union_top_level.q.out b/ql/src/test/results/clientpositive/union_top_level.q.out
    index 11a3b6a..134c532 100644
    --- a/ql/src/test/results/clientpositive/union_top_level.q.out
    +++ b/ql/src/test/results/clientpositive/union_top_level.q.out
    @@ -721,6 +721,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@union_top
    +POSTHOOK: Lineage: union_top.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: union_top.value EXPRESSION []
      PREHOOK: query: select * from union_top
      PREHOOK: type: QUERY
      PREHOOK: Input: default@union_top

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/updateAccessTime.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/updateAccessTime.q.out b/ql/src/test/results/clientpositive/updateAccessTime.q.out
    index 104e155..05f4d07 100644
    --- a/ql/src/test/results/clientpositive/updateAccessTime.q.out
    +++ b/ql/src/test/results/clientpositive/updateAccessTime.q.out
    @@ -12,6 +12,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@tstsrc
    +POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: desc extended tstsrc
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@tstsrc

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/updateBasicStats.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/updateBasicStats.q.out b/ql/src/test/results/clientpositive/updateBasicStats.q.out
    index 3f04b99..596de00 100644
    --- a/ql/src/test/results/clientpositive/updateBasicStats.q.out
    +++ b/ql/src/test/results/clientpositive/updateBasicStats.q.out
    @@ -8,6 +8,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@src
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@s
    +POSTHOOK: Lineage: s.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
    +POSTHOOK: Lineage: s.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
      PREHOOK: query: explain select * from s
      PREHOOK: type: QUERY
      POSTHOOK: query: explain select * from s

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/varchar_nested_types.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/varchar_nested_types.q.out b/ql/src/test/results/clientpositive/varchar_nested_types.q.out
    index 1cd232a..e911425 100644
    --- a/ql/src/test/results/clientpositive/varchar_nested_types.q.out
    +++ b/ql/src/test/results/clientpositive/varchar_nested_types.q.out
    @@ -173,6 +173,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@varchar_nested_struct
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@varchar_nested_cta
    +POSTHOOK: Lineage: varchar_nested_cta.c1 SIMPLE [(varchar_nested_struct)varchar_nested_struct.FieldSchema(name:c1, type:struct<a:int,b:varchar(20),c:string>, comment:null), ]
      PREHOOK: query: describe varchar_nested_cta
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@varchar_nested_cta
    @@ -203,6 +204,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@varchar_nested_struct
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@varchar_nested_view
    +POSTHOOK: Lineage: varchar_nested_view.c1 SIMPLE [(varchar_nested_struct)varchar_nested_struct.FieldSchema(name:c1, type:struct<a:int,b:varchar(20),c:string>, comment:null), ]
      PREHOOK: query: describe varchar_nested_view
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@varchar_nested_view

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_between_columns.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_between_columns.q.out b/ql/src/test/results/clientpositive/vector_between_columns.q.out
    index d8cc2cc..a4e8d64 100644
    --- a/ql/src/test/results/clientpositive/vector_between_columns.q.out
    +++ b/ql/src/test/results/clientpositive/vector_between_columns.q.out
    @@ -48,6 +48,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tsint_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TSINT
    +POSTHOOK: Lineage: tsint.csint SIMPLE [(tsint_txt)tsint_txt.FieldSchema(name:csint, type:smallint, comment:null), ]
    +POSTHOOK: Lineage: tsint.rnum SIMPLE [(tsint_txt)tsint_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      tsint_txt.rnum tsint_txt.csint
      PREHOOK: query: create table TINT stored as orc AS SELECT * FROM TINT_txt
      PREHOOK: type: CREATETABLE_AS_SELECT
    @@ -59,6 +61,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@tint_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@TINT
    +POSTHOOK: Lineage: tint.cint SIMPLE [(tint_txt)tint_txt.FieldSchema(name:cint, type:int, comment:null), ]
    +POSTHOOK: Lineage: tint.rnum SIMPLE [(tint_txt)tint_txt.FieldSchema(name:rnum, type:int, comment:null), ]
      tint_txt.rnum tint_txt.cint
      Warning: Map Join MAPJOIN[11][bigTable=?] in task 'Stage-3:MAPRED' is a cross product
      PREHOOK: query: -- We DO NOT expect the following to vectorized because the BETWEEN range expressions

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_between_in.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_between_in.q.out b/ql/src/test/results/clientpositive/vector_between_in.q.out
    index 3cd1e01..4c3ed71 100644
    --- a/ql/src/test/results/clientpositive/vector_between_in.q.out
    +++ b/ql/src/test/results/clientpositive/vector_between_in.q.out
    @@ -8,6 +8,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_date_test
    +POSTHOOK: Lineage: decimal_date_test.cdate EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), (alltypesorc)alltypesorc.FieldSchema(name:ctinyint, type:tinyint, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_date_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate
      PREHOOK: type: QUERY
      POSTHOOK: query: EXPLAIN SELECT cdate FROM decimal_date_test WHERE cdate IN (CAST("1969-10-26" AS DATE), CAST("1969-07-14" AS DATE)) ORDER BY cdate

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out b/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out
    index 19ab74b..000a501 100644
    --- a/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out
    +++ b/ql/src/test/results/clientpositive/vector_char_mapjoin1.q.out
    @@ -98,6 +98,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_vc1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_vc1_orc
    +POSTHOOK: Lineage: char_join1_vc1_orc.c1 SIMPLE [(char_join1_vc1)char_join1_vc1.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_vc1_orc.c2 SIMPLE [(char_join1_vc1)char_join1_vc1.FieldSchema(name:c2, type:char(10), comment:null), ]
      PREHOOK: query: create table char_join1_vc2_orc stored as orc as select * from char_join1_vc2
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@char_join1_vc2
    @@ -108,6 +110,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_vc2
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_vc2_orc
    +POSTHOOK: Lineage: char_join1_vc2_orc.c1 SIMPLE [(char_join1_vc2)char_join1_vc2.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_vc2_orc.c2 SIMPLE [(char_join1_vc2)char_join1_vc2.FieldSchema(name:c2, type:char(20), comment:null), ]
      PREHOOK: query: create table char_join1_str_orc stored as orc as select * from char_join1_str
      PREHOOK: type: CREATETABLE_AS_SELECT
      PREHOOK: Input: default@char_join1_str
    @@ -118,6 +122,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@char_join1_str
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@char_join1_str_orc
    +POSTHOOK: Lineage: char_join1_str_orc.c1 SIMPLE [(char_join1_str)char_join1_str.FieldSchema(name:c1, type:int, comment:null), ]
    +POSTHOOK: Lineage: char_join1_str_orc.c2 SIMPLE [(char_join1_str)char_join1_str.FieldSchema(name:c2, type:string, comment:null), ]
      PREHOOK: query: -- Join char with same length char
      explain select * from char_join1_vc1_orc a join char_join1_vc1_orc b on (a.c2 = b.c2) order by a.c1
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out b/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out
    index 52e015e..2ee396b 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_10_0.q.out
    @@ -32,6 +32,7 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL
    +POSTHOOK: Lineage: decimal.dec SIMPLE [(decimal_txt)decimal_txt.FieldSchema(name:dec, type:decimal(10,0), comment:null), ]
      PREHOOK: query: EXPLAIN
      SELECT dec FROM `DECIMAL` order by dec
      PREHOOK: type: QUERY

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_3.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_3.q.out b/ql/src/test/results/clientpositive/vector_decimal_3.q.out
    index eea91bb..537d568 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_3.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_3.q.out
    @@ -38,6 +38,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_3_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL_3
    +POSTHOOK: Lineage: decimal_3.key SIMPLE [(decimal_3_txt)decimal_3_txt.FieldSchema(name:key, type:decimal(38,18), comment:null), ]
    +POSTHOOK: Lineage: decimal_3.value SIMPLE [(decimal_3_txt)decimal_3_txt.FieldSchema(name:value, type:int, comment:null), ]
      PREHOOK: query: SELECT * FROM DECIMAL_3 ORDER BY key, value
      PREHOOK: type: QUERY
      PREHOOK: Input: default@decimal_3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_6.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_6.q.out b/ql/src/test/results/clientpositive/vector_decimal_6.q.out
    index e0ccbc6..15c9757 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_6.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_6.q.out
    @@ -258,6 +258,8 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@decimal_6_1
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@DECIMAL_6_3
    +POSTHOOK: Lineage: decimal_6_3.k EXPRESSION [(decimal_6_1)decimal_6_1.FieldSchema(name:key, type:decimal(10,5), comment:null), ]
    +POSTHOOK: Lineage: decimal_6_3.v EXPRESSION [(decimal_6_1)decimal_6_1.FieldSchema(name:value, type:int, comment:null), ]
      PREHOOK: query: desc DECIMAL_6_3
      PREHOOK: type: DESCTABLE
      PREHOOK: Input: default@decimal_6_3

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
    index 290af26..b022435 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_aggregate.q.out
    @@ -16,6 +16,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_vgby
    +POSTHOOK: Lineage: decimal_vgby.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_vgby.cint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
      PREHOOK: query: -- SORT_QUERY_RESULTS

      -- First only do simple aggregations that output primitives only

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
    index f207ba1..3ca326d 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
    @@ -12,6 +12,9 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_test
    +POSTHOOK: Lineage: decimal_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: EXPLAIN SELECT cdecimal1 + cdecimal2 as c1, cdecimal1 - (2*cdecimal2) as c2, ((cdecimal1+2.34)/cdecimal2) as c3, (cdecimal1 * (cdecimal2/3.4)) as c4, cdecimal1 % 10 as c5, CAST(cdecimal1 AS INT) as c6, CAST(cdecimal2 AS SMALLINT) as c7, CAST(cdecimal2 AS TINYINT) as c8, CAST(cdecimal1 AS BIGINT) as c9, CAST (cdecimal1 AS BOOLEAN) as c10, CAST(cdecimal2 AS DOUBLE) as c11, CAST(cdecimal1 AS FLOAT) as c12, CAST(cdecimal2 AS STRING) as c13, CAST(cdecimal1 AS TIMESTAMP) as c14 FROM decimal_test WHERE cdecimal1 > 0 AND cdecimal1 < 12345.5678 AND cdecimal2 != 0 AND cdecimal2 > 1000 AND cdouble IS NOT NULL
      ORDER BY c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14
      LIMIT 10

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out b/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out
    index e851aa4..0b70d4c 100644
    --- a/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out
    +++ b/ql/src/test/results/clientpositive/vector_decimal_math_funcs.q.out
    @@ -8,6 +8,10 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@alltypesorc
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@decimal_test
    +POSTHOOK: Lineage: decimal_test.cbigint SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cbigint, type:bigint, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal1 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdecimal2 EXPRESSION [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
    +POSTHOOK: Lineage: decimal_test.cdouble SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cdouble, type:double, comment:null), ]
      PREHOOK: query: -- Test math functions in vectorized mode to verify they run correctly end-to-end.

      explain

    http://git-wip-us.apache.org/repos/asf/hive/blob/fdc9cafe/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
    ----------------------------------------------------------------------
    diff --git a/ql/src/test/results/clientpositive/vector_grouping_sets.q.out b/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
    index ceb3a58..4207c19 100644
    --- a/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
    +++ b/ql/src/test/results/clientpositive/vector_grouping_sets.q.out
    @@ -98,6 +98,35 @@ POSTHOOK: type: CREATETABLE_AS_SELECT
      POSTHOOK: Input: default@store_txt
      POSTHOOK: Output: database:default
      POSTHOOK: Output: default@store
    +POSTHOOK: Lineage: store.s_city SIMPLE [(store_txt)store_txt.FieldSchema(name:s_city, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_closed_date_sk SIMPLE [(store_txt)store_txt.FieldSchema(name:s_closed_date_sk, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_company_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_company_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_company_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_company_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_country SIMPLE [(store_txt)store_txt.FieldSchema(name:s_country, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_county SIMPLE [(store_txt)store_txt.FieldSchema(name:s_county, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_division_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_division_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_division_name SIMPLE [(store_txt)store_txt.FieldSchema(name:s_division_name, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_floor_space SIMPLE [(store_txt)store_txt.FieldSchema(name:s_floor_space, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_geography_class SIMPLE [(store_txt)store_txt.FieldSchema(name:s_geography_class, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_gmt_offset SIMPLE [(store_txt)store_txt.FieldSchema(name:s_gmt_offset, type:decimal(5,2), comment:null), ]
    +POSTHOOK: Lineage: store.s_hours SIMPLE [(store_txt)store_txt.FieldSchema(name:s_hours, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_manager SIMPLE [(store_txt)store_txt.FieldSchema(name:s_manager, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_desc SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_desc, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_id, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_market_manager SIMPLE [(store_txt)store_txt.FieldSchema(name:s_market_manager, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_number_employees SIMPLE [(store_txt)store_txt.FieldSchema(name:s_number_employees, type:int, comment:null), ]
    +POSTHOOK: Lineage: store.s_rec_end_date SIMPLE [(store_txt)store_txt.FieldSchema(name:s_rec_end_date, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_rec_start_date SIMPLE [(store_txt)store_txt.FieldSchema(name:s_rec_start_date, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_state SIMPLE [(store_txt)store_txt.FieldSchema(name:s_state, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_store_id SIMPLE [(store_txt)store_txt.FieldSchema(name:s_store_id, type:string, comment:null), ]
    +POSTHOOK: Lineage: store.s_store_name SIMPLE [(store_txt)store_txt.FieldS