You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2018/07/13 01:41:28 UTC

[86/91] [abbrv] hive git commit: HIVE-19416 : merge master into branch (Sergey Shelukhin) 0712

http://git-wip-us.apache.org/repos/asf/hive/blob/93b9cdd6/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpec.java
----------------------------------------------------------------------
diff --cc standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpec.java
index 0000000,247fdaa..47ff56c
mode 000000,100644..100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpec.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpec.java
@@@ -1,0 -1,932 +1,1136 @@@
+ /**
+  * Autogenerated by Thrift Compiler (0.9.3)
+  *
+  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+  *  @generated
+  */
+ package org.apache.hadoop.hive.metastore.api;
+ 
+ import org.apache.thrift.scheme.IScheme;
+ import org.apache.thrift.scheme.SchemeFactory;
+ import org.apache.thrift.scheme.StandardScheme;
+ 
+ import org.apache.thrift.scheme.TupleScheme;
+ import org.apache.thrift.protocol.TTupleProtocol;
+ import org.apache.thrift.protocol.TProtocolException;
+ import org.apache.thrift.EncodingUtils;
+ import org.apache.thrift.TException;
+ import org.apache.thrift.async.AsyncMethodCallback;
+ import org.apache.thrift.server.AbstractNonblockingServer.*;
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.Map;
+ import java.util.HashMap;
+ import java.util.EnumMap;
+ import java.util.Set;
+ import java.util.HashSet;
+ import java.util.EnumSet;
+ import java.util.Collections;
+ import java.util.BitSet;
+ import java.nio.ByteBuffer;
+ import java.util.Arrays;
+ import javax.annotation.Generated;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
+ @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+ @Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+ @org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class PartitionSpec implements org.apache.thrift.TBase<PartitionSpec, PartitionSpec._Fields>, java.io.Serializable, Cloneable, Comparable<PartitionSpec> {
+   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PartitionSpec");
+ 
+   private static final org.apache.thrift.protocol.TField DB_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("dbName", org.apache.thrift.protocol.TType.STRING, (short)1);
+   private static final org.apache.thrift.protocol.TField TABLE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("tableName", org.apache.thrift.protocol.TType.STRING, (short)2);
+   private static final org.apache.thrift.protocol.TField ROOT_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("rootPath", org.apache.thrift.protocol.TType.STRING, (short)3);
+   private static final org.apache.thrift.protocol.TField SHARED_SDPARTITION_SPEC_FIELD_DESC = new org.apache.thrift.protocol.TField("sharedSDPartitionSpec", org.apache.thrift.protocol.TType.STRUCT, (short)4);
+   private static final org.apache.thrift.protocol.TField PARTITION_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("partitionList", org.apache.thrift.protocol.TType.STRUCT, (short)5);
+   private static final org.apache.thrift.protocol.TField CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (short)6);
++  private static final org.apache.thrift.protocol.TField WRITE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("writeId", org.apache.thrift.protocol.TType.I64, (short)7);
++  private static final org.apache.thrift.protocol.TField IS_STATS_COMPLIANT_FIELD_DESC = new org.apache.thrift.protocol.TField("isStatsCompliant", org.apache.thrift.protocol.TType.BOOL, (short)8);
+ 
+   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+   static {
+     schemes.put(StandardScheme.class, new PartitionSpecStandardSchemeFactory());
+     schemes.put(TupleScheme.class, new PartitionSpecTupleSchemeFactory());
+   }
+ 
+   private String dbName; // required
+   private String tableName; // required
+   private String rootPath; // required
+   private PartitionSpecWithSharedSD sharedSDPartitionSpec; // optional
+   private PartitionListComposingSpec partitionList; // optional
+   private String catName; // optional
++  private long writeId; // optional
++  private boolean isStatsCompliant; // optional
+ 
+   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+     DB_NAME((short)1, "dbName"),
+     TABLE_NAME((short)2, "tableName"),
+     ROOT_PATH((short)3, "rootPath"),
+     SHARED_SDPARTITION_SPEC((short)4, "sharedSDPartitionSpec"),
+     PARTITION_LIST((short)5, "partitionList"),
 -    CAT_NAME((short)6, "catName");
++    CAT_NAME((short)6, "catName"),
++    WRITE_ID((short)7, "writeId"),
++    IS_STATS_COMPLIANT((short)8, "isStatsCompliant");
+ 
+     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+ 
+     static {
+       for (_Fields field : EnumSet.allOf(_Fields.class)) {
+         byName.put(field.getFieldName(), field);
+       }
+     }
+ 
+     /**
+      * Find the _Fields constant that matches fieldId, or null if its not found.
+      */
+     public static _Fields findByThriftId(int fieldId) {
+       switch(fieldId) {
+         case 1: // DB_NAME
+           return DB_NAME;
+         case 2: // TABLE_NAME
+           return TABLE_NAME;
+         case 3: // ROOT_PATH
+           return ROOT_PATH;
+         case 4: // SHARED_SDPARTITION_SPEC
+           return SHARED_SDPARTITION_SPEC;
+         case 5: // PARTITION_LIST
+           return PARTITION_LIST;
+         case 6: // CAT_NAME
+           return CAT_NAME;
++        case 7: // WRITE_ID
++          return WRITE_ID;
++        case 8: // IS_STATS_COMPLIANT
++          return IS_STATS_COMPLIANT;
+         default:
+           return null;
+       }
+     }
+ 
+     /**
+      * Find the _Fields constant that matches fieldId, throwing an exception
+      * if it is not found.
+      */
+     public static _Fields findByThriftIdOrThrow(int fieldId) {
+       _Fields fields = findByThriftId(fieldId);
+       if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+       return fields;
+     }
+ 
+     /**
+      * Find the _Fields constant that matches name, or null if its not found.
+      */
+     public static _Fields findByName(String name) {
+       return byName.get(name);
+     }
+ 
+     private final short _thriftId;
+     private final String _fieldName;
+ 
+     _Fields(short thriftId, String fieldName) {
+       _thriftId = thriftId;
+       _fieldName = fieldName;
+     }
+ 
+     public short getThriftFieldId() {
+       return _thriftId;
+     }
+ 
+     public String getFieldName() {
+       return _fieldName;
+     }
+   }
+ 
+   // isset id assignments
 -  private static final _Fields optionals[] = {_Fields.SHARED_SDPARTITION_SPEC,_Fields.PARTITION_LIST,_Fields.CAT_NAME};
++  private static final int __WRITEID_ISSET_ID = 0;
++  private static final int __ISSTATSCOMPLIANT_ISSET_ID = 1;
++  private byte __isset_bitfield = 0;
++  private static final _Fields optionals[] = {_Fields.SHARED_SDPARTITION_SPEC,_Fields.PARTITION_LIST,_Fields.CAT_NAME,_Fields.WRITE_ID,_Fields.IS_STATS_COMPLIANT};
+   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+   static {
+     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+     tmpMap.put(_Fields.DB_NAME, new org.apache.thrift.meta_data.FieldMetaData("dbName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     tmpMap.put(_Fields.TABLE_NAME, new org.apache.thrift.meta_data.FieldMetaData("tableName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     tmpMap.put(_Fields.ROOT_PATH, new org.apache.thrift.meta_data.FieldMetaData("rootPath", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     tmpMap.put(_Fields.SHARED_SDPARTITION_SPEC, new org.apache.thrift.meta_data.FieldMetaData("sharedSDPartitionSpec", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PartitionSpecWithSharedSD.class)));
+     tmpMap.put(_Fields.PARTITION_LIST, new org.apache.thrift.meta_data.FieldMetaData("partitionList", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PartitionListComposingSpec.class)));
+     tmpMap.put(_Fields.CAT_NAME, new org.apache.thrift.meta_data.FieldMetaData("catName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
++    tmpMap.put(_Fields.WRITE_ID, new org.apache.thrift.meta_data.FieldMetaData("writeId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
++    tmpMap.put(_Fields.IS_STATS_COMPLIANT, new org.apache.thrift.meta_data.FieldMetaData("isStatsCompliant", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+     metaDataMap = Collections.unmodifiableMap(tmpMap);
+     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PartitionSpec.class, metaDataMap);
+   }
+ 
+   public PartitionSpec() {
++    this.writeId = -1L;
++
+   }
+ 
+   public PartitionSpec(
+     String dbName,
+     String tableName,
+     String rootPath)
+   {
+     this();
+     this.dbName = dbName;
+     this.tableName = tableName;
+     this.rootPath = rootPath;
+   }
+ 
+   /**
+    * Performs a deep copy on <i>other</i>.
+    */
+   public PartitionSpec(PartitionSpec other) {
++    __isset_bitfield = other.__isset_bitfield;
+     if (other.isSetDbName()) {
+       this.dbName = other.dbName;
+     }
+     if (other.isSetTableName()) {
+       this.tableName = other.tableName;
+     }
+     if (other.isSetRootPath()) {
+       this.rootPath = other.rootPath;
+     }
+     if (other.isSetSharedSDPartitionSpec()) {
+       this.sharedSDPartitionSpec = new PartitionSpecWithSharedSD(other.sharedSDPartitionSpec);
+     }
+     if (other.isSetPartitionList()) {
+       this.partitionList = new PartitionListComposingSpec(other.partitionList);
+     }
+     if (other.isSetCatName()) {
+       this.catName = other.catName;
+     }
++    this.writeId = other.writeId;
++    this.isStatsCompliant = other.isStatsCompliant;
+   }
+ 
+   public PartitionSpec deepCopy() {
+     return new PartitionSpec(this);
+   }
+ 
+   @Override
+   public void clear() {
+     this.dbName = null;
+     this.tableName = null;
+     this.rootPath = null;
+     this.sharedSDPartitionSpec = null;
+     this.partitionList = null;
+     this.catName = null;
++    this.writeId = -1L;
++
++    setIsStatsCompliantIsSet(false);
++    this.isStatsCompliant = false;
+   }
+ 
+   public String getDbName() {
+     return this.dbName;
+   }
+ 
+   public void setDbName(String dbName) {
+     this.dbName = dbName;
+   }
+ 
+   public void unsetDbName() {
+     this.dbName = null;
+   }
+ 
+   /** Returns true if field dbName is set (has been assigned a value) and false otherwise */
+   public boolean isSetDbName() {
+     return this.dbName != null;
+   }
+ 
+   public void setDbNameIsSet(boolean value) {
+     if (!value) {
+       this.dbName = null;
+     }
+   }
+ 
+   public String getTableName() {
+     return this.tableName;
+   }
+ 
+   public void setTableName(String tableName) {
+     this.tableName = tableName;
+   }
+ 
+   public void unsetTableName() {
+     this.tableName = null;
+   }
+ 
+   /** Returns true if field tableName is set (has been assigned a value) and false otherwise */
+   public boolean isSetTableName() {
+     return this.tableName != null;
+   }
+ 
+   public void setTableNameIsSet(boolean value) {
+     if (!value) {
+       this.tableName = null;
+     }
+   }
+ 
+   public String getRootPath() {
+     return this.rootPath;
+   }
+ 
+   public void setRootPath(String rootPath) {
+     this.rootPath = rootPath;
+   }
+ 
+   public void unsetRootPath() {
+     this.rootPath = null;
+   }
+ 
+   /** Returns true if field rootPath is set (has been assigned a value) and false otherwise */
+   public boolean isSetRootPath() {
+     return this.rootPath != null;
+   }
+ 
+   public void setRootPathIsSet(boolean value) {
+     if (!value) {
+       this.rootPath = null;
+     }
+   }
+ 
+   public PartitionSpecWithSharedSD getSharedSDPartitionSpec() {
+     return this.sharedSDPartitionSpec;
+   }
+ 
+   public void setSharedSDPartitionSpec(PartitionSpecWithSharedSD sharedSDPartitionSpec) {
+     this.sharedSDPartitionSpec = sharedSDPartitionSpec;
+   }
+ 
+   public void unsetSharedSDPartitionSpec() {
+     this.sharedSDPartitionSpec = null;
+   }
+ 
+   /** Returns true if field sharedSDPartitionSpec is set (has been assigned a value) and false otherwise */
+   public boolean isSetSharedSDPartitionSpec() {
+     return this.sharedSDPartitionSpec != null;
+   }
+ 
+   public void setSharedSDPartitionSpecIsSet(boolean value) {
+     if (!value) {
+       this.sharedSDPartitionSpec = null;
+     }
+   }
+ 
+   public PartitionListComposingSpec getPartitionList() {
+     return this.partitionList;
+   }
+ 
+   public void setPartitionList(PartitionListComposingSpec partitionList) {
+     this.partitionList = partitionList;
+   }
+ 
+   public void unsetPartitionList() {
+     this.partitionList = null;
+   }
+ 
+   /** Returns true if field partitionList is set (has been assigned a value) and false otherwise */
+   public boolean isSetPartitionList() {
+     return this.partitionList != null;
+   }
+ 
+   public void setPartitionListIsSet(boolean value) {
+     if (!value) {
+       this.partitionList = null;
+     }
+   }
+ 
+   public String getCatName() {
+     return this.catName;
+   }
+ 
+   public void setCatName(String catName) {
+     this.catName = catName;
+   }
+ 
+   public void unsetCatName() {
+     this.catName = null;
+   }
+ 
+   /** Returns true if field catName is set (has been assigned a value) and false otherwise */
+   public boolean isSetCatName() {
+     return this.catName != null;
+   }
+ 
+   public void setCatNameIsSet(boolean value) {
+     if (!value) {
+       this.catName = null;
+     }
+   }
+ 
++  public long getWriteId() {
++    return this.writeId;
++  }
++
++  public void setWriteId(long writeId) {
++    this.writeId = writeId;
++    setWriteIdIsSet(true);
++  }
++
++  public void unsetWriteId() {
++    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __WRITEID_ISSET_ID);
++  }
++
++  /** Returns true if field writeId is set (has been assigned a value) and false otherwise */
++  public boolean isSetWriteId() {
++    return EncodingUtils.testBit(__isset_bitfield, __WRITEID_ISSET_ID);
++  }
++
++  public void setWriteIdIsSet(boolean value) {
++    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __WRITEID_ISSET_ID, value);
++  }
++
++  public boolean isIsStatsCompliant() {
++    return this.isStatsCompliant;
++  }
++
++  public void setIsStatsCompliant(boolean isStatsCompliant) {
++    this.isStatsCompliant = isStatsCompliant;
++    setIsStatsCompliantIsSet(true);
++  }
++
++  public void unsetIsStatsCompliant() {
++    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISSTATSCOMPLIANT_ISSET_ID);
++  }
++
++  /** Returns true if field isStatsCompliant is set (has been assigned a value) and false otherwise */
++  public boolean isSetIsStatsCompliant() {
++    return EncodingUtils.testBit(__isset_bitfield, __ISSTATSCOMPLIANT_ISSET_ID);
++  }
++
++  public void setIsStatsCompliantIsSet(boolean value) {
++    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISSTATSCOMPLIANT_ISSET_ID, value);
++  }
++
+   public void setFieldValue(_Fields field, Object value) {
+     switch (field) {
+     case DB_NAME:
+       if (value == null) {
+         unsetDbName();
+       } else {
+         setDbName((String)value);
+       }
+       break;
+ 
+     case TABLE_NAME:
+       if (value == null) {
+         unsetTableName();
+       } else {
+         setTableName((String)value);
+       }
+       break;
+ 
+     case ROOT_PATH:
+       if (value == null) {
+         unsetRootPath();
+       } else {
+         setRootPath((String)value);
+       }
+       break;
+ 
+     case SHARED_SDPARTITION_SPEC:
+       if (value == null) {
+         unsetSharedSDPartitionSpec();
+       } else {
+         setSharedSDPartitionSpec((PartitionSpecWithSharedSD)value);
+       }
+       break;
+ 
+     case PARTITION_LIST:
+       if (value == null) {
+         unsetPartitionList();
+       } else {
+         setPartitionList((PartitionListComposingSpec)value);
+       }
+       break;
+ 
+     case CAT_NAME:
+       if (value == null) {
+         unsetCatName();
+       } else {
+         setCatName((String)value);
+       }
+       break;
+ 
++    case WRITE_ID:
++      if (value == null) {
++        unsetWriteId();
++      } else {
++        setWriteId((Long)value);
++      }
++      break;
++
++    case IS_STATS_COMPLIANT:
++      if (value == null) {
++        unsetIsStatsCompliant();
++      } else {
++        setIsStatsCompliant((Boolean)value);
++      }
++      break;
++
+     }
+   }
+ 
+   public Object getFieldValue(_Fields field) {
+     switch (field) {
+     case DB_NAME:
+       return getDbName();
+ 
+     case TABLE_NAME:
+       return getTableName();
+ 
+     case ROOT_PATH:
+       return getRootPath();
+ 
+     case SHARED_SDPARTITION_SPEC:
+       return getSharedSDPartitionSpec();
+ 
+     case PARTITION_LIST:
+       return getPartitionList();
+ 
+     case CAT_NAME:
+       return getCatName();
+ 
++    case WRITE_ID:
++      return getWriteId();
++
++    case IS_STATS_COMPLIANT:
++      return isIsStatsCompliant();
++
+     }
+     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 DB_NAME:
+       return isSetDbName();
+     case TABLE_NAME:
+       return isSetTableName();
+     case ROOT_PATH:
+       return isSetRootPath();
+     case SHARED_SDPARTITION_SPEC:
+       return isSetSharedSDPartitionSpec();
+     case PARTITION_LIST:
+       return isSetPartitionList();
+     case CAT_NAME:
+       return isSetCatName();
++    case WRITE_ID:
++      return isSetWriteId();
++    case IS_STATS_COMPLIANT:
++      return isSetIsStatsCompliant();
+     }
+     throw new IllegalStateException();
+   }
+ 
+   @Override
+   public boolean equals(Object that) {
+     if (that == null)
+       return false;
+     if (that instanceof PartitionSpec)
+       return this.equals((PartitionSpec)that);
+     return false;
+   }
+ 
+   public boolean equals(PartitionSpec that) {
+     if (that == null)
+       return false;
+ 
+     boolean this_present_dbName = true && this.isSetDbName();
+     boolean that_present_dbName = true && that.isSetDbName();
+     if (this_present_dbName || that_present_dbName) {
+       if (!(this_present_dbName && that_present_dbName))
+         return false;
+       if (!this.dbName.equals(that.dbName))
+         return false;
+     }
+ 
+     boolean this_present_tableName = true && this.isSetTableName();
+     boolean that_present_tableName = true && that.isSetTableName();
+     if (this_present_tableName || that_present_tableName) {
+       if (!(this_present_tableName && that_present_tableName))
+         return false;
+       if (!this.tableName.equals(that.tableName))
+         return false;
+     }
+ 
+     boolean this_present_rootPath = true && this.isSetRootPath();
+     boolean that_present_rootPath = true && that.isSetRootPath();
+     if (this_present_rootPath || that_present_rootPath) {
+       if (!(this_present_rootPath && that_present_rootPath))
+         return false;
+       if (!this.rootPath.equals(that.rootPath))
+         return false;
+     }
+ 
+     boolean this_present_sharedSDPartitionSpec = true && this.isSetSharedSDPartitionSpec();
+     boolean that_present_sharedSDPartitionSpec = true && that.isSetSharedSDPartitionSpec();
+     if (this_present_sharedSDPartitionSpec || that_present_sharedSDPartitionSpec) {
+       if (!(this_present_sharedSDPartitionSpec && that_present_sharedSDPartitionSpec))
+         return false;
+       if (!this.sharedSDPartitionSpec.equals(that.sharedSDPartitionSpec))
+         return false;
+     }
+ 
+     boolean this_present_partitionList = true && this.isSetPartitionList();
+     boolean that_present_partitionList = true && that.isSetPartitionList();
+     if (this_present_partitionList || that_present_partitionList) {
+       if (!(this_present_partitionList && that_present_partitionList))
+         return false;
+       if (!this.partitionList.equals(that.partitionList))
+         return false;
+     }
+ 
+     boolean this_present_catName = true && this.isSetCatName();
+     boolean that_present_catName = true && that.isSetCatName();
+     if (this_present_catName || that_present_catName) {
+       if (!(this_present_catName && that_present_catName))
+         return false;
+       if (!this.catName.equals(that.catName))
+         return false;
+     }
+ 
++    boolean this_present_writeId = true && this.isSetWriteId();
++    boolean that_present_writeId = true && that.isSetWriteId();
++    if (this_present_writeId || that_present_writeId) {
++      if (!(this_present_writeId && that_present_writeId))
++        return false;
++      if (this.writeId != that.writeId)
++        return false;
++    }
++
++    boolean this_present_isStatsCompliant = true && this.isSetIsStatsCompliant();
++    boolean that_present_isStatsCompliant = true && that.isSetIsStatsCompliant();
++    if (this_present_isStatsCompliant || that_present_isStatsCompliant) {
++      if (!(this_present_isStatsCompliant && that_present_isStatsCompliant))
++        return false;
++      if (this.isStatsCompliant != that.isStatsCompliant)
++        return false;
++    }
++
+     return true;
+   }
+ 
+   @Override
+   public int hashCode() {
+     List<Object> list = new ArrayList<Object>();
+ 
+     boolean present_dbName = true && (isSetDbName());
+     list.add(present_dbName);
+     if (present_dbName)
+       list.add(dbName);
+ 
+     boolean present_tableName = true && (isSetTableName());
+     list.add(present_tableName);
+     if (present_tableName)
+       list.add(tableName);
+ 
+     boolean present_rootPath = true && (isSetRootPath());
+     list.add(present_rootPath);
+     if (present_rootPath)
+       list.add(rootPath);
+ 
+     boolean present_sharedSDPartitionSpec = true && (isSetSharedSDPartitionSpec());
+     list.add(present_sharedSDPartitionSpec);
+     if (present_sharedSDPartitionSpec)
+       list.add(sharedSDPartitionSpec);
+ 
+     boolean present_partitionList = true && (isSetPartitionList());
+     list.add(present_partitionList);
+     if (present_partitionList)
+       list.add(partitionList);
+ 
+     boolean present_catName = true && (isSetCatName());
+     list.add(present_catName);
+     if (present_catName)
+       list.add(catName);
+ 
++    boolean present_writeId = true && (isSetWriteId());
++    list.add(present_writeId);
++    if (present_writeId)
++      list.add(writeId);
++
++    boolean present_isStatsCompliant = true && (isSetIsStatsCompliant());
++    list.add(present_isStatsCompliant);
++    if (present_isStatsCompliant)
++      list.add(isStatsCompliant);
++
+     return list.hashCode();
+   }
+ 
+   @Override
+   public int compareTo(PartitionSpec other) {
+     if (!getClass().equals(other.getClass())) {
+       return getClass().getName().compareTo(other.getClass().getName());
+     }
+ 
+     int lastComparison = 0;
+ 
+     lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetDbName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetTableName()).compareTo(other.isSetTableName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetTableName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableName, other.tableName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetRootPath()).compareTo(other.isSetRootPath());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetRootPath()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rootPath, other.rootPath);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetSharedSDPartitionSpec()).compareTo(other.isSetSharedSDPartitionSpec());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetSharedSDPartitionSpec()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sharedSDPartitionSpec, other.sharedSDPartitionSpec);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetPartitionList()).compareTo(other.isSetPartitionList());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetPartitionList()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partitionList, other.partitionList);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetCatName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
++    lastComparison = Boolean.valueOf(isSetWriteId()).compareTo(other.isSetWriteId());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetWriteId()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.writeId, other.writeId);
++      if (lastComparison != 0) {
++        return lastComparison;
++      }
++    }
++    lastComparison = Boolean.valueOf(isSetIsStatsCompliant()).compareTo(other.isSetIsStatsCompliant());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetIsStatsCompliant()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isStatsCompliant, other.isStatsCompliant);
++      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("PartitionSpec(");
+     boolean first = true;
+ 
+     sb.append("dbName:");
+     if (this.dbName == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.dbName);
+     }
+     first = false;
+     if (!first) sb.append(", ");
+     sb.append("tableName:");
+     if (this.tableName == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.tableName);
+     }
+     first = false;
+     if (!first) sb.append(", ");
+     sb.append("rootPath:");
+     if (this.rootPath == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.rootPath);
+     }
+     first = false;
+     if (isSetSharedSDPartitionSpec()) {
+       if (!first) sb.append(", ");
+       sb.append("sharedSDPartitionSpec:");
+       if (this.sharedSDPartitionSpec == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.sharedSDPartitionSpec);
+       }
+       first = false;
+     }
+     if (isSetPartitionList()) {
+       if (!first) sb.append(", ");
+       sb.append("partitionList:");
+       if (this.partitionList == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.partitionList);
+       }
+       first = false;
+     }
+     if (isSetCatName()) {
+       if (!first) sb.append(", ");
+       sb.append("catName:");
+       if (this.catName == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.catName);
+       }
+       first = false;
+     }
++    if (isSetWriteId()) {
++      if (!first) sb.append(", ");
++      sb.append("writeId:");
++      sb.append(this.writeId);
++      first = false;
++    }
++    if (isSetIsStatsCompliant()) {
++      if (!first) sb.append(", ");
++      sb.append("isStatsCompliant:");
++      sb.append(this.isStatsCompliant);
++      first = false;
++    }
+     sb.append(")");
+     return sb.toString();
+   }
+ 
+   public void validate() throws org.apache.thrift.TException {
+     // check for required fields
+     // check for sub-struct validity
+     if (sharedSDPartitionSpec != null) {
+       sharedSDPartitionSpec.validate();
+     }
+     if (partitionList != null) {
+       partitionList.validate();
+     }
+   }
+ 
+   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 {
++      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
++      __isset_bitfield = 0;
+       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 PartitionSpecStandardSchemeFactory implements SchemeFactory {
+     public PartitionSpecStandardScheme getScheme() {
+       return new PartitionSpecStandardScheme();
+     }
+   }
+ 
+   private static class PartitionSpecStandardScheme extends StandardScheme<PartitionSpec> {
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot, PartitionSpec struct) throws org.apache.thrift.TException {
+       org.apache.thrift.protocol.TField schemeField;
+       iprot.readStructBegin();
+       while (true)
+       {
+         schemeField = iprot.readFieldBegin();
+         if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+           break;
+         }
+         switch (schemeField.id) {
+           case 1: // DB_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.dbName = iprot.readString();
+               struct.setDbNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 2: // TABLE_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.tableName = iprot.readString();
+               struct.setTableNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 3: // ROOT_PATH
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.rootPath = iprot.readString();
+               struct.setRootPathIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 4: // SHARED_SDPARTITION_SPEC
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+               struct.sharedSDPartitionSpec = new PartitionSpecWithSharedSD();
+               struct.sharedSDPartitionSpec.read(iprot);
+               struct.setSharedSDPartitionSpecIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 5: // PARTITION_LIST
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+               struct.partitionList = new PartitionListComposingSpec();
+               struct.partitionList.read(iprot);
+               struct.setPartitionListIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 6: // CAT_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.catName = iprot.readString();
+               struct.setCatNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
++          case 7: // WRITE_ID
++            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
++              struct.writeId = iprot.readI64();
++              struct.setWriteIdIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
++          case 8: // IS_STATS_COMPLIANT
++            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
++              struct.isStatsCompliant = iprot.readBool();
++              struct.setIsStatsCompliantIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
+           default:
+             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+         }
+         iprot.readFieldEnd();
+       }
+       iprot.readStructEnd();
+       struct.validate();
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot, PartitionSpec struct) throws org.apache.thrift.TException {
+       struct.validate();
+ 
+       oprot.writeStructBegin(STRUCT_DESC);
+       if (struct.dbName != null) {
+         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
+         oprot.writeString(struct.dbName);
+         oprot.writeFieldEnd();
+       }
+       if (struct.tableName != null) {
+         oprot.writeFieldBegin(TABLE_NAME_FIELD_DESC);
+         oprot.writeString(struct.tableName);
+         oprot.writeFieldEnd();
+       }
+       if (struct.rootPath != null) {
+         oprot.writeFieldBegin(ROOT_PATH_FIELD_DESC);
+         oprot.writeString(struct.rootPath);
+         oprot.writeFieldEnd();
+       }
+       if (struct.sharedSDPartitionSpec != null) {
+         if (struct.isSetSharedSDPartitionSpec()) {
+           oprot.writeFieldBegin(SHARED_SDPARTITION_SPEC_FIELD_DESC);
+           struct.sharedSDPartitionSpec.write(oprot);
+           oprot.writeFieldEnd();
+         }
+       }
+       if (struct.partitionList != null) {
+         if (struct.isSetPartitionList()) {
+           oprot.writeFieldBegin(PARTITION_LIST_FIELD_DESC);
+           struct.partitionList.write(oprot);
+           oprot.writeFieldEnd();
+         }
+       }
+       if (struct.catName != null) {
+         if (struct.isSetCatName()) {
+           oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+           oprot.writeString(struct.catName);
+           oprot.writeFieldEnd();
+         }
+       }
++      if (struct.isSetWriteId()) {
++        oprot.writeFieldBegin(WRITE_ID_FIELD_DESC);
++        oprot.writeI64(struct.writeId);
++        oprot.writeFieldEnd();
++      }
++      if (struct.isSetIsStatsCompliant()) {
++        oprot.writeFieldBegin(IS_STATS_COMPLIANT_FIELD_DESC);
++        oprot.writeBool(struct.isStatsCompliant);
++        oprot.writeFieldEnd();
++      }
+       oprot.writeFieldStop();
+       oprot.writeStructEnd();
+     }
+ 
+   }
+ 
+   private static class PartitionSpecTupleSchemeFactory implements SchemeFactory {
+     public PartitionSpecTupleScheme getScheme() {
+       return new PartitionSpecTupleScheme();
+     }
+   }
+ 
+   private static class PartitionSpecTupleScheme extends TupleScheme<PartitionSpec> {
+ 
+     @Override
+     public void write(org.apache.thrift.protocol.TProtocol prot, PartitionSpec struct) throws org.apache.thrift.TException {
+       TTupleProtocol oprot = (TTupleProtocol) prot;
+       BitSet optionals = new BitSet();
+       if (struct.isSetDbName()) {
+         optionals.set(0);
+       }
+       if (struct.isSetTableName()) {
+         optionals.set(1);
+       }
+       if (struct.isSetRootPath()) {
+         optionals.set(2);
+       }
+       if (struct.isSetSharedSDPartitionSpec()) {
+         optionals.set(3);
+       }
+       if (struct.isSetPartitionList()) {
+         optionals.set(4);
+       }
+       if (struct.isSetCatName()) {
+         optionals.set(5);
+       }
 -      oprot.writeBitSet(optionals, 6);
++      if (struct.isSetWriteId()) {
++        optionals.set(6);
++      }
++      if (struct.isSetIsStatsCompliant()) {
++        optionals.set(7);
++      }
++      oprot.writeBitSet(optionals, 8);
+       if (struct.isSetDbName()) {
+         oprot.writeString(struct.dbName);
+       }
+       if (struct.isSetTableName()) {
+         oprot.writeString(struct.tableName);
+       }
+       if (struct.isSetRootPath()) {
+         oprot.writeString(struct.rootPath);
+       }
+       if (struct.isSetSharedSDPartitionSpec()) {
+         struct.sharedSDPartitionSpec.write(oprot);
+       }
+       if (struct.isSetPartitionList()) {
+         struct.partitionList.write(oprot);
+       }
+       if (struct.isSetCatName()) {
+         oprot.writeString(struct.catName);
+       }
++      if (struct.isSetWriteId()) {
++        oprot.writeI64(struct.writeId);
++      }
++      if (struct.isSetIsStatsCompliant()) {
++        oprot.writeBool(struct.isStatsCompliant);
++      }
+     }
+ 
+     @Override
+     public void read(org.apache.thrift.protocol.TProtocol prot, PartitionSpec struct) throws org.apache.thrift.TException {
+       TTupleProtocol iprot = (TTupleProtocol) prot;
 -      BitSet incoming = iprot.readBitSet(6);
++      BitSet incoming = iprot.readBitSet(8);
+       if (incoming.get(0)) {
+         struct.dbName = iprot.readString();
+         struct.setDbNameIsSet(true);
+       }
+       if (incoming.get(1)) {
+         struct.tableName = iprot.readString();
+         struct.setTableNameIsSet(true);
+       }
+       if (incoming.get(2)) {
+         struct.rootPath = iprot.readString();
+         struct.setRootPathIsSet(true);
+       }
+       if (incoming.get(3)) {
+         struct.sharedSDPartitionSpec = new PartitionSpecWithSharedSD();
+         struct.sharedSDPartitionSpec.read(iprot);
+         struct.setSharedSDPartitionSpecIsSet(true);
+       }
+       if (incoming.get(4)) {
+         struct.partitionList = new PartitionListComposingSpec();
+         struct.partitionList.read(iprot);
+         struct.setPartitionListIsSet(true);
+       }
+       if (incoming.get(5)) {
+         struct.catName = iprot.readString();
+         struct.setCatNameIsSet(true);
+       }
++      if (incoming.get(6)) {
++        struct.writeId = iprot.readI64();
++        struct.setWriteIdIsSet(true);
++      }
++      if (incoming.get(7)) {
++        struct.isStatsCompliant = iprot.readBool();
++        struct.setIsStatsCompliantIsSet(true);
++      }
+     }
+   }
+ 
+ }
+ 

http://git-wip-us.apache.org/repos/asf/hive/blob/93b9cdd6/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsStatsRequest.java
----------------------------------------------------------------------
diff --cc standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsStatsRequest.java
index 0000000,91cf567..a298b89
mode 000000,100644..100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsStatsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsStatsRequest.java
@@@ -1,0 -1,900 +1,1111 @@@
+ /**
+  * Autogenerated by Thrift Compiler (0.9.3)
+  *
+  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+  *  @generated
+  */
+ package org.apache.hadoop.hive.metastore.api;
+ 
+ import org.apache.thrift.scheme.IScheme;
+ import org.apache.thrift.scheme.SchemeFactory;
+ import org.apache.thrift.scheme.StandardScheme;
+ 
+ import org.apache.thrift.scheme.TupleScheme;
+ import org.apache.thrift.protocol.TTupleProtocol;
+ import org.apache.thrift.protocol.TProtocolException;
+ import org.apache.thrift.EncodingUtils;
+ import org.apache.thrift.TException;
+ import org.apache.thrift.async.AsyncMethodCallback;
+ import org.apache.thrift.server.AbstractNonblockingServer.*;
+ import java.util.List;
+ import java.util.ArrayList;
+ import java.util.Map;
+ import java.util.HashMap;
+ import java.util.EnumMap;
+ import java.util.Set;
+ import java.util.HashSet;
+ import java.util.EnumSet;
+ import java.util.Collections;
+ import java.util.BitSet;
+ import java.nio.ByteBuffer;
+ import java.util.Arrays;
+ import javax.annotation.Generated;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
+ @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+ @Generated(value = "Autogenerated by Thrift Compiler (0.9.3)")
+ @org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class PartitionsStatsRequest implements org.apache.thrift.TBase<PartitionsStatsRequest, PartitionsStatsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<PartitionsStatsRequest> {
+   private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PartitionsStatsRequest");
+ 
+   private static final org.apache.thrift.protocol.TField DB_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("dbName", org.apache.thrift.protocol.TType.STRING, (short)1);
+   private static final org.apache.thrift.protocol.TField TBL_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("tblName", org.apache.thrift.protocol.TType.STRING, (short)2);
+   private static final org.apache.thrift.protocol.TField COL_NAMES_FIELD_DESC = new org.apache.thrift.protocol.TField("colNames", org.apache.thrift.protocol.TType.LIST, (short)3);
+   private static final org.apache.thrift.protocol.TField PART_NAMES_FIELD_DESC = new org.apache.thrift.protocol.TField("partNames", org.apache.thrift.protocol.TType.LIST, (short)4);
+   private static final org.apache.thrift.protocol.TField CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (short)5);
++  private static final org.apache.thrift.protocol.TField TXN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("txnId", org.apache.thrift.protocol.TType.I64, (short)6);
++  private static final org.apache.thrift.protocol.TField VALID_WRITE_ID_LIST_FIELD_DESC = new org.apache.thrift.protocol.TField("validWriteIdList", org.apache.thrift.protocol.TType.STRING, (short)7);
+ 
+   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+   static {
+     schemes.put(StandardScheme.class, new PartitionsStatsRequestStandardSchemeFactory());
+     schemes.put(TupleScheme.class, new PartitionsStatsRequestTupleSchemeFactory());
+   }
+ 
+   private String dbName; // required
+   private String tblName; // required
+   private List<String> colNames; // required
+   private List<String> partNames; // required
+   private String catName; // optional
++  private long txnId; // optional
++  private String validWriteIdList; // optional
+ 
+   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+     DB_NAME((short)1, "dbName"),
+     TBL_NAME((short)2, "tblName"),
+     COL_NAMES((short)3, "colNames"),
+     PART_NAMES((short)4, "partNames"),
 -    CAT_NAME((short)5, "catName");
++    CAT_NAME((short)5, "catName"),
++    TXN_ID((short)6, "txnId"),
++    VALID_WRITE_ID_LIST((short)7, "validWriteIdList");
+ 
+     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+ 
+     static {
+       for (_Fields field : EnumSet.allOf(_Fields.class)) {
+         byName.put(field.getFieldName(), field);
+       }
+     }
+ 
+     /**
+      * Find the _Fields constant that matches fieldId, or null if its not found.
+      */
+     public static _Fields findByThriftId(int fieldId) {
+       switch(fieldId) {
+         case 1: // DB_NAME
+           return DB_NAME;
+         case 2: // TBL_NAME
+           return TBL_NAME;
+         case 3: // COL_NAMES
+           return COL_NAMES;
+         case 4: // PART_NAMES
+           return PART_NAMES;
+         case 5: // CAT_NAME
+           return CAT_NAME;
++        case 6: // TXN_ID
++          return TXN_ID;
++        case 7: // VALID_WRITE_ID_LIST
++          return VALID_WRITE_ID_LIST;
+         default:
+           return null;
+       }
+     }
+ 
+     /**
+      * Find the _Fields constant that matches fieldId, throwing an exception
+      * if it is not found.
+      */
+     public static _Fields findByThriftIdOrThrow(int fieldId) {
+       _Fields fields = findByThriftId(fieldId);
+       if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+       return fields;
+     }
+ 
+     /**
+      * Find the _Fields constant that matches name, or null if its not found.
+      */
+     public static _Fields findByName(String name) {
+       return byName.get(name);
+     }
+ 
+     private final short _thriftId;
+     private final String _fieldName;
+ 
+     _Fields(short thriftId, String fieldName) {
+       _thriftId = thriftId;
+       _fieldName = fieldName;
+     }
+ 
+     public short getThriftFieldId() {
+       return _thriftId;
+     }
+ 
+     public String getFieldName() {
+       return _fieldName;
+     }
+   }
+ 
+   // isset id assignments
 -  private static final _Fields optionals[] = {_Fields.CAT_NAME};
++  private static final int __TXNID_ISSET_ID = 0;
++  private byte __isset_bitfield = 0;
++  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.TXN_ID,_Fields.VALID_WRITE_ID_LIST};
+   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+   static {
+     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+     tmpMap.put(_Fields.DB_NAME, new org.apache.thrift.meta_data.FieldMetaData("dbName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     tmpMap.put(_Fields.TBL_NAME, new org.apache.thrift.meta_data.FieldMetaData("tblName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     tmpMap.put(_Fields.COL_NAMES, new org.apache.thrift.meta_data.FieldMetaData("colNames", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+         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.PART_NAMES, new org.apache.thrift.meta_data.FieldMetaData("partNames", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+         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.CAT_NAME, new org.apache.thrift.meta_data.FieldMetaData("catName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
++    tmpMap.put(_Fields.TXN_ID, new org.apache.thrift.meta_data.FieldMetaData("txnId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
++    tmpMap.put(_Fields.VALID_WRITE_ID_LIST, new org.apache.thrift.meta_data.FieldMetaData("validWriteIdList", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
++        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+     metaDataMap = Collections.unmodifiableMap(tmpMap);
+     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PartitionsStatsRequest.class, metaDataMap);
+   }
+ 
+   public PartitionsStatsRequest() {
++    this.txnId = -1L;
++
+   }
+ 
+   public PartitionsStatsRequest(
+     String dbName,
+     String tblName,
+     List<String> colNames,
+     List<String> partNames)
+   {
+     this();
+     this.dbName = dbName;
+     this.tblName = tblName;
+     this.colNames = colNames;
+     this.partNames = partNames;
+   }
+ 
+   /**
+    * Performs a deep copy on <i>other</i>.
+    */
+   public PartitionsStatsRequest(PartitionsStatsRequest other) {
++    __isset_bitfield = other.__isset_bitfield;
+     if (other.isSetDbName()) {
+       this.dbName = other.dbName;
+     }
+     if (other.isSetTblName()) {
+       this.tblName = other.tblName;
+     }
+     if (other.isSetColNames()) {
+       List<String> __this__colNames = new ArrayList<String>(other.colNames);
+       this.colNames = __this__colNames;
+     }
+     if (other.isSetPartNames()) {
+       List<String> __this__partNames = new ArrayList<String>(other.partNames);
+       this.partNames = __this__partNames;
+     }
+     if (other.isSetCatName()) {
+       this.catName = other.catName;
+     }
++    this.txnId = other.txnId;
++    if (other.isSetValidWriteIdList()) {
++      this.validWriteIdList = other.validWriteIdList;
++    }
+   }
+ 
+   public PartitionsStatsRequest deepCopy() {
+     return new PartitionsStatsRequest(this);
+   }
+ 
+   @Override
+   public void clear() {
+     this.dbName = null;
+     this.tblName = null;
+     this.colNames = null;
+     this.partNames = null;
+     this.catName = null;
++    this.txnId = -1L;
++
++    this.validWriteIdList = null;
+   }
+ 
+   public String getDbName() {
+     return this.dbName;
+   }
+ 
+   public void setDbName(String dbName) {
+     this.dbName = dbName;
+   }
+ 
+   public void unsetDbName() {
+     this.dbName = null;
+   }
+ 
+   /** Returns true if field dbName is set (has been assigned a value) and false otherwise */
+   public boolean isSetDbName() {
+     return this.dbName != null;
+   }
+ 
+   public void setDbNameIsSet(boolean value) {
+     if (!value) {
+       this.dbName = null;
+     }
+   }
+ 
+   public String getTblName() {
+     return this.tblName;
+   }
+ 
+   public void setTblName(String tblName) {
+     this.tblName = tblName;
+   }
+ 
+   public void unsetTblName() {
+     this.tblName = null;
+   }
+ 
+   /** Returns true if field tblName is set (has been assigned a value) and false otherwise */
+   public boolean isSetTblName() {
+     return this.tblName != null;
+   }
+ 
+   public void setTblNameIsSet(boolean value) {
+     if (!value) {
+       this.tblName = null;
+     }
+   }
+ 
+   public int getColNamesSize() {
+     return (this.colNames == null) ? 0 : this.colNames.size();
+   }
+ 
+   public java.util.Iterator<String> getColNamesIterator() {
+     return (this.colNames == null) ? null : this.colNames.iterator();
+   }
+ 
+   public void addToColNames(String elem) {
+     if (this.colNames == null) {
+       this.colNames = new ArrayList<String>();
+     }
+     this.colNames.add(elem);
+   }
+ 
+   public List<String> getColNames() {
+     return this.colNames;
+   }
+ 
+   public void setColNames(List<String> colNames) {
+     this.colNames = colNames;
+   }
+ 
+   public void unsetColNames() {
+     this.colNames = null;
+   }
+ 
+   /** Returns true if field colNames is set (has been assigned a value) and false otherwise */
+   public boolean isSetColNames() {
+     return this.colNames != null;
+   }
+ 
+   public void setColNamesIsSet(boolean value) {
+     if (!value) {
+       this.colNames = null;
+     }
+   }
+ 
+   public int getPartNamesSize() {
+     return (this.partNames == null) ? 0 : this.partNames.size();
+   }
+ 
+   public java.util.Iterator<String> getPartNamesIterator() {
+     return (this.partNames == null) ? null : this.partNames.iterator();
+   }
+ 
+   public void addToPartNames(String elem) {
+     if (this.partNames == null) {
+       this.partNames = new ArrayList<String>();
+     }
+     this.partNames.add(elem);
+   }
+ 
+   public List<String> getPartNames() {
+     return this.partNames;
+   }
+ 
+   public void setPartNames(List<String> partNames) {
+     this.partNames = partNames;
+   }
+ 
+   public void unsetPartNames() {
+     this.partNames = null;
+   }
+ 
+   /** Returns true if field partNames is set (has been assigned a value) and false otherwise */
+   public boolean isSetPartNames() {
+     return this.partNames != null;
+   }
+ 
+   public void setPartNamesIsSet(boolean value) {
+     if (!value) {
+       this.partNames = null;
+     }
+   }
+ 
+   public String getCatName() {
+     return this.catName;
+   }
+ 
+   public void setCatName(String catName) {
+     this.catName = catName;
+   }
+ 
+   public void unsetCatName() {
+     this.catName = null;
+   }
+ 
+   /** Returns true if field catName is set (has been assigned a value) and false otherwise */
+   public boolean isSetCatName() {
+     return this.catName != null;
+   }
+ 
+   public void setCatNameIsSet(boolean value) {
+     if (!value) {
+       this.catName = null;
+     }
+   }
+ 
++  public long getTxnId() {
++    return this.txnId;
++  }
++
++  public void setTxnId(long txnId) {
++    this.txnId = txnId;
++    setTxnIdIsSet(true);
++  }
++
++  public void unsetTxnId() {
++    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TXNID_ISSET_ID);
++  }
++
++  /** Returns true if field txnId is set (has been assigned a value) and false otherwise */
++  public boolean isSetTxnId() {
++    return EncodingUtils.testBit(__isset_bitfield, __TXNID_ISSET_ID);
++  }
++
++  public void setTxnIdIsSet(boolean value) {
++    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TXNID_ISSET_ID, value);
++  }
++
++  public String getValidWriteIdList() {
++    return this.validWriteIdList;
++  }
++
++  public void setValidWriteIdList(String validWriteIdList) {
++    this.validWriteIdList = validWriteIdList;
++  }
++
++  public void unsetValidWriteIdList() {
++    this.validWriteIdList = null;
++  }
++
++  /** Returns true if field validWriteIdList is set (has been assigned a value) and false otherwise */
++  public boolean isSetValidWriteIdList() {
++    return this.validWriteIdList != null;
++  }
++
++  public void setValidWriteIdListIsSet(boolean value) {
++    if (!value) {
++      this.validWriteIdList = null;
++    }
++  }
++
+   public void setFieldValue(_Fields field, Object value) {
+     switch (field) {
+     case DB_NAME:
+       if (value == null) {
+         unsetDbName();
+       } else {
+         setDbName((String)value);
+       }
+       break;
+ 
+     case TBL_NAME:
+       if (value == null) {
+         unsetTblName();
+       } else {
+         setTblName((String)value);
+       }
+       break;
+ 
+     case COL_NAMES:
+       if (value == null) {
+         unsetColNames();
+       } else {
+         setColNames((List<String>)value);
+       }
+       break;
+ 
+     case PART_NAMES:
+       if (value == null) {
+         unsetPartNames();
+       } else {
+         setPartNames((List<String>)value);
+       }
+       break;
+ 
+     case CAT_NAME:
+       if (value == null) {
+         unsetCatName();
+       } else {
+         setCatName((String)value);
+       }
+       break;
+ 
++    case TXN_ID:
++      if (value == null) {
++        unsetTxnId();
++      } else {
++        setTxnId((Long)value);
++      }
++      break;
++
++    case VALID_WRITE_ID_LIST:
++      if (value == null) {
++        unsetValidWriteIdList();
++      } else {
++        setValidWriteIdList((String)value);
++      }
++      break;
++
+     }
+   }
+ 
+   public Object getFieldValue(_Fields field) {
+     switch (field) {
+     case DB_NAME:
+       return getDbName();
+ 
+     case TBL_NAME:
+       return getTblName();
+ 
+     case COL_NAMES:
+       return getColNames();
+ 
+     case PART_NAMES:
+       return getPartNames();
+ 
+     case CAT_NAME:
+       return getCatName();
+ 
++    case TXN_ID:
++      return getTxnId();
++
++    case VALID_WRITE_ID_LIST:
++      return getValidWriteIdList();
++
+     }
+     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 DB_NAME:
+       return isSetDbName();
+     case TBL_NAME:
+       return isSetTblName();
+     case COL_NAMES:
+       return isSetColNames();
+     case PART_NAMES:
+       return isSetPartNames();
+     case CAT_NAME:
+       return isSetCatName();
++    case TXN_ID:
++      return isSetTxnId();
++    case VALID_WRITE_ID_LIST:
++      return isSetValidWriteIdList();
+     }
+     throw new IllegalStateException();
+   }
+ 
+   @Override
+   public boolean equals(Object that) {
+     if (that == null)
+       return false;
+     if (that instanceof PartitionsStatsRequest)
+       return this.equals((PartitionsStatsRequest)that);
+     return false;
+   }
+ 
+   public boolean equals(PartitionsStatsRequest that) {
+     if (that == null)
+       return false;
+ 
+     boolean this_present_dbName = true && this.isSetDbName();
+     boolean that_present_dbName = true && that.isSetDbName();
+     if (this_present_dbName || that_present_dbName) {
+       if (!(this_present_dbName && that_present_dbName))
+         return false;
+       if (!this.dbName.equals(that.dbName))
+         return false;
+     }
+ 
+     boolean this_present_tblName = true && this.isSetTblName();
+     boolean that_present_tblName = true && that.isSetTblName();
+     if (this_present_tblName || that_present_tblName) {
+       if (!(this_present_tblName && that_present_tblName))
+         return false;
+       if (!this.tblName.equals(that.tblName))
+         return false;
+     }
+ 
+     boolean this_present_colNames = true && this.isSetColNames();
+     boolean that_present_colNames = true && that.isSetColNames();
+     if (this_present_colNames || that_present_colNames) {
+       if (!(this_present_colNames && that_present_colNames))
+         return false;
+       if (!this.colNames.equals(that.colNames))
+         return false;
+     }
+ 
+     boolean this_present_partNames = true && this.isSetPartNames();
+     boolean that_present_partNames = true && that.isSetPartNames();
+     if (this_present_partNames || that_present_partNames) {
+       if (!(this_present_partNames && that_present_partNames))
+         return false;
+       if (!this.partNames.equals(that.partNames))
+         return false;
+     }
+ 
+     boolean this_present_catName = true && this.isSetCatName();
+     boolean that_present_catName = true && that.isSetCatName();
+     if (this_present_catName || that_present_catName) {
+       if (!(this_present_catName && that_present_catName))
+         return false;
+       if (!this.catName.equals(that.catName))
+         return false;
+     }
+ 
++    boolean this_present_txnId = true && this.isSetTxnId();
++    boolean that_present_txnId = true && that.isSetTxnId();
++    if (this_present_txnId || that_present_txnId) {
++      if (!(this_present_txnId && that_present_txnId))
++        return false;
++      if (this.txnId != that.txnId)
++        return false;
++    }
++
++    boolean this_present_validWriteIdList = true && this.isSetValidWriteIdList();
++    boolean that_present_validWriteIdList = true && that.isSetValidWriteIdList();
++    if (this_present_validWriteIdList || that_present_validWriteIdList) {
++      if (!(this_present_validWriteIdList && that_present_validWriteIdList))
++        return false;
++      if (!this.validWriteIdList.equals(that.validWriteIdList))
++        return false;
++    }
++
+     return true;
+   }
+ 
+   @Override
+   public int hashCode() {
+     List<Object> list = new ArrayList<Object>();
+ 
+     boolean present_dbName = true && (isSetDbName());
+     list.add(present_dbName);
+     if (present_dbName)
+       list.add(dbName);
+ 
+     boolean present_tblName = true && (isSetTblName());
+     list.add(present_tblName);
+     if (present_tblName)
+       list.add(tblName);
+ 
+     boolean present_colNames = true && (isSetColNames());
+     list.add(present_colNames);
+     if (present_colNames)
+       list.add(colNames);
+ 
+     boolean present_partNames = true && (isSetPartNames());
+     list.add(present_partNames);
+     if (present_partNames)
+       list.add(partNames);
+ 
+     boolean present_catName = true && (isSetCatName());
+     list.add(present_catName);
+     if (present_catName)
+       list.add(catName);
+ 
++    boolean present_txnId = true && (isSetTxnId());
++    list.add(present_txnId);
++    if (present_txnId)
++      list.add(txnId);
++
++    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
++    list.add(present_validWriteIdList);
++    if (present_validWriteIdList)
++      list.add(validWriteIdList);
++
+     return list.hashCode();
+   }
+ 
+   @Override
+   public int compareTo(PartitionsStatsRequest other) {
+     if (!getClass().equals(other.getClass())) {
+       return getClass().getName().compareTo(other.getClass().getName());
+     }
+ 
+     int lastComparison = 0;
+ 
+     lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetDbName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetTblName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetColNames()).compareTo(other.isSetColNames());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetColNames()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.colNames, other.colNames);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetPartNames()).compareTo(other.isSetPartNames());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetPartNames()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partNames, other.partNames);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
+     lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+     if (lastComparison != 0) {
+       return lastComparison;
+     }
+     if (isSetCatName()) {
+       lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+       if (lastComparison != 0) {
+         return lastComparison;
+       }
+     }
++    lastComparison = Boolean.valueOf(isSetTxnId()).compareTo(other.isSetTxnId());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetTxnId()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.txnId, other.txnId);
++      if (lastComparison != 0) {
++        return lastComparison;
++      }
++    }
++    lastComparison = Boolean.valueOf(isSetValidWriteIdList()).compareTo(other.isSetValidWriteIdList());
++    if (lastComparison != 0) {
++      return lastComparison;
++    }
++    if (isSetValidWriteIdList()) {
++      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validWriteIdList, other.validWriteIdList);
++      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("PartitionsStatsRequest(");
+     boolean first = true;
+ 
+     sb.append("dbName:");
+     if (this.dbName == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.dbName);
+     }
+     first = false;
+     if (!first) sb.append(", ");
+     sb.append("tblName:");
+     if (this.tblName == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.tblName);
+     }
+     first = false;
+     if (!first) sb.append(", ");
+     sb.append("colNames:");
+     if (this.colNames == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.colNames);
+     }
+     first = false;
+     if (!first) sb.append(", ");
+     sb.append("partNames:");
+     if (this.partNames == null) {
+       sb.append("null");
+     } else {
+       sb.append(this.partNames);
+     }
+     first = false;
+     if (isSetCatName()) {
+       if (!first) sb.append(", ");
+       sb.append("catName:");
+       if (this.catName == null) {
+         sb.append("null");
+       } else {
+         sb.append(this.catName);
+       }
+       first = false;
+     }
++    if (isSetTxnId()) {
++      if (!first) sb.append(", ");
++      sb.append("txnId:");
++      sb.append(this.txnId);
++      first = false;
++    }
++    if (isSetValidWriteIdList()) {
++      if (!first) sb.append(", ");
++      sb.append("validWriteIdList:");
++      if (this.validWriteIdList == null) {
++        sb.append("null");
++      } else {
++        sb.append(this.validWriteIdList);
++      }
++      first = false;
++    }
+     sb.append(")");
+     return sb.toString();
+   }
+ 
+   public void validate() throws org.apache.thrift.TException {
+     // check for required fields
+     if (!isSetDbName()) {
+       throw new org.apache.thrift.protocol.TProtocolException("Required field 'dbName' is unset! Struct:" + toString());
+     }
+ 
+     if (!isSetTblName()) {
+       throw new org.apache.thrift.protocol.TProtocolException("Required field 'tblName' is unset! Struct:" + toString());
+     }
+ 
+     if (!isSetColNames()) {
+       throw new org.apache.thrift.protocol.TProtocolException("Required field 'colNames' is unset! Struct:" + toString());
+     }
+ 
+     if (!isSetPartNames()) {
+       throw new org.apache.thrift.protocol.TProtocolException("Required field 'partNames' is unset! Struct:" + toString());
+     }
+ 
+     // 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 {
++      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
++      __isset_bitfield = 0;
+       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 PartitionsStatsRequestStandardSchemeFactory implements SchemeFactory {
+     public PartitionsStatsRequestStandardScheme getScheme() {
+       return new PartitionsStatsRequestStandardScheme();
+     }
+   }
+ 
+   private static class PartitionsStatsRequestStandardScheme extends StandardScheme<PartitionsStatsRequest> {
+ 
+     public void read(org.apache.thrift.protocol.TProtocol iprot, PartitionsStatsRequest struct) throws org.apache.thrift.TException {
+       org.apache.thrift.protocol.TField schemeField;
+       iprot.readStructBegin();
+       while (true)
+       {
+         schemeField = iprot.readFieldBegin();
+         if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
+           break;
+         }
+         switch (schemeField.id) {
+           case 1: // DB_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.dbName = iprot.readString();
+               struct.setDbNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 2: // TBL_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.tblName = iprot.readString();
+               struct.setTblNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 3: // COL_NAMES
+             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+               {
+                 org.apache.thrift.protocol.TList _list458 = iprot.readListBegin();
+                 struct.colNames = new ArrayList<String>(_list458.size);
+                 String _elem459;
+                 for (int _i460 = 0; _i460 < _list458.size; ++_i460)
+                 {
+                   _elem459 = iprot.readString();
+                   struct.colNames.add(_elem459);
+                 }
+                 iprot.readListEnd();
+               }
+               struct.setColNamesIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 4: // PART_NAMES
+             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+               {
+                 org.apache.thrift.protocol.TList _list461 = iprot.readListBegin();
+                 struct.partNames = new ArrayList<String>(_list461.size);
+                 String _elem462;
+                 for (int _i463 = 0; _i463 < _list461.size; ++_i463)
+                 {
+                   _elem462 = iprot.readString();
+                   struct.partNames.add(_elem462);
+                 }
+                 iprot.readListEnd();
+               }
+               struct.setPartNamesIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
+           case 5: // CAT_NAME
+             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+               struct.catName = iprot.readString();
+               struct.setCatNameIsSet(true);
+             } else { 
+               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+             }
+             break;
++          case 6: // TXN_ID
++            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
++              struct.txnId = iprot.readI64();
++              struct.setTxnIdIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
++          case 7: // VALID_WRITE_ID_LIST
++            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
++              struct.validWriteIdList = iprot.readString();
++              struct.setValidWriteIdListIsSet(true);
++            } else { 
++              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
++            }
++            break;
+           default:
+             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+         }
+         iprot.readFieldEnd();
+       }
+       iprot.readStructEnd();
+       struct.validate();
+     }
+ 
+     public void write(org.apache.thrift.protocol.TProtocol oprot, PartitionsStatsRequest struct) throws org.apache.thrift.TException {
+       struct.validate();
+ 
+       oprot.writeStructBegin(STRUCT_DESC);
+       if (struct.dbName != null) {
+         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
+         oprot.writeString(struct.dbName);
+         oprot.writeFieldEnd();
+       }
+       if (struct.tblName != null) {
+         oprot.writeFieldBegin(TBL_NAME_FIELD_DESC);
+         oprot.writeString(struct.tblName);
+         oprot.writeFieldEnd();
+       }
+       if (struct.colNames != null) {
+         oprot.writeFieldBegin(COL_NAMES_FIELD_DESC);
+         {
+           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.colNames.size()));
+           for (String _iter464 : struct.colNames)
+           {
+             oprot.writeString(_iter464);
+           }
+           oprot.writeListEnd();
+         }
+         oprot.writeFieldEnd();
+       }
+       if (struct.partNames != null) {
+         oprot.writeFieldBegin(PART_NAMES_FIELD_DESC);
+         {
+           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.partNames.size()));
+           for (String _iter465 : struct.partNames)
+           {
+             oprot.writeString(_iter465);
+           }
+           oprot.writeListEnd();
+         }
+         oprot.writeFieldEnd();
+       }
+       if (struct.catName != null) {
+         if (struct.isSetCatName()) {
+           oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+           oprot.writeString(struct.catName);
+           oprot.writeFieldEnd();
+         }
+       }
++      if (struct.isSetTxnId()) {
++        oprot.writeFieldBegin(TXN_ID_FIELD_DESC);
++        oprot.writeI64(struct.txnId);
++        oprot.writeFieldEnd();
++      }
++      if (struct.validWriteIdList != null) {
++        if (struct.isSetValidWriteIdList()) {
++          oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
++          oprot.writeString(struct.validWriteIdList);
++          oprot.writeFieldEnd();
++        }
++      }
+       oprot.writeFieldStop();
+       oprot.writeStructEnd();
+     }
+ 
+   }
+ 
+   private static class PartitionsStatsRequestTupleSchemeFactory implements SchemeFactory {
+     public PartitionsStatsRequestTupleScheme getScheme() {
+       return new PartitionsStatsRequestTupleScheme();
+     }
+   }
+ 
+   private static class PartitionsStatsRequestTupleScheme extends TupleScheme<PartitionsStatsRequest> {
+ 
+     @Override
+     public void write(org.apache.thrift.protocol.TProtocol prot, PartitionsStatsRequest struct) throws org.apache.thrift.TException {
+       TTupleProtocol oprot = (TTupleProtocol) prot;
+       oprot.writeString(struct.dbName);
+       oprot.writeString(struct.tblName);
+       {
+         oprot.writeI32(struct.colNames.size());
+         for (String _iter466 : struct.colNames)
+         {
+           oprot.writeString(_iter466);
+         }
+       }
+       {
+         oprot.writeI32(struct.partNames.size());
+         for (String _iter467 : struct.partNames)
+         {
+           oprot.writeString(_iter467);
+         }
+       }
+       BitSet optionals = new BitSet();
+       if (struct.isSetCatName()) {
+         optionals.set(0);
+       }
 -      oprot.writeBitSet(optionals, 1);
++      if (struct.isSetTxnId()) {
++        optionals.set(1);
++      }
++      if (struct.isSetValidWriteIdList()) {
++        optionals.set(2);
++      }
++      oprot.writeBitSet(optionals, 3);
+       if (struct.isSetCatName()) {
+         oprot.writeString(struct.catName);
+       }
++      if (struct.isSetTxnId()) {
++        oprot.writeI64(struct.txnId);
++      }
++      if (struct.isSetValidWriteIdList()) {
++        oprot.writeString(struct.validWriteIdList);
++      }
+     }
+ 
+     @Override
+     public void read(org.apache.thrift.protocol.TProtocol prot, PartitionsStatsRequest struct) throws org.apache.thrift.TException {
+       TTupleProtocol iprot = (TTupleProtocol) prot;
+       struct.dbName = iprot.readString();
+       struct.setDbNameIsSet(true);
+       struct.tblName = iprot.readString();
+       struct.setTblNameIsSet(true);
+       {
+         org.apache.thrift.protocol.TList _list468 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+         struct.colNames = new ArrayList<String>(_list468.size);
+         String _elem469;
+         for (int _i470 = 0; _i470 < _list468.size; ++_i470)
+         {
+           _elem469 = iprot.readString();
+           struct.colNames.add(_elem469);
+         }
+       }
+       struct.setColNamesIsSet(true);
+       {
+         org.apache.thrift.protocol.TList _list471 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+         struct.partNames = new ArrayList<String>(_list471.size);
+         String _elem472;
+         for (int _i473 = 0; _i473 < _list471.size; ++_i473)
+         {
+           _elem472 = iprot.readString();
+           struct.partNames.add(_elem472);
+         }
+       }
+       struct.setPartNamesIsSet(true);
 -      BitSet incoming = iprot.readBitSet(1);
++      BitSet incoming = iprot.readBitSet(3);
+       if (incoming.get(0)) {
+         struct.catName = iprot.readString();
+         struct.setCatNameIsSet(true);
+       }
++      if (incoming.get(1)) {
++        struct.txnId = iprot.readI64();
++        struct.setTxnIdIsSet(true);
++      }
++      if (incoming.get(2)) {
++        struct.validWriteIdList = iprot.readString();
++        struct.setValidWriteIdListIsSet(true);
++      }
+     }
+   }
+ 
+ }
+