You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by vi...@apache.org on 2020/06/03 16:50:00 UTC

[hive] branch master updated: HIVE-22017: Keep HMS interfaces backward compatible with changes for HIVE-21637 (Kishen Das, reviewed by Vihang Karajgaonkar)

This is an automated email from the ASF dual-hosted git repository.

vihangk1 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 847673a  HIVE-22017: Keep HMS interfaces backward compatible with changes for HIVE-21637 (Kishen Das, reviewed by Vihang Karajgaonkar)
847673a is described below

commit 847673a6704530441a4013066f4c82943aa03245
Author: Kishen Das <ki...@cloudera.com>
AuthorDate: Wed Jun 3 09:40:33 2020 -0700

    HIVE-22017: Keep HMS interfaces backward compatible with changes for HIVE-21637 (Kishen Das, reviewed by Vihang Karajgaonkar)
---
 ql/src/gen/thrift/gen-cpp/queryplan_types.cpp      |     2 +-
 ...ableStatsRequest.java => GetFieldsRequest.java} |   579 +-
 .../hive/metastore/api/GetFieldsResponse.java      |   443 +
 ...equest.java => GetPartitionNamesPsRequest.java} |   678 +-
 .../metastore/api/GetPartitionNamesPsResponse.java |   438 +
 ...eStatsRequest.java => GetPartitionRequest.java} |   558 +-
 .../hive/metastore/api/GetPartitionResponse.java   |   394 +
 .../metastore/api/GetPartitionsByNamesRequest.java |   114 +-
 ...st.java => GetPartitionsPsWithAuthRequest.java} |  1033 +-
 .../api/GetPartitionsPsWithAuthResponse.java       |   443 +
 .../hive/metastore/api/GetPartitionsRequest.java   |   114 +-
 ...ableStatsRequest.java => GetSchemaRequest.java} |   579 +-
 .../hive/metastore/api/GetSchemaResponse.java      |   443 +
 .../hadoop/hive/metastore/api/GetTableRequest.java |   109 +-
 .../hive/metastore/api/PartitionValuesRequest.java |   114 +-
 .../metastore/api/PartitionsByExprRequest.java     |   215 +-
 ...bleStatsRequest.java => PartitionsRequest.java} |   583 +-
 .../hive/metastore/api/PartitionsResponse.java     |   443 +
 .../hive/metastore/api/TableStatsRequest.java      |   113 +-
 .../hive/metastore/api/ThriftHiveMetastore.java    | 45748 +++++++++++--------
 .../gen-php/metastore/ThriftHiveMetastore.php      |  4730 +-
 .../src/gen/thrift/gen-php/metastore/Types.php     |  2100 +
 .../hive_metastore/ThriftHiveMetastore-remote      |    42 +
 .../gen-py/hive_metastore/ThriftHiveMetastore.py   |  4458 +-
 .../src/gen/thrift/gen-py/hive_metastore/ttypes.py |  1442 +-
 .../src/gen/thrift/gen-rb/hive_metastore_types.rb  |   305 +-
 .../src/gen/thrift/gen-rb/thrift_hive_metastore.rb |   406 +
 .../hadoop/hive/metastore/HiveMetaStoreClient.java |   101 +-
 .../hadoop/hive/metastore/IMetaStoreClient.java    |    84 +-
 .../src/main/thrift/hive_metastore.thrift          |   124 +-
 .../hadoop/hive/metastore/HiveMetaStore.java       |   139 +-
 .../metastore/HiveMetaStoreClientPreCatalog.java   |    43 +-
 .../hive/metastore/client/TestGetPartitions.java   |    35 +-
 .../hive/metastore/client/TestListPartitions.java  |   141 +-
 34 files changed, 42643 insertions(+), 24650 deletions(-)

diff --git a/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp b/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
index c7338e1..e64ba65 100644
--- a/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
+++ b/ql/src/gen/thrift/gen-cpp/queryplan_types.cpp
@@ -153,7 +153,7 @@ const char* _kStageTypeNames[] = {
   "RANGER_DUMP",
   "RANGER_LOAD",
   "ATLAS_DUMP",
-  "ATLAS_LOAD
+  "ATLAS_LOAD"
 };
 const std::map<int, const char*> _StageType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(23, _kStageTypeValues, _kStageTypeNames), ::apache::thrift::TEnumIterator(-1, NULL, NULL));
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsRequest.java
similarity index 70%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsRequest.java
index 1eafee5..d8f349e 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsRequest.java
@@ -35,37 +35,37 @@ 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 TableStatsRequest implements org.apache.thrift.TBase<TableStatsRequest, TableStatsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<TableStatsRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TableStatsRequest");
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class GetFieldsRequest implements org.apache.thrift.TBase<GetFieldsRequest, GetFieldsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetFieldsRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetFieldsRequest");
 
-  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 CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField ENV_CONTEXT_FIELD_DESC = new org.apache.thrift.protocol.TField("envContext", org.apache.thrift.protocol.TType.STRUCT, (short)4);
   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)5);
-  private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new TableStatsRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new TableStatsRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new GetFieldsRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetFieldsRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private List<String> colNames; // required
-  private String catName; // optional
+  private EnvironmentContext envContext; // optional
   private String validWriteIdList; // optional
-  private String engine; // required
+  private long id; // 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"),
-    CAT_NAME((short)4, "catName"),
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    ENV_CONTEXT((short)4, "envContext"),
     VALID_WRITE_ID_LIST((short)5, "validWriteIdList"),
-    ENGINE((short)6, "engine");
+    ID((short)6, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -80,18 +80,18 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // COL_NAMES
-          return COL_NAMES;
-        case 4: // CAT_NAME
-          return CAT_NAME;
+        case 4: // ENV_CONTEXT
+          return ENV_CONTEXT;
         case 5: // VALID_WRITE_ID_LIST
           return VALID_WRITE_ID_LIST;
-        case 6: // ENGINE
-          return ENGINE;
+        case 6: // ID
+          return ID;
         default:
           return null;
       }
@@ -132,80 +132,101 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST};
+  private static final int __ID_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.ENV_CONTEXT,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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.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.ENV_CONTEXT, new org.apache.thrift.meta_data.FieldMetaData("envContext", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, EnvironmentContext.class)));
     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)));
-    tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TableStatsRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetFieldsRequest.class, metaDataMap);
   }
 
-  public TableStatsRequest() {
+  public GetFieldsRequest() {
+    this.id = -1L;
+
   }
 
-  public TableStatsRequest(
+  public GetFieldsRequest(
     String dbName,
-    String tblName,
-    List<String> colNames,
-    String engine)
+    String tblName)
   {
     this();
     this.dbName = dbName;
     this.tblName = tblName;
-    this.colNames = colNames;
-    this.engine = engine;
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public TableStatsRequest(TableStatsRequest other) {
+  public GetFieldsRequest(GetFieldsRequest other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     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.isSetCatName()) {
-      this.catName = other.catName;
+    if (other.isSetEnvContext()) {
+      this.envContext = new EnvironmentContext(other.envContext);
     }
     if (other.isSetValidWriteIdList()) {
       this.validWriteIdList = other.validWriteIdList;
     }
-    if (other.isSetEngine()) {
-      this.engine = other.engine;
-    }
+    this.id = other.id;
   }
 
-  public TableStatsRequest deepCopy() {
-    return new TableStatsRequest(this);
+  public GetFieldsRequest deepCopy() {
+    return new GetFieldsRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.colNames = null;
-    this.catName = null;
+    this.envContext = null;
     this.validWriteIdList = null;
-    this.engine = null;
+    this.id = -1L;
+
+  }
+
+  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 String getDbName() {
@@ -254,64 +275,26 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  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 String getCatName() {
-    return this.catName;
+  public EnvironmentContext getEnvContext() {
+    return this.envContext;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setEnvContext(EnvironmentContext envContext) {
+    this.envContext = envContext;
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetEnvContext() {
+    this.envContext = null;
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != null;
+  /** Returns true if field envContext is set (has been assigned a value) and false otherwise */
+  public boolean isSetEnvContext() {
+    return this.envContext != null;
   }
 
-  public void setCatNameIsSet(boolean value) {
+  public void setEnvContextIsSet(boolean value) {
     if (!value) {
-      this.catName = null;
+      this.envContext = null;
     }
   }
 
@@ -338,31 +321,38 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public String getEngine() {
-    return this.engine;
+  public long getId() {
+    return this.id;
   }
 
-  public void setEngine(String engine) {
-    this.engine = engine;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetEngine() {
-    this.engine = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field engine is set (has been assigned a value) and false otherwise */
-  public boolean isSetEngine() {
-    return this.engine != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setEngineIsSet(boolean value) {
-    if (!value) {
-      this.engine = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -379,19 +369,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case COL_NAMES:
+    case ENV_CONTEXT:
       if (value == null) {
-        unsetColNames();
+        unsetEnvContext();
       } else {
-        setColNames((List<String>)value);
-      }
-      break;
-
-    case CAT_NAME:
-      if (value == null) {
-        unsetCatName();
-      } else {
-        setCatName((String)value);
+        setEnvContext((EnvironmentContext)value);
       }
       break;
 
@@ -403,11 +385,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case ENGINE:
+    case ID:
       if (value == null) {
-        unsetEngine();
+        unsetId();
       } else {
-        setEngine((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -416,23 +398,23 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case COL_NAMES:
-      return getColNames();
-
-    case CAT_NAME:
-      return getCatName();
+    case ENV_CONTEXT:
+      return getEnvContext();
 
     case VALID_WRITE_ID_LIST:
       return getValidWriteIdList();
 
-    case ENGINE:
-      return getEngine();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -445,18 +427,18 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case COL_NAMES:
-      return isSetColNames();
-    case CAT_NAME:
-      return isSetCatName();
+    case ENV_CONTEXT:
+      return isSetEnvContext();
     case VALID_WRITE_ID_LIST:
       return isSetValidWriteIdList();
-    case ENGINE:
-      return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -465,15 +447,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof TableStatsRequest)
-      return this.equals((TableStatsRequest)that);
+    if (that instanceof GetFieldsRequest)
+      return this.equals((GetFieldsRequest)that);
     return false;
   }
 
-  public boolean equals(TableStatsRequest that) {
+  public boolean equals(GetFieldsRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -492,21 +483,12 @@ import org.slf4j.LoggerFactory;
         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))
+    boolean this_present_envContext = true && this.isSetEnvContext();
+    boolean that_present_envContext = true && that.isSetEnvContext();
+    if (this_present_envContext || that_present_envContext) {
+      if (!(this_present_envContext && that_present_envContext))
         return false;
-      if (!this.colNames.equals(that.colNames))
-        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))
+      if (!this.envContext.equals(that.envContext))
         return false;
     }
 
@@ -519,12 +501,12 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_engine = true && this.isSetEngine();
-    boolean that_present_engine = true && that.isSetEngine();
-    if (this_present_engine || that_present_engine) {
-      if (!(this_present_engine && that_present_engine))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.engine.equals(that.engine))
+      if (this.id != that.id)
         return false;
     }
 
@@ -535,6 +517,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
     boolean present_dbName = true && (isSetDbName());
     list.add(present_dbName);
     if (present_dbName)
@@ -545,73 +532,68 @@ import org.slf4j.LoggerFactory;
     if (present_tblName)
       list.add(tblName);
 
-    boolean present_colNames = true && (isSetColNames());
-    list.add(present_colNames);
-    if (present_colNames)
-      list.add(colNames);
-
-    boolean present_catName = true && (isSetCatName());
-    list.add(present_catName);
-    if (present_catName)
-      list.add(catName);
+    boolean present_envContext = true && (isSetEnvContext());
+    list.add(present_envContext);
+    if (present_envContext)
+      list.add(envContext);
 
     boolean present_validWriteIdList = true && (isSetValidWriteIdList());
     list.add(present_validWriteIdList);
     if (present_validWriteIdList)
       list.add(validWriteIdList);
 
-    boolean present_engine = true && (isSetEngine());
-    list.add(present_engine);
-    if (present_engine)
-      list.add(engine);
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
 
     return list.hashCode();
   }
 
   @Override
-  public int compareTo(TableStatsRequest other) {
+  public int compareTo(GetFieldsRequest other) {
     if (!getClass().equals(other.getClass())) {
       return getClass().getName().compareTo(other.getClass().getName());
     }
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDbName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+    if (isSetCatName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTblName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+    if (isSetDbName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetColNames()).compareTo(other.isSetColNames());
+    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetColNames()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.colNames, other.colNames);
+    if (isSetTblName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+    lastComparison = Boolean.valueOf(isSetEnvContext()).compareTo(other.isSetEnvContext());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCatName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+    if (isSetEnvContext()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.envContext, other.envContext);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -626,12 +608,12 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetEngine()).compareTo(other.isSetEngine());
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetEngine()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.engine, other.engine);
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -653,9 +635,19 @@ import org.slf4j.LoggerFactory;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("TableStatsRequest(");
+    StringBuilder sb = new StringBuilder("GetFieldsRequest(");
     boolean first = true;
 
+    if (isSetCatName()) {
+      sb.append("catName:");
+      if (this.catName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.catName);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
     sb.append("dbName:");
     if (this.dbName == null) {
       sb.append("null");
@@ -671,21 +663,13 @@ import org.slf4j.LoggerFactory;
       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 (isSetCatName()) {
+    if (isSetEnvContext()) {
       if (!first) sb.append(", ");
-      sb.append("catName:");
-      if (this.catName == null) {
+      sb.append("envContext:");
+      if (this.envContext == null) {
         sb.append("null");
       } else {
-        sb.append(this.catName);
+        sb.append(this.envContext);
       }
       first = false;
     }
@@ -699,14 +683,12 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
-    if (!first) sb.append(", ");
-    sb.append("engine:");
-    if (this.engine == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.engine);
+    if (isSetId()) {
+      if (!first) sb.append(", ");
+      sb.append("id:");
+      sb.append(this.id);
+      first = false;
     }
-    first = false;
     sb.append(")");
     return sb.toString();
   }
@@ -721,15 +703,10 @@ import org.slf4j.LoggerFactory;
       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 (!isSetEngine()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'engine' is unset! Struct:" + toString());
-    }
-
     // check for sub-struct validity
+    if (envContext != null) {
+      envContext.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -742,21 +719,23 @@ import org.slf4j.LoggerFactory;
 
   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 TableStatsRequestStandardSchemeFactory implements SchemeFactory {
-    public TableStatsRequestStandardScheme getScheme() {
-      return new TableStatsRequestStandardScheme();
+  private static class GetFieldsRequestStandardSchemeFactory implements SchemeFactory {
+    public GetFieldsRequestStandardScheme getScheme() {
+      return new GetFieldsRequestStandardScheme();
     }
   }
 
-  private static class TableStatsRequestStandardScheme extends StandardScheme<TableStatsRequest> {
+  private static class GetFieldsRequestStandardScheme extends StandardScheme<GetFieldsRequest> {
 
-    public void read(org.apache.thrift.protocol.TProtocol iprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetFieldsRequest struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
       iprot.readStructBegin();
       while (true)
@@ -766,44 +745,35 @@ import org.slf4j.LoggerFactory;
           break;
         }
         switch (schemeField.id) {
-          case 1: // DB_NAME
+          case 1: // CAT_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.dbName = iprot.readString();
-              struct.setDbNameIsSet(true);
+              struct.catName = iprot.readString();
+              struct.setCatNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // TBL_NAME
+          case 2: // DB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.tblName = iprot.readString();
-              struct.setTblNameIsSet(true);
+              struct.dbName = iprot.readString();
+              struct.setDbNameIsSet(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 _list490 = iprot.readListBegin();
-                struct.colNames = new ArrayList<String>(_list490.size);
-                String _elem491;
-                for (int _i492 = 0; _i492 < _list490.size; ++_i492)
-                {
-                  _elem491 = iprot.readString();
-                  struct.colNames.add(_elem491);
-                }
-                iprot.readListEnd();
-              }
-              struct.setColNamesIsSet(true);
+          case 3: // 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 4: // CAT_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.catName = iprot.readString();
-              struct.setCatNameIsSet(true);
+          case 4: // ENV_CONTEXT
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.envContext = new EnvironmentContext();
+              struct.envContext.read(iprot);
+              struct.setEnvContextIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -816,10 +786,10 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // ENGINE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.engine = iprot.readString();
-              struct.setEngineIsSet(true);
+          case 6: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -833,10 +803,17 @@ import org.slf4j.LoggerFactory;
       struct.validate();
     }
 
-    public void write(org.apache.thrift.protocol.TProtocol oprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol oprot, GetFieldsRequest struct) throws org.apache.thrift.TException {
       struct.validate();
 
       oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.catName != null) {
+        if (struct.isSetCatName()) {
+          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+          oprot.writeString(struct.catName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.dbName != null) {
         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
         oprot.writeString(struct.dbName);
@@ -847,22 +824,10 @@ import org.slf4j.LoggerFactory;
         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 _iter493 : struct.colNames)
-          {
-            oprot.writeString(_iter493);
-          }
-          oprot.writeListEnd();
-        }
-        oprot.writeFieldEnd();
-      }
-      if (struct.catName != null) {
-        if (struct.isSetCatName()) {
-          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
-          oprot.writeString(struct.catName);
+      if (struct.envContext != null) {
+        if (struct.isSetEnvContext()) {
+          oprot.writeFieldBegin(ENV_CONTEXT_FIELD_DESC);
+          struct.envContext.write(oprot);
           oprot.writeFieldEnd();
         }
       }
@@ -873,9 +838,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
-      if (struct.engine != null) {
-        oprot.writeFieldBegin(ENGINE_FIELD_DESC);
-        oprot.writeString(struct.engine);
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
         oprot.writeFieldEnd();
       }
       oprot.writeFieldStop();
@@ -884,72 +849,72 @@ import org.slf4j.LoggerFactory;
 
   }
 
-  private static class TableStatsRequestTupleSchemeFactory implements SchemeFactory {
-    public TableStatsRequestTupleScheme getScheme() {
-      return new TableStatsRequestTupleScheme();
+  private static class GetFieldsRequestTupleSchemeFactory implements SchemeFactory {
+    public GetFieldsRequestTupleScheme getScheme() {
+      return new GetFieldsRequestTupleScheme();
     }
   }
 
-  private static class TableStatsRequestTupleScheme extends TupleScheme<TableStatsRequest> {
+  private static class GetFieldsRequestTupleScheme extends TupleScheme<GetFieldsRequest> {
 
     @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetFieldsRequest 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 _iter494 : struct.colNames)
-        {
-          oprot.writeString(_iter494);
-        }
-      }
-      oprot.writeString(struct.engine);
       BitSet optionals = new BitSet();
       if (struct.isSetCatName()) {
         optionals.set(0);
       }
-      if (struct.isSetValidWriteIdList()) {
+      if (struct.isSetEnvContext()) {
         optionals.set(1);
       }
-      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(2);
+      }
+      if (struct.isSetId()) {
+        optionals.set(3);
+      }
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
+      if (struct.isSetEnvContext()) {
+        struct.envContext.write(oprot);
+      }
       if (struct.isSetValidWriteIdList()) {
         oprot.writeString(struct.validWriteIdList);
       }
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
+      }
     }
 
     @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetFieldsRequest 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 _list495 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.colNames = new ArrayList<String>(_list495.size);
-        String _elem496;
-        for (int _i497 = 0; _i497 < _list495.size; ++_i497)
-        {
-          _elem496 = iprot.readString();
-          struct.colNames.add(_elem496);
-        }
-      }
-      struct.setColNamesIsSet(true);
-      struct.engine = iprot.readString();
-      struct.setEngineIsSet(true);
-      BitSet incoming = iprot.readBitSet(2);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
       }
       if (incoming.get(1)) {
+        struct.envContext = new EnvironmentContext();
+        struct.envContext.read(iprot);
+        struct.setEnvContextIsSet(true);
+      }
+      if (incoming.get(2)) {
         struct.validWriteIdList = iprot.readString();
         struct.setValidWriteIdListIsSet(true);
       }
+      if (incoming.get(3)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsResponse.java
new file mode 100644
index 0000000..bfc9a6c
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetFieldsResponse.java
@@ -0,0 +1,443 @@
+/**
+ * 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 GetFieldsResponse implements org.apache.thrift.TBase<GetFieldsResponse, GetFieldsResponse._Fields>, java.io.Serializable, Cloneable, Comparable<GetFieldsResponse> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetFieldsResponse");
+
+  private static final org.apache.thrift.protocol.TField FIELDS_FIELD_DESC = new org.apache.thrift.protocol.TField("fields", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new GetFieldsResponseStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetFieldsResponseTupleSchemeFactory());
+  }
+
+  private List<FieldSchema> fields; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    FIELDS((short)1, "fields");
+
+    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: // FIELDS
+          return FIELDS;
+        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
+  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.FIELDS, new org.apache.thrift.meta_data.FieldMetaData("fields", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, FieldSchema.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetFieldsResponse.class, metaDataMap);
+  }
+
+  public GetFieldsResponse() {
+  }
+
+  public GetFieldsResponse(
+    List<FieldSchema> fields)
+  {
+    this();
+    this.fields = fields;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public GetFieldsResponse(GetFieldsResponse other) {
+    if (other.isSetFields()) {
+      List<FieldSchema> __this__fields = new ArrayList<FieldSchema>(other.fields.size());
+      for (FieldSchema other_element : other.fields) {
+        __this__fields.add(new FieldSchema(other_element));
+      }
+      this.fields = __this__fields;
+    }
+  }
+
+  public GetFieldsResponse deepCopy() {
+    return new GetFieldsResponse(this);
+  }
+
+  @Override
+  public void clear() {
+    this.fields = null;
+  }
+
+  public int getFieldsSize() {
+    return (this.fields == null) ? 0 : this.fields.size();
+  }
+
+  public java.util.Iterator<FieldSchema> getFieldsIterator() {
+    return (this.fields == null) ? null : this.fields.iterator();
+  }
+
+  public void addToFields(FieldSchema elem) {
+    if (this.fields == null) {
+      this.fields = new ArrayList<FieldSchema>();
+    }
+    this.fields.add(elem);
+  }
+
+  public List<FieldSchema> getFields() {
+    return this.fields;
+  }
+
+  public void setFields(List<FieldSchema> fields) {
+    this.fields = fields;
+  }
+
+  public void unsetFields() {
+    this.fields = null;
+  }
+
+  /** Returns true if field fields is set (has been assigned a value) and false otherwise */
+  public boolean isSetFields() {
+    return this.fields != null;
+  }
+
+  public void setFieldsIsSet(boolean value) {
+    if (!value) {
+      this.fields = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case FIELDS:
+      if (value == null) {
+        unsetFields();
+      } else {
+        setFields((List<FieldSchema>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case FIELDS:
+      return getFields();
+
+    }
+    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 FIELDS:
+      return isSetFields();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof GetFieldsResponse)
+      return this.equals((GetFieldsResponse)that);
+    return false;
+  }
+
+  public boolean equals(GetFieldsResponse that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_fields = true && this.isSetFields();
+    boolean that_present_fields = true && that.isSetFields();
+    if (this_present_fields || that_present_fields) {
+      if (!(this_present_fields && that_present_fields))
+        return false;
+      if (!this.fields.equals(that.fields))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_fields = true && (isSetFields());
+    list.add(present_fields);
+    if (present_fields)
+      list.add(fields);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(GetFieldsResponse other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetFields()).compareTo(other.isSetFields());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFields()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.fields, other.fields);
+      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("GetFieldsResponse(");
+    boolean first = true;
+
+    sb.append("fields:");
+    if (this.fields == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.fields);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetFields()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'fields' 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 {
+      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 GetFieldsResponseStandardSchemeFactory implements SchemeFactory {
+    public GetFieldsResponseStandardScheme getScheme() {
+      return new GetFieldsResponseStandardScheme();
+    }
+  }
+
+  private static class GetFieldsResponseStandardScheme extends StandardScheme<GetFieldsResponse> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetFieldsResponse 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: // FIELDS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1208 = iprot.readListBegin();
+                struct.fields = new ArrayList<FieldSchema>(_list1208.size);
+                FieldSchema _elem1209;
+                for (int _i1210 = 0; _i1210 < _list1208.size; ++_i1210)
+                {
+                  _elem1209 = new FieldSchema();
+                  _elem1209.read(iprot);
+                  struct.fields.add(_elem1209);
+                }
+                iprot.readListEnd();
+              }
+              struct.setFieldsIsSet(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, GetFieldsResponse struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.fields != null) {
+        oprot.writeFieldBegin(FIELDS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.fields.size()));
+          for (FieldSchema _iter1211 : struct.fields)
+          {
+            _iter1211.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class GetFieldsResponseTupleSchemeFactory implements SchemeFactory {
+    public GetFieldsResponseTupleScheme getScheme() {
+      return new GetFieldsResponseTupleScheme();
+    }
+  }
+
+  private static class GetFieldsResponseTupleScheme extends TupleScheme<GetFieldsResponse> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetFieldsResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      {
+        oprot.writeI32(struct.fields.size());
+        for (FieldSchema _iter1212 : struct.fields)
+        {
+          _iter1212.write(oprot);
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetFieldsResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      {
+        org.apache.thrift.protocol.TList _list1213 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.fields = new ArrayList<FieldSchema>(_list1213.size);
+        FieldSchema _elem1214;
+        for (int _i1215 = 0; _i1215 < _list1213.size; ++_i1215)
+        {
+          _elem1214 = new FieldSchema();
+          _elem1214.read(iprot);
+          struct.fields.add(_elem1214);
+        }
+      }
+      struct.setFieldsIsSet(true);
+    }
+  }
+
+}
+
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsRequest.java
similarity index 64%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsRequest.java
index c55da73..bfeeb07 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsRequest.java
@@ -35,40 +35,40 @@ 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 PartitionsByExprRequest implements org.apache.thrift.TBase<PartitionsByExprRequest, PartitionsByExprRequest._Fields>, java.io.Serializable, Cloneable, Comparable<PartitionsByExprRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PartitionsByExprRequest");
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class GetPartitionNamesPsRequest implements org.apache.thrift.TBase<GetPartitionNamesPsRequest, GetPartitionNamesPsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionNamesPsRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionNamesPsRequest");
 
-  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 EXPR_FIELD_DESC = new org.apache.thrift.protocol.TField("expr", org.apache.thrift.protocol.TType.STRING, (short)3);
-  private static final org.apache.thrift.protocol.TField DEFAULT_PARTITION_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("defaultPartitionName", org.apache.thrift.protocol.TType.STRING, (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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField PART_VALUES_FIELD_DESC = new org.apache.thrift.protocol.TField("partValues", org.apache.thrift.protocol.TType.LIST, (short)4);
   private static final org.apache.thrift.protocol.TField MAX_PARTS_FIELD_DESC = new org.apache.thrift.protocol.TField("maxParts", org.apache.thrift.protocol.TType.I16, (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 ORDER_FIELD_DESC = new org.apache.thrift.protocol.TField("order", org.apache.thrift.protocol.TType.STRING, (short)7);
+  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)6);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)7);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new PartitionsByExprRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new PartitionsByExprRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new GetPartitionNamesPsRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionNamesPsRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private ByteBuffer expr; // required
-  private String defaultPartitionName; // optional
+  private List<String> partValues; // optional
   private short maxParts; // optional
-  private String catName; // optional
-  private String order; // optional
+  private String validWriteIdList; // optional
+  private long id; // 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"),
-    EXPR((short)3, "expr"),
-    DEFAULT_PARTITION_NAME((short)4, "defaultPartitionName"),
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    PART_VALUES((short)4, "partValues"),
     MAX_PARTS((short)5, "maxParts"),
-    CAT_NAME((short)6, "catName"),
-    ORDER((short)7, "order");
+    VALID_WRITE_ID_LIST((short)6, "validWriteIdList"),
+    ID((short)7, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -83,20 +83,20 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // EXPR
-          return EXPR;
-        case 4: // DEFAULT_PARTITION_NAME
-          return DEFAULT_PARTITION_NAME;
+        case 4: // PART_VALUES
+          return PART_VALUES;
         case 5: // MAX_PARTS
           return MAX_PARTS;
-        case 6: // CAT_NAME
-          return CAT_NAME;
-        case 7: // ORDER
-          return ORDER;
+        case 6: // VALID_WRITE_ID_LIST
+          return VALID_WRITE_ID_LIST;
+        case 7: // ID
+          return ID;
         default:
           return null;
       }
@@ -138,85 +138,110 @@ import org.slf4j.LoggerFactory;
 
   // isset id assignments
   private static final int __MAXPARTS_ISSET_ID = 0;
+  private static final int __ID_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.DEFAULT_PARTITION_NAME,_Fields.MAX_PARTS,_Fields.CAT_NAME,_Fields.ORDER};
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.PART_VALUES,_Fields.MAX_PARTS,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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.EXPR, new org.apache.thrift.meta_data.FieldMetaData("expr", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
-    tmpMap.put(_Fields.DEFAULT_PARTITION_NAME, new org.apache.thrift.meta_data.FieldMetaData("defaultPartitionName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.PART_VALUES, new org.apache.thrift.meta_data.FieldMetaData("partValues", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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.MAX_PARTS, new org.apache.thrift.meta_data.FieldMetaData("maxParts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16)));
-    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.ORDER, new org.apache.thrift.meta_data.FieldMetaData("order", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    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)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PartitionsByExprRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionNamesPsRequest.class, metaDataMap);
   }
 
-  public PartitionsByExprRequest() {
+  public GetPartitionNamesPsRequest() {
     this.maxParts = (short)-1;
 
+    this.id = -1L;
+
   }
 
-  public PartitionsByExprRequest(
+  public GetPartitionNamesPsRequest(
     String dbName,
-    String tblName,
-    ByteBuffer expr)
+    String tblName)
   {
     this();
     this.dbName = dbName;
     this.tblName = tblName;
-    this.expr = org.apache.thrift.TBaseHelper.copyBinary(expr);
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public PartitionsByExprRequest(PartitionsByExprRequest other) {
+  public GetPartitionNamesPsRequest(GetPartitionNamesPsRequest other) {
     __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     if (other.isSetDbName()) {
       this.dbName = other.dbName;
     }
     if (other.isSetTblName()) {
       this.tblName = other.tblName;
     }
-    if (other.isSetExpr()) {
-      this.expr = org.apache.thrift.TBaseHelper.copyBinary(other.expr);
-    }
-    if (other.isSetDefaultPartitionName()) {
-      this.defaultPartitionName = other.defaultPartitionName;
+    if (other.isSetPartValues()) {
+      List<String> __this__partValues = new ArrayList<String>(other.partValues);
+      this.partValues = __this__partValues;
     }
     this.maxParts = other.maxParts;
-    if (other.isSetCatName()) {
-      this.catName = other.catName;
-    }
-    if (other.isSetOrder()) {
-      this.order = other.order;
+    if (other.isSetValidWriteIdList()) {
+      this.validWriteIdList = other.validWriteIdList;
     }
+    this.id = other.id;
   }
 
-  public PartitionsByExprRequest deepCopy() {
-    return new PartitionsByExprRequest(this);
+  public GetPartitionNamesPsRequest deepCopy() {
+    return new GetPartitionNamesPsRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.expr = null;
-    this.defaultPartitionName = null;
+    this.partValues = null;
     this.maxParts = (short)-1;
 
+    this.validWriteIdList = null;
+    this.id = -1L;
+
+  }
+
+  public String getCatName() {
+    return this.catName;
+  }
+
+  public void setCatName(String catName) {
+    this.catName = catName;
+  }
+
+  public void unsetCatName() {
     this.catName = null;
-    this.order = 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 String getDbName() {
@@ -265,58 +290,41 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public byte[] getExpr() {
-    setExpr(org.apache.thrift.TBaseHelper.rightSize(expr));
-    return expr == null ? null : expr.array();
-  }
-
-  public ByteBuffer bufferForExpr() {
-    return org.apache.thrift.TBaseHelper.copyBinary(expr);
-  }
-
-  public void setExpr(byte[] expr) {
-    this.expr = expr == null ? (ByteBuffer)null : ByteBuffer.wrap(Arrays.copyOf(expr, expr.length));
-  }
-
-  public void setExpr(ByteBuffer expr) {
-    this.expr = org.apache.thrift.TBaseHelper.copyBinary(expr);
+  public int getPartValuesSize() {
+    return (this.partValues == null) ? 0 : this.partValues.size();
   }
 
-  public void unsetExpr() {
-    this.expr = null;
+  public java.util.Iterator<String> getPartValuesIterator() {
+    return (this.partValues == null) ? null : this.partValues.iterator();
   }
 
-  /** Returns true if field expr is set (has been assigned a value) and false otherwise */
-  public boolean isSetExpr() {
-    return this.expr != null;
-  }
-
-  public void setExprIsSet(boolean value) {
-    if (!value) {
-      this.expr = null;
+  public void addToPartValues(String elem) {
+    if (this.partValues == null) {
+      this.partValues = new ArrayList<String>();
     }
+    this.partValues.add(elem);
   }
 
-  public String getDefaultPartitionName() {
-    return this.defaultPartitionName;
+  public List<String> getPartValues() {
+    return this.partValues;
   }
 
-  public void setDefaultPartitionName(String defaultPartitionName) {
-    this.defaultPartitionName = defaultPartitionName;
+  public void setPartValues(List<String> partValues) {
+    this.partValues = partValues;
   }
 
-  public void unsetDefaultPartitionName() {
-    this.defaultPartitionName = null;
+  public void unsetPartValues() {
+    this.partValues = null;
   }
 
-  /** Returns true if field defaultPartitionName is set (has been assigned a value) and false otherwise */
-  public boolean isSetDefaultPartitionName() {
-    return this.defaultPartitionName != null;
+  /** Returns true if field partValues is set (has been assigned a value) and false otherwise */
+  public boolean isSetPartValues() {
+    return this.partValues != null;
   }
 
-  public void setDefaultPartitionNameIsSet(boolean value) {
+  public void setPartValuesIsSet(boolean value) {
     if (!value) {
-      this.defaultPartitionName = null;
+      this.partValues = null;
     }
   }
 
@@ -342,54 +350,61 @@ import org.slf4j.LoggerFactory;
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MAXPARTS_ISSET_ID, value);
   }
 
-  public String getCatName() {
-    return this.catName;
+  public String getValidWriteIdList() {
+    return this.validWriteIdList;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setValidWriteIdList(String validWriteIdList) {
+    this.validWriteIdList = validWriteIdList;
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetValidWriteIdList() {
+    this.validWriteIdList = null;
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != 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 setCatNameIsSet(boolean value) {
+  public void setValidWriteIdListIsSet(boolean value) {
     if (!value) {
-      this.catName = null;
+      this.validWriteIdList = null;
     }
   }
 
-  public String getOrder() {
-    return this.order;
+  public long getId() {
+    return this.id;
   }
 
-  public void setOrder(String order) {
-    this.order = order;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetOrder() {
-    this.order = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field order is set (has been assigned a value) and false otherwise */
-  public boolean isSetOrder() {
-    return this.order != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setOrderIsSet(boolean value) {
-    if (!value) {
-      this.order = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -406,19 +421,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case EXPR:
+    case PART_VALUES:
       if (value == null) {
-        unsetExpr();
+        unsetPartValues();
       } else {
-        setExpr((ByteBuffer)value);
-      }
-      break;
-
-    case DEFAULT_PARTITION_NAME:
-      if (value == null) {
-        unsetDefaultPartitionName();
-      } else {
-        setDefaultPartitionName((String)value);
+        setPartValues((List<String>)value);
       }
       break;
 
@@ -430,19 +437,19 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case CAT_NAME:
+    case VALID_WRITE_ID_LIST:
       if (value == null) {
-        unsetCatName();
+        unsetValidWriteIdList();
       } else {
-        setCatName((String)value);
+        setValidWriteIdList((String)value);
       }
       break;
 
-    case ORDER:
+    case ID:
       if (value == null) {
-        unsetOrder();
+        unsetId();
       } else {
-        setOrder((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -451,26 +458,26 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case EXPR:
-      return getExpr();
-
-    case DEFAULT_PARTITION_NAME:
-      return getDefaultPartitionName();
+    case PART_VALUES:
+      return getPartValues();
 
     case MAX_PARTS:
       return getMaxParts();
 
-    case CAT_NAME:
-      return getCatName();
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
 
-    case ORDER:
-      return getOrder();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -483,20 +490,20 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case EXPR:
-      return isSetExpr();
-    case DEFAULT_PARTITION_NAME:
-      return isSetDefaultPartitionName();
+    case PART_VALUES:
+      return isSetPartValues();
     case MAX_PARTS:
       return isSetMaxParts();
-    case CAT_NAME:
-      return isSetCatName();
-    case ORDER:
-      return isSetOrder();
+    case VALID_WRITE_ID_LIST:
+      return isSetValidWriteIdList();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -505,15 +512,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof PartitionsByExprRequest)
-      return this.equals((PartitionsByExprRequest)that);
+    if (that instanceof GetPartitionNamesPsRequest)
+      return this.equals((GetPartitionNamesPsRequest)that);
     return false;
   }
 
-  public boolean equals(PartitionsByExprRequest that) {
+  public boolean equals(GetPartitionNamesPsRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -532,21 +548,12 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_expr = true && this.isSetExpr();
-    boolean that_present_expr = true && that.isSetExpr();
-    if (this_present_expr || that_present_expr) {
-      if (!(this_present_expr && that_present_expr))
+    boolean this_present_partValues = true && this.isSetPartValues();
+    boolean that_present_partValues = true && that.isSetPartValues();
+    if (this_present_partValues || that_present_partValues) {
+      if (!(this_present_partValues && that_present_partValues))
         return false;
-      if (!this.expr.equals(that.expr))
-        return false;
-    }
-
-    boolean this_present_defaultPartitionName = true && this.isSetDefaultPartitionName();
-    boolean that_present_defaultPartitionName = true && that.isSetDefaultPartitionName();
-    if (this_present_defaultPartitionName || that_present_defaultPartitionName) {
-      if (!(this_present_defaultPartitionName && that_present_defaultPartitionName))
-        return false;
-      if (!this.defaultPartitionName.equals(that.defaultPartitionName))
+      if (!this.partValues.equals(that.partValues))
         return false;
     }
 
@@ -559,21 +566,21 @@ import org.slf4j.LoggerFactory;
         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))
+    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.catName.equals(that.catName))
+      if (!this.validWriteIdList.equals(that.validWriteIdList))
         return false;
     }
 
-    boolean this_present_order = true && this.isSetOrder();
-    boolean that_present_order = true && that.isSetOrder();
-    if (this_present_order || that_present_order) {
-      if (!(this_present_order && that_present_order))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.order.equals(that.order))
+      if (this.id != that.id)
         return false;
     }
 
@@ -584,6 +591,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
     boolean present_dbName = true && (isSetDbName());
     list.add(present_dbName);
     if (present_dbName)
@@ -594,78 +606,73 @@ import org.slf4j.LoggerFactory;
     if (present_tblName)
       list.add(tblName);
 
-    boolean present_expr = true && (isSetExpr());
-    list.add(present_expr);
-    if (present_expr)
-      list.add(expr);
-
-    boolean present_defaultPartitionName = true && (isSetDefaultPartitionName());
-    list.add(present_defaultPartitionName);
-    if (present_defaultPartitionName)
-      list.add(defaultPartitionName);
+    boolean present_partValues = true && (isSetPartValues());
+    list.add(present_partValues);
+    if (present_partValues)
+      list.add(partValues);
 
     boolean present_maxParts = true && (isSetMaxParts());
     list.add(present_maxParts);
     if (present_maxParts)
       list.add(maxParts);
 
-    boolean present_catName = true && (isSetCatName());
-    list.add(present_catName);
-    if (present_catName)
-      list.add(catName);
+    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
+    list.add(present_validWriteIdList);
+    if (present_validWriteIdList)
+      list.add(validWriteIdList);
 
-    boolean present_order = true && (isSetOrder());
-    list.add(present_order);
-    if (present_order)
-      list.add(order);
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
 
     return list.hashCode();
   }
 
   @Override
-  public int compareTo(PartitionsByExprRequest other) {
+  public int compareTo(GetPartitionNamesPsRequest other) {
     if (!getClass().equals(other.getClass())) {
       return getClass().getName().compareTo(other.getClass().getName());
     }
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDbName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+    if (isSetCatName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTblName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+    if (isSetDbName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetExpr()).compareTo(other.isSetExpr());
+    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetExpr()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.expr, other.expr);
+    if (isSetTblName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetDefaultPartitionName()).compareTo(other.isSetDefaultPartitionName());
+    lastComparison = Boolean.valueOf(isSetPartValues()).compareTo(other.isSetPartValues());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDefaultPartitionName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.defaultPartitionName, other.defaultPartitionName);
+    if (isSetPartValues()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partValues, other.partValues);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -680,22 +687,22 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+    lastComparison = Boolean.valueOf(isSetValidWriteIdList()).compareTo(other.isSetValidWriteIdList());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCatName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+    if (isSetValidWriteIdList()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validWriteIdList, other.validWriteIdList);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetOrder()).compareTo(other.isSetOrder());
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetOrder()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.order, other.order);
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -717,9 +724,19 @@ import org.slf4j.LoggerFactory;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("PartitionsByExprRequest(");
+    StringBuilder sb = new StringBuilder("GetPartitionNamesPsRequest(");
     boolean first = true;
 
+    if (isSetCatName()) {
+      sb.append("catName:");
+      if (this.catName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.catName);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
     sb.append("dbName:");
     if (this.dbName == null) {
       sb.append("null");
@@ -735,21 +752,13 @@ import org.slf4j.LoggerFactory;
       sb.append(this.tblName);
     }
     first = false;
-    if (!first) sb.append(", ");
-    sb.append("expr:");
-    if (this.expr == null) {
-      sb.append("null");
-    } else {
-      org.apache.thrift.TBaseHelper.toString(this.expr, sb);
-    }
-    first = false;
-    if (isSetDefaultPartitionName()) {
+    if (isSetPartValues()) {
       if (!first) sb.append(", ");
-      sb.append("defaultPartitionName:");
-      if (this.defaultPartitionName == null) {
+      sb.append("partValues:");
+      if (this.partValues == null) {
         sb.append("null");
       } else {
-        sb.append(this.defaultPartitionName);
+        sb.append(this.partValues);
       }
       first = false;
     }
@@ -759,24 +768,20 @@ import org.slf4j.LoggerFactory;
       sb.append(this.maxParts);
       first = false;
     }
-    if (isSetCatName()) {
+    if (isSetValidWriteIdList()) {
       if (!first) sb.append(", ");
-      sb.append("catName:");
-      if (this.catName == null) {
+      sb.append("validWriteIdList:");
+      if (this.validWriteIdList == null) {
         sb.append("null");
       } else {
-        sb.append(this.catName);
+        sb.append(this.validWriteIdList);
       }
       first = false;
     }
-    if (isSetOrder()) {
+    if (isSetId()) {
       if (!first) sb.append(", ");
-      sb.append("order:");
-      if (this.order == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.order);
-      }
+      sb.append("id:");
+      sb.append(this.id);
       first = false;
     }
     sb.append(")");
@@ -793,10 +798,6 @@ import org.slf4j.LoggerFactory;
       throw new org.apache.thrift.protocol.TProtocolException("Required field 'tblName' is unset! Struct:" + toString());
     }
 
-    if (!isSetExpr()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'expr' is unset! Struct:" + toString());
-    }
-
     // check for sub-struct validity
   }
 
@@ -818,15 +819,15 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  private static class PartitionsByExprRequestStandardSchemeFactory implements SchemeFactory {
-    public PartitionsByExprRequestStandardScheme getScheme() {
-      return new PartitionsByExprRequestStandardScheme();
+  private static class GetPartitionNamesPsRequestStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionNamesPsRequestStandardScheme getScheme() {
+      return new GetPartitionNamesPsRequestStandardScheme();
     }
   }
 
-  private static class PartitionsByExprRequestStandardScheme extends StandardScheme<PartitionsByExprRequest> {
+  private static class GetPartitionNamesPsRequestStandardScheme extends StandardScheme<GetPartitionNamesPsRequest> {
 
-    public void read(org.apache.thrift.protocol.TProtocol iprot, PartitionsByExprRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionNamesPsRequest struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
       iprot.readStructBegin();
       while (true)
@@ -836,34 +837,44 @@ import org.slf4j.LoggerFactory;
           break;
         }
         switch (schemeField.id) {
-          case 1: // DB_NAME
+          case 1: // CAT_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.dbName = iprot.readString();
-              struct.setDbNameIsSet(true);
+              struct.catName = iprot.readString();
+              struct.setCatNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // TBL_NAME
+          case 2: // DB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.tblName = iprot.readString();
-              struct.setTblNameIsSet(true);
+              struct.dbName = iprot.readString();
+              struct.setDbNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 3: // EXPR
+          case 3: // TBL_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.expr = iprot.readBinary();
-              struct.setExprIsSet(true);
+              struct.tblName = iprot.readString();
+              struct.setTblNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // DEFAULT_PARTITION_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.defaultPartitionName = iprot.readString();
-              struct.setDefaultPartitionNameIsSet(true);
+          case 4: // PART_VALUES
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1240 = iprot.readListBegin();
+                struct.partValues = new ArrayList<String>(_list1240.size);
+                String _elem1241;
+                for (int _i1242 = 0; _i1242 < _list1240.size; ++_i1242)
+                {
+                  _elem1241 = iprot.readString();
+                  struct.partValues.add(_elem1241);
+                }
+                iprot.readListEnd();
+              }
+              struct.setPartValuesIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -876,18 +887,18 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // CAT_NAME
+          case 6: // VALID_WRITE_ID_LIST
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.catName = iprot.readString();
-              struct.setCatNameIsSet(true);
+              struct.validWriteIdList = iprot.readString();
+              struct.setValidWriteIdListIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 7: // ORDER
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.order = iprot.readString();
-              struct.setOrderIsSet(true);
+          case 7: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -901,10 +912,17 @@ import org.slf4j.LoggerFactory;
       struct.validate();
     }
 
-    public void write(org.apache.thrift.protocol.TProtocol oprot, PartitionsByExprRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol oprot, GetPartitionNamesPsRequest struct) throws org.apache.thrift.TException {
       struct.validate();
 
       oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.catName != null) {
+        if (struct.isSetCatName()) {
+          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+          oprot.writeString(struct.catName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.dbName != null) {
         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
         oprot.writeString(struct.dbName);
@@ -915,15 +933,17 @@ import org.slf4j.LoggerFactory;
         oprot.writeString(struct.tblName);
         oprot.writeFieldEnd();
       }
-      if (struct.expr != null) {
-        oprot.writeFieldBegin(EXPR_FIELD_DESC);
-        oprot.writeBinary(struct.expr);
-        oprot.writeFieldEnd();
-      }
-      if (struct.defaultPartitionName != null) {
-        if (struct.isSetDefaultPartitionName()) {
-          oprot.writeFieldBegin(DEFAULT_PARTITION_NAME_FIELD_DESC);
-          oprot.writeString(struct.defaultPartitionName);
+      if (struct.partValues != null) {
+        if (struct.isSetPartValues()) {
+          oprot.writeFieldBegin(PART_VALUES_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.partValues.size()));
+            for (String _iter1243 : struct.partValues)
+            {
+              oprot.writeString(_iter1243);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -932,19 +952,17 @@ import org.slf4j.LoggerFactory;
         oprot.writeI16(struct.maxParts);
         oprot.writeFieldEnd();
       }
-      if (struct.catName != null) {
-        if (struct.isSetCatName()) {
-          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
-          oprot.writeString(struct.catName);
+      if (struct.validWriteIdList != null) {
+        if (struct.isSetValidWriteIdList()) {
+          oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
+          oprot.writeString(struct.validWriteIdList);
           oprot.writeFieldEnd();
         }
       }
-      if (struct.order != null) {
-        if (struct.isSetOrder()) {
-          oprot.writeFieldBegin(ORDER_FIELD_DESC);
-          oprot.writeString(struct.order);
-          oprot.writeFieldEnd();
-        }
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
+        oprot.writeFieldEnd();
       }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
@@ -952,73 +970,95 @@ import org.slf4j.LoggerFactory;
 
   }
 
-  private static class PartitionsByExprRequestTupleSchemeFactory implements SchemeFactory {
-    public PartitionsByExprRequestTupleScheme getScheme() {
-      return new PartitionsByExprRequestTupleScheme();
+  private static class GetPartitionNamesPsRequestTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionNamesPsRequestTupleScheme getScheme() {
+      return new GetPartitionNamesPsRequestTupleScheme();
     }
   }
 
-  private static class PartitionsByExprRequestTupleScheme extends TupleScheme<PartitionsByExprRequest> {
+  private static class GetPartitionNamesPsRequestTupleScheme extends TupleScheme<GetPartitionNamesPsRequest> {
 
     @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, PartitionsByExprRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionNamesPsRequest struct) throws org.apache.thrift.TException {
       TTupleProtocol oprot = (TTupleProtocol) prot;
       oprot.writeString(struct.dbName);
       oprot.writeString(struct.tblName);
-      oprot.writeBinary(struct.expr);
       BitSet optionals = new BitSet();
-      if (struct.isSetDefaultPartitionName()) {
+      if (struct.isSetCatName()) {
         optionals.set(0);
       }
-      if (struct.isSetMaxParts()) {
+      if (struct.isSetPartValues()) {
         optionals.set(1);
       }
-      if (struct.isSetCatName()) {
+      if (struct.isSetMaxParts()) {
         optionals.set(2);
       }
-      if (struct.isSetOrder()) {
+      if (struct.isSetValidWriteIdList()) {
         optionals.set(3);
       }
-      oprot.writeBitSet(optionals, 4);
-      if (struct.isSetDefaultPartitionName()) {
-        oprot.writeString(struct.defaultPartitionName);
+      if (struct.isSetId()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetCatName()) {
+        oprot.writeString(struct.catName);
+      }
+      if (struct.isSetPartValues()) {
+        {
+          oprot.writeI32(struct.partValues.size());
+          for (String _iter1244 : struct.partValues)
+          {
+            oprot.writeString(_iter1244);
+          }
+        }
       }
       if (struct.isSetMaxParts()) {
         oprot.writeI16(struct.maxParts);
       }
-      if (struct.isSetCatName()) {
-        oprot.writeString(struct.catName);
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
       }
-      if (struct.isSetOrder()) {
-        oprot.writeString(struct.order);
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
       }
     }
 
     @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, PartitionsByExprRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionNamesPsRequest struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.dbName = iprot.readString();
       struct.setDbNameIsSet(true);
       struct.tblName = iprot.readString();
       struct.setTblNameIsSet(true);
-      struct.expr = iprot.readBinary();
-      struct.setExprIsSet(true);
-      BitSet incoming = iprot.readBitSet(4);
+      BitSet incoming = iprot.readBitSet(5);
       if (incoming.get(0)) {
-        struct.defaultPartitionName = iprot.readString();
-        struct.setDefaultPartitionNameIsSet(true);
+        struct.catName = iprot.readString();
+        struct.setCatNameIsSet(true);
       }
       if (incoming.get(1)) {
-        struct.maxParts = iprot.readI16();
-        struct.setMaxPartsIsSet(true);
+        {
+          org.apache.thrift.protocol.TList _list1245 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.partValues = new ArrayList<String>(_list1245.size);
+          String _elem1246;
+          for (int _i1247 = 0; _i1247 < _list1245.size; ++_i1247)
+          {
+            _elem1246 = iprot.readString();
+            struct.partValues.add(_elem1246);
+          }
+        }
+        struct.setPartValuesIsSet(true);
       }
       if (incoming.get(2)) {
-        struct.catName = iprot.readString();
-        struct.setCatNameIsSet(true);
+        struct.maxParts = iprot.readI16();
+        struct.setMaxPartsIsSet(true);
       }
       if (incoming.get(3)) {
-        struct.order = iprot.readString();
-        struct.setOrderIsSet(true);
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
       }
     }
   }
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsResponse.java
new file mode 100644
index 0000000..87ebd59
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionNamesPsResponse.java
@@ -0,0 +1,438 @@
+/**
+ * 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 GetPartitionNamesPsResponse implements org.apache.thrift.TBase<GetPartitionNamesPsResponse, GetPartitionNamesPsResponse._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionNamesPsResponse> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionNamesPsResponse");
+
+  private static final org.apache.thrift.protocol.TField NAMES_FIELD_DESC = new org.apache.thrift.protocol.TField("names", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new GetPartitionNamesPsResponseStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionNamesPsResponseTupleSchemeFactory());
+  }
+
+  private List<String> names; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    NAMES((short)1, "names");
+
+    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: // NAMES
+          return NAMES;
+        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
+  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.NAMES, new org.apache.thrift.meta_data.FieldMetaData("names", 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))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionNamesPsResponse.class, metaDataMap);
+  }
+
+  public GetPartitionNamesPsResponse() {
+  }
+
+  public GetPartitionNamesPsResponse(
+    List<String> names)
+  {
+    this();
+    this.names = names;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public GetPartitionNamesPsResponse(GetPartitionNamesPsResponse other) {
+    if (other.isSetNames()) {
+      List<String> __this__names = new ArrayList<String>(other.names);
+      this.names = __this__names;
+    }
+  }
+
+  public GetPartitionNamesPsResponse deepCopy() {
+    return new GetPartitionNamesPsResponse(this);
+  }
+
+  @Override
+  public void clear() {
+    this.names = null;
+  }
+
+  public int getNamesSize() {
+    return (this.names == null) ? 0 : this.names.size();
+  }
+
+  public java.util.Iterator<String> getNamesIterator() {
+    return (this.names == null) ? null : this.names.iterator();
+  }
+
+  public void addToNames(String elem) {
+    if (this.names == null) {
+      this.names = new ArrayList<String>();
+    }
+    this.names.add(elem);
+  }
+
+  public List<String> getNames() {
+    return this.names;
+  }
+
+  public void setNames(List<String> names) {
+    this.names = names;
+  }
+
+  public void unsetNames() {
+    this.names = null;
+  }
+
+  /** Returns true if field names is set (has been assigned a value) and false otherwise */
+  public boolean isSetNames() {
+    return this.names != null;
+  }
+
+  public void setNamesIsSet(boolean value) {
+    if (!value) {
+      this.names = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case NAMES:
+      if (value == null) {
+        unsetNames();
+      } else {
+        setNames((List<String>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case NAMES:
+      return getNames();
+
+    }
+    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 NAMES:
+      return isSetNames();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof GetPartitionNamesPsResponse)
+      return this.equals((GetPartitionNamesPsResponse)that);
+    return false;
+  }
+
+  public boolean equals(GetPartitionNamesPsResponse that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_names = true && this.isSetNames();
+    boolean that_present_names = true && that.isSetNames();
+    if (this_present_names || that_present_names) {
+      if (!(this_present_names && that_present_names))
+        return false;
+      if (!this.names.equals(that.names))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_names = true && (isSetNames());
+    list.add(present_names);
+    if (present_names)
+      list.add(names);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(GetPartitionNamesPsResponse other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetNames()).compareTo(other.isSetNames());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetNames()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.names, other.names);
+      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("GetPartitionNamesPsResponse(");
+    boolean first = true;
+
+    sb.append("names:");
+    if (this.names == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.names);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetNames()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'names' 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 {
+      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 GetPartitionNamesPsResponseStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionNamesPsResponseStandardScheme getScheme() {
+      return new GetPartitionNamesPsResponseStandardScheme();
+    }
+  }
+
+  private static class GetPartitionNamesPsResponseStandardScheme extends StandardScheme<GetPartitionNamesPsResponse> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionNamesPsResponse 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: // NAMES
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1248 = iprot.readListBegin();
+                struct.names = new ArrayList<String>(_list1248.size);
+                String _elem1249;
+                for (int _i1250 = 0; _i1250 < _list1248.size; ++_i1250)
+                {
+                  _elem1249 = iprot.readString();
+                  struct.names.add(_elem1249);
+                }
+                iprot.readListEnd();
+              }
+              struct.setNamesIsSet(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, GetPartitionNamesPsResponse struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.names != null) {
+        oprot.writeFieldBegin(NAMES_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.names.size()));
+          for (String _iter1251 : struct.names)
+          {
+            oprot.writeString(_iter1251);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class GetPartitionNamesPsResponseTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionNamesPsResponseTupleScheme getScheme() {
+      return new GetPartitionNamesPsResponseTupleScheme();
+    }
+  }
+
+  private static class GetPartitionNamesPsResponseTupleScheme extends TupleScheme<GetPartitionNamesPsResponse> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionNamesPsResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      {
+        oprot.writeI32(struct.names.size());
+        for (String _iter1252 : struct.names)
+        {
+          oprot.writeString(_iter1252);
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionNamesPsResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      {
+        org.apache.thrift.protocol.TList _list1253 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+        struct.names = new ArrayList<String>(_list1253.size);
+        String _elem1254;
+        for (int _i1255 = 0; _i1255 < _list1253.size; ++_i1255)
+        {
+          _elem1254 = iprot.readString();
+          struct.names.add(_elem1254);
+        }
+      }
+      struct.setNamesIsSet(true);
+    }
+  }
+
+}
+
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionRequest.java
similarity index 72%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionRequest.java
index 1eafee5..51981ff 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionRequest.java
@@ -35,37 +35,37 @@ 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 TableStatsRequest implements org.apache.thrift.TBase<TableStatsRequest, TableStatsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<TableStatsRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TableStatsRequest");
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class GetPartitionRequest implements org.apache.thrift.TBase<GetPartitionRequest, GetPartitionRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionRequest");
 
-  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 CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField PART_VALS_FIELD_DESC = new org.apache.thrift.protocol.TField("partVals", org.apache.thrift.protocol.TType.LIST, (short)4);
   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)5);
-  private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new TableStatsRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new TableStatsRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new GetPartitionRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private List<String> colNames; // required
-  private String catName; // optional
+  private List<String> partVals; // required
   private String validWriteIdList; // optional
-  private String engine; // required
+  private long id; // 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"),
-    CAT_NAME((short)4, "catName"),
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    PART_VALS((short)4, "partVals"),
     VALID_WRITE_ID_LIST((short)5, "validWriteIdList"),
-    ENGINE((short)6, "engine");
+    ID((short)6, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -80,18 +80,18 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // COL_NAMES
-          return COL_NAMES;
-        case 4: // CAT_NAME
-          return CAT_NAME;
+        case 4: // PART_VALS
+          return PART_VALS;
         case 5: // VALID_WRITE_ID_LIST
           return VALID_WRITE_ID_LIST;
-        case 6: // ENGINE
-          return ENGINE;
+        case 6: // ID
+          return ID;
         default:
           return null;
       }
@@ -132,80 +132,105 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST};
+  private static final int __ID_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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, 
+    tmpMap.put(_Fields.PART_VALS, new org.apache.thrift.meta_data.FieldMetaData("partVals", 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.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)));
-    tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TableStatsRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionRequest.class, metaDataMap);
   }
 
-  public TableStatsRequest() {
+  public GetPartitionRequest() {
+    this.id = -1L;
+
   }
 
-  public TableStatsRequest(
+  public GetPartitionRequest(
     String dbName,
     String tblName,
-    List<String> colNames,
-    String engine)
+    List<String> partVals)
   {
     this();
     this.dbName = dbName;
     this.tblName = tblName;
-    this.colNames = colNames;
-    this.engine = engine;
+    this.partVals = partVals;
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public TableStatsRequest(TableStatsRequest other) {
+  public GetPartitionRequest(GetPartitionRequest other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     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.isSetCatName()) {
-      this.catName = other.catName;
+    if (other.isSetPartVals()) {
+      List<String> __this__partVals = new ArrayList<String>(other.partVals);
+      this.partVals = __this__partVals;
     }
     if (other.isSetValidWriteIdList()) {
       this.validWriteIdList = other.validWriteIdList;
     }
-    if (other.isSetEngine()) {
-      this.engine = other.engine;
-    }
+    this.id = other.id;
   }
 
-  public TableStatsRequest deepCopy() {
-    return new TableStatsRequest(this);
+  public GetPartitionRequest deepCopy() {
+    return new GetPartitionRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.colNames = null;
-    this.catName = null;
+    this.partVals = null;
     this.validWriteIdList = null;
-    this.engine = null;
+    this.id = -1L;
+
+  }
+
+  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 String getDbName() {
@@ -254,64 +279,41 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  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 int getPartValsSize() {
+    return (this.partVals == null) ? 0 : this.partVals.size();
   }
 
-  public void setColNames(List<String> colNames) {
-    this.colNames = colNames;
+  public java.util.Iterator<String> getPartValsIterator() {
+    return (this.partVals == null) ? null : this.partVals.iterator();
   }
 
-  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 void addToPartVals(String elem) {
+    if (this.partVals == null) {
+      this.partVals = new ArrayList<String>();
     }
+    this.partVals.add(elem);
   }
 
-  public String getCatName() {
-    return this.catName;
+  public List<String> getPartVals() {
+    return this.partVals;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setPartVals(List<String> partVals) {
+    this.partVals = partVals;
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetPartVals() {
+    this.partVals = null;
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != null;
+  /** Returns true if field partVals is set (has been assigned a value) and false otherwise */
+  public boolean isSetPartVals() {
+    return this.partVals != null;
   }
 
-  public void setCatNameIsSet(boolean value) {
+  public void setPartValsIsSet(boolean value) {
     if (!value) {
-      this.catName = null;
+      this.partVals = null;
     }
   }
 
@@ -338,31 +340,38 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public String getEngine() {
-    return this.engine;
+  public long getId() {
+    return this.id;
   }
 
-  public void setEngine(String engine) {
-    this.engine = engine;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetEngine() {
-    this.engine = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field engine is set (has been assigned a value) and false otherwise */
-  public boolean isSetEngine() {
-    return this.engine != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setEngineIsSet(boolean value) {
-    if (!value) {
-      this.engine = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -379,19 +388,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case COL_NAMES:
+    case PART_VALS:
       if (value == null) {
-        unsetColNames();
+        unsetPartVals();
       } else {
-        setColNames((List<String>)value);
-      }
-      break;
-
-    case CAT_NAME:
-      if (value == null) {
-        unsetCatName();
-      } else {
-        setCatName((String)value);
+        setPartVals((List<String>)value);
       }
       break;
 
@@ -403,11 +404,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case ENGINE:
+    case ID:
       if (value == null) {
-        unsetEngine();
+        unsetId();
       } else {
-        setEngine((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -416,23 +417,23 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case COL_NAMES:
-      return getColNames();
-
-    case CAT_NAME:
-      return getCatName();
+    case PART_VALS:
+      return getPartVals();
 
     case VALID_WRITE_ID_LIST:
       return getValidWriteIdList();
 
-    case ENGINE:
-      return getEngine();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -445,18 +446,18 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case COL_NAMES:
-      return isSetColNames();
-    case CAT_NAME:
-      return isSetCatName();
+    case PART_VALS:
+      return isSetPartVals();
     case VALID_WRITE_ID_LIST:
       return isSetValidWriteIdList();
-    case ENGINE:
-      return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -465,15 +466,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof TableStatsRequest)
-      return this.equals((TableStatsRequest)that);
+    if (that instanceof GetPartitionRequest)
+      return this.equals((GetPartitionRequest)that);
     return false;
   }
 
-  public boolean equals(TableStatsRequest that) {
+  public boolean equals(GetPartitionRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -492,21 +502,12 @@ import org.slf4j.LoggerFactory;
         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))
+    boolean this_present_partVals = true && this.isSetPartVals();
+    boolean that_present_partVals = true && that.isSetPartVals();
+    if (this_present_partVals || that_present_partVals) {
+      if (!(this_present_partVals && that_present_partVals))
         return false;
-      if (!this.colNames.equals(that.colNames))
-        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))
+      if (!this.partVals.equals(that.partVals))
         return false;
     }
 
@@ -519,12 +520,12 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_engine = true && this.isSetEngine();
-    boolean that_present_engine = true && that.isSetEngine();
-    if (this_present_engine || that_present_engine) {
-      if (!(this_present_engine && that_present_engine))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.engine.equals(that.engine))
+      if (this.id != that.id)
         return false;
     }
 
@@ -535,6 +536,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
     boolean present_dbName = true && (isSetDbName());
     list.add(present_dbName);
     if (present_dbName)
@@ -545,73 +551,68 @@ import org.slf4j.LoggerFactory;
     if (present_tblName)
       list.add(tblName);
 
-    boolean present_colNames = true && (isSetColNames());
-    list.add(present_colNames);
-    if (present_colNames)
-      list.add(colNames);
-
-    boolean present_catName = true && (isSetCatName());
-    list.add(present_catName);
-    if (present_catName)
-      list.add(catName);
+    boolean present_partVals = true && (isSetPartVals());
+    list.add(present_partVals);
+    if (present_partVals)
+      list.add(partVals);
 
     boolean present_validWriteIdList = true && (isSetValidWriteIdList());
     list.add(present_validWriteIdList);
     if (present_validWriteIdList)
       list.add(validWriteIdList);
 
-    boolean present_engine = true && (isSetEngine());
-    list.add(present_engine);
-    if (present_engine)
-      list.add(engine);
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
 
     return list.hashCode();
   }
 
   @Override
-  public int compareTo(TableStatsRequest other) {
+  public int compareTo(GetPartitionRequest other) {
     if (!getClass().equals(other.getClass())) {
       return getClass().getName().compareTo(other.getClass().getName());
     }
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDbName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+    if (isSetCatName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTblName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+    if (isSetDbName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetColNames()).compareTo(other.isSetColNames());
+    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetColNames()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.colNames, other.colNames);
+    if (isSetTblName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+    lastComparison = Boolean.valueOf(isSetPartVals()).compareTo(other.isSetPartVals());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCatName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+    if (isSetPartVals()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partVals, other.partVals);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -626,12 +627,12 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetEngine()).compareTo(other.isSetEngine());
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetEngine()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.engine, other.engine);
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -653,9 +654,19 @@ import org.slf4j.LoggerFactory;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("TableStatsRequest(");
+    StringBuilder sb = new StringBuilder("GetPartitionRequest(");
     boolean first = true;
 
+    if (isSetCatName()) {
+      sb.append("catName:");
+      if (this.catName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.catName);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
     sb.append("dbName:");
     if (this.dbName == null) {
       sb.append("null");
@@ -672,23 +683,13 @@ import org.slf4j.LoggerFactory;
     }
     first = false;
     if (!first) sb.append(", ");
-    sb.append("colNames:");
-    if (this.colNames == null) {
+    sb.append("partVals:");
+    if (this.partVals == null) {
       sb.append("null");
     } else {
-      sb.append(this.colNames);
+      sb.append(this.partVals);
     }
     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 (isSetValidWriteIdList()) {
       if (!first) sb.append(", ");
       sb.append("validWriteIdList:");
@@ -699,14 +700,12 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
-    if (!first) sb.append(", ");
-    sb.append("engine:");
-    if (this.engine == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.engine);
+    if (isSetId()) {
+      if (!first) sb.append(", ");
+      sb.append("id:");
+      sb.append(this.id);
+      first = false;
     }
-    first = false;
     sb.append(")");
     return sb.toString();
   }
@@ -721,12 +720,8 @@ import org.slf4j.LoggerFactory;
       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 (!isSetEngine()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'engine' is unset! Struct:" + toString());
+    if (!isSetPartVals()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'partVals' is unset! Struct:" + toString());
     }
 
     // check for sub-struct validity
@@ -742,21 +737,23 @@ import org.slf4j.LoggerFactory;
 
   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 TableStatsRequestStandardSchemeFactory implements SchemeFactory {
-    public TableStatsRequestStandardScheme getScheme() {
-      return new TableStatsRequestStandardScheme();
+  private static class GetPartitionRequestStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionRequestStandardScheme getScheme() {
+      return new GetPartitionRequestStandardScheme();
     }
   }
 
-  private static class TableStatsRequestStandardScheme extends StandardScheme<TableStatsRequest> {
+  private static class GetPartitionRequestStandardScheme extends StandardScheme<GetPartitionRequest> {
 
-    public void read(org.apache.thrift.protocol.TProtocol iprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionRequest struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
       iprot.readStructBegin();
       while (true)
@@ -766,7 +763,15 @@ import org.slf4j.LoggerFactory;
           break;
         }
         switch (schemeField.id) {
-          case 1: // DB_NAME
+          case 1: // 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 2: // DB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.dbName = iprot.readString();
               struct.setDbNameIsSet(true);
@@ -774,7 +779,7 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // TBL_NAME
+          case 3: // TBL_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.tblName = iprot.readString();
               struct.setTblNameIsSet(true);
@@ -782,28 +787,20 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 3: // COL_NAMES
+          case 4: // PART_VALS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list490 = iprot.readListBegin();
-                struct.colNames = new ArrayList<String>(_list490.size);
-                String _elem491;
-                for (int _i492 = 0; _i492 < _list490.size; ++_i492)
+                org.apache.thrift.protocol.TList _list1224 = iprot.readListBegin();
+                struct.partVals = new ArrayList<String>(_list1224.size);
+                String _elem1225;
+                for (int _i1226 = 0; _i1226 < _list1224.size; ++_i1226)
                 {
-                  _elem491 = iprot.readString();
-                  struct.colNames.add(_elem491);
+                  _elem1225 = iprot.readString();
+                  struct.partVals.add(_elem1225);
                 }
                 iprot.readListEnd();
               }
-              struct.setColNamesIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
-            }
-            break;
-          case 4: // CAT_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.catName = iprot.readString();
-              struct.setCatNameIsSet(true);
+              struct.setPartValsIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -816,10 +813,10 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // ENGINE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.engine = iprot.readString();
-              struct.setEngineIsSet(true);
+          case 6: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -833,10 +830,17 @@ import org.slf4j.LoggerFactory;
       struct.validate();
     }
 
-    public void write(org.apache.thrift.protocol.TProtocol oprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol oprot, GetPartitionRequest struct) throws org.apache.thrift.TException {
       struct.validate();
 
       oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.catName != null) {
+        if (struct.isSetCatName()) {
+          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+          oprot.writeString(struct.catName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.dbName != null) {
         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
         oprot.writeString(struct.dbName);
@@ -847,25 +851,18 @@ import org.slf4j.LoggerFactory;
         oprot.writeString(struct.tblName);
         oprot.writeFieldEnd();
       }
-      if (struct.colNames != null) {
-        oprot.writeFieldBegin(COL_NAMES_FIELD_DESC);
+      if (struct.partVals != null) {
+        oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
         {
-          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.colNames.size()));
-          for (String _iter493 : struct.colNames)
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.partVals.size()));
+          for (String _iter1227 : struct.partVals)
           {
-            oprot.writeString(_iter493);
+            oprot.writeString(_iter1227);
           }
           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.validWriteIdList != null) {
         if (struct.isSetValidWriteIdList()) {
           oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
@@ -873,9 +870,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
-      if (struct.engine != null) {
-        oprot.writeFieldBegin(ENGINE_FIELD_DESC);
-        oprot.writeString(struct.engine);
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
         oprot.writeFieldEnd();
       }
       oprot.writeFieldStop();
@@ -884,27 +881,26 @@ import org.slf4j.LoggerFactory;
 
   }
 
-  private static class TableStatsRequestTupleSchemeFactory implements SchemeFactory {
-    public TableStatsRequestTupleScheme getScheme() {
-      return new TableStatsRequestTupleScheme();
+  private static class GetPartitionRequestTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionRequestTupleScheme getScheme() {
+      return new GetPartitionRequestTupleScheme();
     }
   }
 
-  private static class TableStatsRequestTupleScheme extends TupleScheme<TableStatsRequest> {
+  private static class GetPartitionRequestTupleScheme extends TupleScheme<GetPartitionRequest> {
 
     @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionRequest 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 _iter494 : struct.colNames)
+        oprot.writeI32(struct.partVals.size());
+        for (String _iter1228 : struct.partVals)
         {
-          oprot.writeString(_iter494);
+          oprot.writeString(_iter1228);
         }
       }
-      oprot.writeString(struct.engine);
       BitSet optionals = new BitSet();
       if (struct.isSetCatName()) {
         optionals.set(0);
@@ -912,36 +908,40 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetValidWriteIdList()) {
         optionals.set(1);
       }
-      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetId()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
       if (struct.isSetValidWriteIdList()) {
         oprot.writeString(struct.validWriteIdList);
       }
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
+      }
     }
 
     @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionRequest 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 _list495 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.colNames = new ArrayList<String>(_list495.size);
-        String _elem496;
-        for (int _i497 = 0; _i497 < _list495.size; ++_i497)
+        org.apache.thrift.protocol.TList _list1229 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+        struct.partVals = new ArrayList<String>(_list1229.size);
+        String _elem1230;
+        for (int _i1231 = 0; _i1231 < _list1229.size; ++_i1231)
         {
-          _elem496 = iprot.readString();
-          struct.colNames.add(_elem496);
+          _elem1230 = iprot.readString();
+          struct.partVals.add(_elem1230);
         }
       }
-      struct.setColNamesIsSet(true);
-      struct.engine = iprot.readString();
-      struct.setEngineIsSet(true);
-      BitSet incoming = iprot.readBitSet(2);
+      struct.setPartValsIsSet(true);
+      BitSet incoming = iprot.readBitSet(3);
       if (incoming.get(0)) {
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
@@ -950,6 +950,10 @@ import org.slf4j.LoggerFactory;
         struct.validWriteIdList = iprot.readString();
         struct.setValidWriteIdListIsSet(true);
       }
+      if (incoming.get(2)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionResponse.java
new file mode 100644
index 0000000..a30a5b3
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionResponse.java
@@ -0,0 +1,394 @@
+/**
+ * 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 GetPartitionResponse implements org.apache.thrift.TBase<GetPartitionResponse, GetPartitionResponse._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionResponse> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionResponse");
+
+  private static final org.apache.thrift.protocol.TField PARTITION_FIELD_DESC = new org.apache.thrift.protocol.TField("partition", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new GetPartitionResponseStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionResponseTupleSchemeFactory());
+  }
+
+  private Partition partition; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    PARTITION((short)1, "partition");
+
+    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: // PARTITION
+          return PARTITION;
+        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
+  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.PARTITION, new org.apache.thrift.meta_data.FieldMetaData("partition", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Partition.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionResponse.class, metaDataMap);
+  }
+
+  public GetPartitionResponse() {
+  }
+
+  public GetPartitionResponse(
+    Partition partition)
+  {
+    this();
+    this.partition = partition;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public GetPartitionResponse(GetPartitionResponse other) {
+    if (other.isSetPartition()) {
+      this.partition = new Partition(other.partition);
+    }
+  }
+
+  public GetPartitionResponse deepCopy() {
+    return new GetPartitionResponse(this);
+  }
+
+  @Override
+  public void clear() {
+    this.partition = null;
+  }
+
+  public Partition getPartition() {
+    return this.partition;
+  }
+
+  public void setPartition(Partition partition) {
+    this.partition = partition;
+  }
+
+  public void unsetPartition() {
+    this.partition = null;
+  }
+
+  /** Returns true if field partition is set (has been assigned a value) and false otherwise */
+  public boolean isSetPartition() {
+    return this.partition != null;
+  }
+
+  public void setPartitionIsSet(boolean value) {
+    if (!value) {
+      this.partition = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PARTITION:
+      if (value == null) {
+        unsetPartition();
+      } else {
+        setPartition((Partition)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PARTITION:
+      return getPartition();
+
+    }
+    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 PARTITION:
+      return isSetPartition();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof GetPartitionResponse)
+      return this.equals((GetPartitionResponse)that);
+    return false;
+  }
+
+  public boolean equals(GetPartitionResponse that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_partition = true && this.isSetPartition();
+    boolean that_present_partition = true && that.isSetPartition();
+    if (this_present_partition || that_present_partition) {
+      if (!(this_present_partition && that_present_partition))
+        return false;
+      if (!this.partition.equals(that.partition))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_partition = true && (isSetPartition());
+    list.add(present_partition);
+    if (present_partition)
+      list.add(partition);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(GetPartitionResponse other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetPartition()).compareTo(other.isSetPartition());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPartition()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partition, other.partition);
+      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("GetPartitionResponse(");
+    boolean first = true;
+
+    sb.append("partition:");
+    if (this.partition == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.partition);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetPartition()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'partition' is unset! Struct:" + toString());
+    }
+
+    // check for sub-struct validity
+    if (partition != null) {
+      partition.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 {
+      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 GetPartitionResponseStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionResponseStandardScheme getScheme() {
+      return new GetPartitionResponseStandardScheme();
+    }
+  }
+
+  private static class GetPartitionResponseStandardScheme extends StandardScheme<GetPartitionResponse> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionResponse 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: // PARTITION
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.partition = new Partition();
+              struct.partition.read(iprot);
+              struct.setPartitionIsSet(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, GetPartitionResponse struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.partition != null) {
+        oprot.writeFieldBegin(PARTITION_FIELD_DESC);
+        struct.partition.write(oprot);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class GetPartitionResponseTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionResponseTupleScheme getScheme() {
+      return new GetPartitionResponseTupleScheme();
+    }
+  }
+
+  private static class GetPartitionResponseTupleScheme extends TupleScheme<GetPartitionResponse> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      struct.partition.write(oprot);
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      struct.partition = new Partition();
+      struct.partition.read(iprot);
+      struct.setPartitionIsSet(true);
+    }
+  }
+
+}
+
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsByNamesRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsByNamesRequest.java
index c93a052..09230c5 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsByNamesRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsByNamesRequest.java
@@ -45,6 +45,7 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField PROCESSOR_CAPABILITIES_FIELD_DESC = new org.apache.thrift.protocol.TField("processorCapabilities", org.apache.thrift.protocol.TType.LIST, (short)5);
   private static final org.apache.thrift.protocol.TField PROCESSOR_IDENTIFIER_FIELD_DESC = new org.apache.thrift.protocol.TField("processorIdentifier", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)7);
+  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)8);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -59,6 +60,7 @@ import org.slf4j.LoggerFactory;
   private List<String> processorCapabilities; // optional
   private String processorIdentifier; // optional
   private String engine; // 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 {
@@ -68,7 +70,8 @@ import org.slf4j.LoggerFactory;
     GET_COL_STATS((short)4, "get_col_stats"),
     PROCESSOR_CAPABILITIES((short)5, "processorCapabilities"),
     PROCESSOR_IDENTIFIER((short)6, "processorIdentifier"),
-    ENGINE((short)7, "engine");
+    ENGINE((short)7, "engine"),
+    VALID_WRITE_ID_LIST((short)8, "validWriteIdList");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -97,6 +100,8 @@ import org.slf4j.LoggerFactory;
           return PROCESSOR_IDENTIFIER;
         case 7: // ENGINE
           return ENGINE;
+        case 8: // VALID_WRITE_ID_LIST
+          return VALID_WRITE_ID_LIST;
         default:
           return null;
       }
@@ -139,7 +144,7 @@ import org.slf4j.LoggerFactory;
   // isset id assignments
   private static final int __GET_COL_STATS_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.NAMES,_Fields.GET_COL_STATS,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_Fields.ENGINE};
+  private static final _Fields optionals[] = {_Fields.NAMES,_Fields.GET_COL_STATS,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_Fields.ENGINE,_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);
@@ -159,6 +164,8 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    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(GetPartitionsByNamesRequest.class, metaDataMap);
   }
@@ -201,6 +208,9 @@ import org.slf4j.LoggerFactory;
     if (other.isSetEngine()) {
       this.engine = other.engine;
     }
+    if (other.isSetValidWriteIdList()) {
+      this.validWriteIdList = other.validWriteIdList;
+    }
   }
 
   public GetPartitionsByNamesRequest deepCopy() {
@@ -217,6 +227,7 @@ import org.slf4j.LoggerFactory;
     this.processorCapabilities = null;
     this.processorIdentifier = null;
     this.engine = null;
+    this.validWriteIdList = null;
   }
 
   public String getDb_name() {
@@ -409,6 +420,29 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  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:
@@ -467,6 +501,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case VALID_WRITE_ID_LIST:
+      if (value == null) {
+        unsetValidWriteIdList();
+      } else {
+        setValidWriteIdList((String)value);
+      }
+      break;
+
     }
   }
 
@@ -493,6 +535,9 @@ import org.slf4j.LoggerFactory;
     case ENGINE:
       return getEngine();
 
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
+
     }
     throw new IllegalStateException();
   }
@@ -518,6 +563,8 @@ import org.slf4j.LoggerFactory;
       return isSetProcessorIdentifier();
     case ENGINE:
       return isSetEngine();
+    case VALID_WRITE_ID_LIST:
+      return isSetValidWriteIdList();
     }
     throw new IllegalStateException();
   }
@@ -598,6 +645,15 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -640,6 +696,11 @@ import org.slf4j.LoggerFactory;
     if (present_engine)
       list.add(engine);
 
+    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
+    list.add(present_validWriteIdList);
+    if (present_validWriteIdList)
+      list.add(validWriteIdList);
+
     return list.hashCode();
   }
 
@@ -721,6 +782,16 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -802,6 +873,16 @@ import org.slf4j.LoggerFactory;
       }
       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();
   }
@@ -931,6 +1012,14 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 8: // 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);
         }
@@ -1001,6 +1090,13 @@ import org.slf4j.LoggerFactory;
           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();
     }
@@ -1036,7 +1132,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetEngine()) {
         optionals.set(4);
       }
-      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
       if (struct.isSetNames()) {
         {
           oprot.writeI32(struct.names.size());
@@ -1064,6 +1163,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetEngine()) {
         oprot.writeString(struct.engine);
       }
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
+      }
     }
 
     @Override
@@ -1073,7 +1175,7 @@ import org.slf4j.LoggerFactory;
       struct.setDb_nameIsSet(true);
       struct.tbl_name = iprot.readString();
       struct.setTbl_nameIsSet(true);
-      BitSet incoming = iprot.readBitSet(5);
+      BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         {
           org.apache.thrift.protocol.TList _list596 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
@@ -1112,6 +1214,10 @@ import org.slf4j.LoggerFactory;
         struct.engine = iprot.readString();
         struct.setEngineIsSet(true);
       }
+      if (incoming.get(5)) {
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthRequest.java
similarity index 57%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthRequest.java
index 4e66f07..5441037 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthRequest.java
@@ -35,46 +35,46 @@ 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 GetTableRequest implements org.apache.thrift.TBase<GetTableRequest, GetTableRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetTableRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetTableRequest");
-
-  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 CAPABILITIES_FIELD_DESC = new org.apache.thrift.protocol.TField("capabilities", org.apache.thrift.protocol.TType.STRUCT, (short)3);
-  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)4);
-  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)6);
-  private static final org.apache.thrift.protocol.TField GET_COLUMN_STATS_FIELD_DESC = new org.apache.thrift.protocol.TField("getColumnStats", org.apache.thrift.protocol.TType.BOOL, (short)7);
-  private static final org.apache.thrift.protocol.TField PROCESSOR_CAPABILITIES_FIELD_DESC = new org.apache.thrift.protocol.TField("processorCapabilities", org.apache.thrift.protocol.TType.LIST, (short)8);
-  private static final org.apache.thrift.protocol.TField PROCESSOR_IDENTIFIER_FIELD_DESC = new org.apache.thrift.protocol.TField("processorIdentifier", org.apache.thrift.protocol.TType.STRING, (short)9);
-  private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)10);
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class GetPartitionsPsWithAuthRequest implements org.apache.thrift.TBase<GetPartitionsPsWithAuthRequest, GetPartitionsPsWithAuthRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionsPsWithAuthRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionsPsWithAuthRequest");
+
+  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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField PART_VALS_FIELD_DESC = new org.apache.thrift.protocol.TField("partVals", org.apache.thrift.protocol.TType.LIST, (short)4);
+  private static final org.apache.thrift.protocol.TField MAX_PARTS_FIELD_DESC = new org.apache.thrift.protocol.TField("maxParts", org.apache.thrift.protocol.TType.I16, (short)5);
+  private static final org.apache.thrift.protocol.TField USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("userName", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField GROUP_NAMES_FIELD_DESC = new org.apache.thrift.protocol.TField("groupNames", org.apache.thrift.protocol.TType.LIST, (short)7);
+  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)8);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new GetTableRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new GetTableRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new GetPartitionsPsWithAuthRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionsPsWithAuthRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private ClientCapabilities capabilities; // optional
-  private String catName; // optional
+  private List<String> partVals; // optional
+  private short maxParts; // optional
+  private String userName; // optional
+  private List<String> groupNames; // optional
   private String validWriteIdList; // optional
-  private boolean getColumnStats; // optional
-  private List<String> processorCapabilities; // optional
-  private String processorIdentifier; // optional
-  private String engine; // optional
+  private long id; // 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"),
-    CAPABILITIES((short)3, "capabilities"),
-    CAT_NAME((short)4, "catName"),
-    VALID_WRITE_ID_LIST((short)6, "validWriteIdList"),
-    GET_COLUMN_STATS((short)7, "getColumnStats"),
-    PROCESSOR_CAPABILITIES((short)8, "processorCapabilities"),
-    PROCESSOR_IDENTIFIER((short)9, "processorIdentifier"),
-    ENGINE((short)10, "engine");
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    PART_VALS((short)4, "partVals"),
+    MAX_PARTS((short)5, "maxParts"),
+    USER_NAME((short)6, "userName"),
+    GROUP_NAMES((short)7, "groupNames"),
+    VALID_WRITE_ID_LIST((short)8, "validWriteIdList"),
+    ID((short)9, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -89,24 +89,24 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // CAPABILITIES
-          return CAPABILITIES;
-        case 4: // CAT_NAME
-          return CAT_NAME;
-        case 6: // VALID_WRITE_ID_LIST
+        case 4: // PART_VALS
+          return PART_VALS;
+        case 5: // MAX_PARTS
+          return MAX_PARTS;
+        case 6: // USER_NAME
+          return USER_NAME;
+        case 7: // GROUP_NAMES
+          return GROUP_NAMES;
+        case 8: // VALID_WRITE_ID_LIST
           return VALID_WRITE_ID_LIST;
-        case 7: // GET_COLUMN_STATS
-          return GET_COLUMN_STATS;
-        case 8: // PROCESSOR_CAPABILITIES
-          return PROCESSOR_CAPABILITIES;
-        case 9: // PROCESSOR_IDENTIFIER
-          return PROCESSOR_IDENTIFIER;
-        case 10: // ENGINE
-          return ENGINE;
+        case 9: // ID
+          return ID;
         default:
           return null;
       }
@@ -147,39 +147,45 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private static final int __GETCOLUMNSTATS_ISSET_ID = 0;
+  private static final int __MAXPARTS_ISSET_ID = 0;
+  private static final int __ID_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CAPABILITIES,_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST,_Fields.GET_COLUMN_STATS,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_Fields.ENGINE};
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.PART_VALS,_Fields.MAX_PARTS,_Fields.USER_NAME,_Fields.GROUP_NAMES,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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.CAPABILITIES, new org.apache.thrift.meta_data.FieldMetaData("capabilities", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ClientCapabilities.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.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)));
-    tmpMap.put(_Fields.GET_COLUMN_STATS, new org.apache.thrift.meta_data.FieldMetaData("getColumnStats", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
-    tmpMap.put(_Fields.PROCESSOR_CAPABILITIES, new org.apache.thrift.meta_data.FieldMetaData("processorCapabilities", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PART_VALS, new org.apache.thrift.meta_data.FieldMetaData("partVals", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         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.PROCESSOR_IDENTIFIER, new org.apache.thrift.meta_data.FieldMetaData("processorIdentifier", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.MAX_PARTS, new org.apache.thrift.meta_data.FieldMetaData("maxParts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16)));
+    tmpMap.put(_Fields.USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("userName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-    tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.GROUP_NAMES, new org.apache.thrift.meta_data.FieldMetaData("groupNames", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        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.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)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetTableRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionsPsWithAuthRequest.class, metaDataMap);
   }
 
-  public GetTableRequest() {
+  public GetPartitionsPsWithAuthRequest() {
+    this.maxParts = (short)-1;
+
+    this.id = -1L;
+
   }
 
-  public GetTableRequest(
+  public GetPartitionsPsWithAuthRequest(
     String dbName,
     String tblName)
   {
@@ -191,52 +197,75 @@ import org.slf4j.LoggerFactory;
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public GetTableRequest(GetTableRequest other) {
+  public GetPartitionsPsWithAuthRequest(GetPartitionsPsWithAuthRequest other) {
     __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     if (other.isSetDbName()) {
       this.dbName = other.dbName;
     }
     if (other.isSetTblName()) {
       this.tblName = other.tblName;
     }
-    if (other.isSetCapabilities()) {
-      this.capabilities = new ClientCapabilities(other.capabilities);
+    if (other.isSetPartVals()) {
+      List<String> __this__partVals = new ArrayList<String>(other.partVals);
+      this.partVals = __this__partVals;
     }
-    if (other.isSetCatName()) {
-      this.catName = other.catName;
+    this.maxParts = other.maxParts;
+    if (other.isSetUserName()) {
+      this.userName = other.userName;
+    }
+    if (other.isSetGroupNames()) {
+      List<String> __this__groupNames = new ArrayList<String>(other.groupNames);
+      this.groupNames = __this__groupNames;
     }
     if (other.isSetValidWriteIdList()) {
       this.validWriteIdList = other.validWriteIdList;
     }
-    this.getColumnStats = other.getColumnStats;
-    if (other.isSetProcessorCapabilities()) {
-      List<String> __this__processorCapabilities = new ArrayList<String>(other.processorCapabilities);
-      this.processorCapabilities = __this__processorCapabilities;
-    }
-    if (other.isSetProcessorIdentifier()) {
-      this.processorIdentifier = other.processorIdentifier;
-    }
-    if (other.isSetEngine()) {
-      this.engine = other.engine;
-    }
+    this.id = other.id;
   }
 
-  public GetTableRequest deepCopy() {
-    return new GetTableRequest(this);
+  public GetPartitionsPsWithAuthRequest deepCopy() {
+    return new GetPartitionsPsWithAuthRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.capabilities = null;
-    this.catName = null;
+    this.partVals = null;
+    this.maxParts = (short)-1;
+
+    this.userName = null;
+    this.groupNames = null;
     this.validWriteIdList = null;
-    setGetColumnStatsIsSet(false);
-    this.getColumnStats = false;
-    this.processorCapabilities = null;
-    this.processorIdentifier = null;
-    this.engine = null;
+    this.id = -1L;
+
+  }
+
+  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 String getDbName() {
@@ -285,183 +314,182 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public ClientCapabilities getCapabilities() {
-    return this.capabilities;
-  }
-
-  public void setCapabilities(ClientCapabilities capabilities) {
-    this.capabilities = capabilities;
-  }
-
-  public void unsetCapabilities() {
-    this.capabilities = null;
+  public int getPartValsSize() {
+    return (this.partVals == null) ? 0 : this.partVals.size();
   }
 
-  /** Returns true if field capabilities is set (has been assigned a value) and false otherwise */
-  public boolean isSetCapabilities() {
-    return this.capabilities != null;
+  public java.util.Iterator<String> getPartValsIterator() {
+    return (this.partVals == null) ? null : this.partVals.iterator();
   }
 
-  public void setCapabilitiesIsSet(boolean value) {
-    if (!value) {
-      this.capabilities = null;
+  public void addToPartVals(String elem) {
+    if (this.partVals == null) {
+      this.partVals = new ArrayList<String>();
     }
+    this.partVals.add(elem);
   }
 
-  public String getCatName() {
-    return this.catName;
+  public List<String> getPartVals() {
+    return this.partVals;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setPartVals(List<String> partVals) {
+    this.partVals = partVals;
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetPartVals() {
+    this.partVals = null;
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != null;
+  /** Returns true if field partVals is set (has been assigned a value) and false otherwise */
+  public boolean isSetPartVals() {
+    return this.partVals != null;
   }
 
-  public void setCatNameIsSet(boolean value) {
+  public void setPartValsIsSet(boolean value) {
     if (!value) {
-      this.catName = null;
+      this.partVals = null;
     }
   }
 
-  public String getValidWriteIdList() {
-    return this.validWriteIdList;
+  public short getMaxParts() {
+    return this.maxParts;
   }
 
-  public void setValidWriteIdList(String validWriteIdList) {
-    this.validWriteIdList = validWriteIdList;
+  public void setMaxParts(short maxParts) {
+    this.maxParts = maxParts;
+    setMaxPartsIsSet(true);
   }
 
-  public void unsetValidWriteIdList() {
-    this.validWriteIdList = null;
+  public void unsetMaxParts() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MAXPARTS_ISSET_ID);
   }
 
-  /** Returns true if field validWriteIdList is set (has been assigned a value) and false otherwise */
-  public boolean isSetValidWriteIdList() {
-    return this.validWriteIdList != null;
+  /** Returns true if field maxParts is set (has been assigned a value) and false otherwise */
+  public boolean isSetMaxParts() {
+    return EncodingUtils.testBit(__isset_bitfield, __MAXPARTS_ISSET_ID);
   }
 
-  public void setValidWriteIdListIsSet(boolean value) {
-    if (!value) {
-      this.validWriteIdList = null;
-    }
+  public void setMaxPartsIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MAXPARTS_ISSET_ID, value);
   }
 
-  public boolean isGetColumnStats() {
-    return this.getColumnStats;
+  public String getUserName() {
+    return this.userName;
   }
 
-  public void setGetColumnStats(boolean getColumnStats) {
-    this.getColumnStats = getColumnStats;
-    setGetColumnStatsIsSet(true);
+  public void setUserName(String userName) {
+    this.userName = userName;
   }
 
-  public void unsetGetColumnStats() {
-    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __GETCOLUMNSTATS_ISSET_ID);
+  public void unsetUserName() {
+    this.userName = null;
   }
 
-  /** Returns true if field getColumnStats is set (has been assigned a value) and false otherwise */
-  public boolean isSetGetColumnStats() {
-    return EncodingUtils.testBit(__isset_bitfield, __GETCOLUMNSTATS_ISSET_ID);
+  /** Returns true if field userName is set (has been assigned a value) and false otherwise */
+  public boolean isSetUserName() {
+    return this.userName != null;
   }
 
-  public void setGetColumnStatsIsSet(boolean value) {
-    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GETCOLUMNSTATS_ISSET_ID, value);
+  public void setUserNameIsSet(boolean value) {
+    if (!value) {
+      this.userName = null;
+    }
   }
 
-  public int getProcessorCapabilitiesSize() {
-    return (this.processorCapabilities == null) ? 0 : this.processorCapabilities.size();
+  public int getGroupNamesSize() {
+    return (this.groupNames == null) ? 0 : this.groupNames.size();
   }
 
-  public java.util.Iterator<String> getProcessorCapabilitiesIterator() {
-    return (this.processorCapabilities == null) ? null : this.processorCapabilities.iterator();
+  public java.util.Iterator<String> getGroupNamesIterator() {
+    return (this.groupNames == null) ? null : this.groupNames.iterator();
   }
 
-  public void addToProcessorCapabilities(String elem) {
-    if (this.processorCapabilities == null) {
-      this.processorCapabilities = new ArrayList<String>();
+  public void addToGroupNames(String elem) {
+    if (this.groupNames == null) {
+      this.groupNames = new ArrayList<String>();
     }
-    this.processorCapabilities.add(elem);
+    this.groupNames.add(elem);
   }
 
-  public List<String> getProcessorCapabilities() {
-    return this.processorCapabilities;
+  public List<String> getGroupNames() {
+    return this.groupNames;
   }
 
-  public void setProcessorCapabilities(List<String> processorCapabilities) {
-    this.processorCapabilities = processorCapabilities;
+  public void setGroupNames(List<String> groupNames) {
+    this.groupNames = groupNames;
   }
 
-  public void unsetProcessorCapabilities() {
-    this.processorCapabilities = null;
+  public void unsetGroupNames() {
+    this.groupNames = null;
   }
 
-  /** Returns true if field processorCapabilities is set (has been assigned a value) and false otherwise */
-  public boolean isSetProcessorCapabilities() {
-    return this.processorCapabilities != null;
+  /** Returns true if field groupNames is set (has been assigned a value) and false otherwise */
+  public boolean isSetGroupNames() {
+    return this.groupNames != null;
   }
 
-  public void setProcessorCapabilitiesIsSet(boolean value) {
+  public void setGroupNamesIsSet(boolean value) {
     if (!value) {
-      this.processorCapabilities = null;
+      this.groupNames = null;
     }
   }
 
-  public String getProcessorIdentifier() {
-    return this.processorIdentifier;
+  public String getValidWriteIdList() {
+    return this.validWriteIdList;
   }
 
-  public void setProcessorIdentifier(String processorIdentifier) {
-    this.processorIdentifier = processorIdentifier;
+  public void setValidWriteIdList(String validWriteIdList) {
+    this.validWriteIdList = validWriteIdList;
   }
 
-  public void unsetProcessorIdentifier() {
-    this.processorIdentifier = null;
+  public void unsetValidWriteIdList() {
+    this.validWriteIdList = null;
   }
 
-  /** Returns true if field processorIdentifier is set (has been assigned a value) and false otherwise */
-  public boolean isSetProcessorIdentifier() {
-    return this.processorIdentifier != 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 setProcessorIdentifierIsSet(boolean value) {
+  public void setValidWriteIdListIsSet(boolean value) {
     if (!value) {
-      this.processorIdentifier = null;
+      this.validWriteIdList = null;
     }
   }
 
-  public String getEngine() {
-    return this.engine;
+  public long getId() {
+    return this.id;
   }
 
-  public void setEngine(String engine) {
-    this.engine = engine;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetEngine() {
-    this.engine = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field engine is set (has been assigned a value) and false otherwise */
-  public boolean isSetEngine() {
-    return this.engine != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setEngineIsSet(boolean value) {
-    if (!value) {
-      this.engine = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -478,59 +506,51 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case CAPABILITIES:
+    case PART_VALS:
       if (value == null) {
-        unsetCapabilities();
+        unsetPartVals();
       } else {
-        setCapabilities((ClientCapabilities)value);
+        setPartVals((List<String>)value);
       }
       break;
 
-    case CAT_NAME:
+    case MAX_PARTS:
       if (value == null) {
-        unsetCatName();
+        unsetMaxParts();
       } else {
-        setCatName((String)value);
+        setMaxParts((Short)value);
       }
       break;
 
-    case VALID_WRITE_ID_LIST:
+    case USER_NAME:
       if (value == null) {
-        unsetValidWriteIdList();
+        unsetUserName();
       } else {
-        setValidWriteIdList((String)value);
+        setUserName((String)value);
       }
       break;
 
-    case GET_COLUMN_STATS:
+    case GROUP_NAMES:
       if (value == null) {
-        unsetGetColumnStats();
+        unsetGroupNames();
       } else {
-        setGetColumnStats((Boolean)value);
+        setGroupNames((List<String>)value);
       }
       break;
 
-    case PROCESSOR_CAPABILITIES:
-      if (value == null) {
-        unsetProcessorCapabilities();
-      } else {
-        setProcessorCapabilities((List<String>)value);
-      }
-      break;
-
-    case PROCESSOR_IDENTIFIER:
+    case VALID_WRITE_ID_LIST:
       if (value == null) {
-        unsetProcessorIdentifier();
+        unsetValidWriteIdList();
       } else {
-        setProcessorIdentifier((String)value);
+        setValidWriteIdList((String)value);
       }
       break;
 
-    case ENGINE:
+    case ID:
       if (value == null) {
-        unsetEngine();
+        unsetId();
       } else {
-        setEngine((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -539,32 +559,32 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case CAPABILITIES:
-      return getCapabilities();
-
-    case CAT_NAME:
-      return getCatName();
+    case PART_VALS:
+      return getPartVals();
 
-    case VALID_WRITE_ID_LIST:
-      return getValidWriteIdList();
+    case MAX_PARTS:
+      return getMaxParts();
 
-    case GET_COLUMN_STATS:
-      return isGetColumnStats();
+    case USER_NAME:
+      return getUserName();
 
-    case PROCESSOR_CAPABILITIES:
-      return getProcessorCapabilities();
+    case GROUP_NAMES:
+      return getGroupNames();
 
-    case PROCESSOR_IDENTIFIER:
-      return getProcessorIdentifier();
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
 
-    case ENGINE:
-      return getEngine();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -577,24 +597,24 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case CAPABILITIES:
-      return isSetCapabilities();
-    case CAT_NAME:
-      return isSetCatName();
+    case PART_VALS:
+      return isSetPartVals();
+    case MAX_PARTS:
+      return isSetMaxParts();
+    case USER_NAME:
+      return isSetUserName();
+    case GROUP_NAMES:
+      return isSetGroupNames();
     case VALID_WRITE_ID_LIST:
       return isSetValidWriteIdList();
-    case GET_COLUMN_STATS:
-      return isSetGetColumnStats();
-    case PROCESSOR_CAPABILITIES:
-      return isSetProcessorCapabilities();
-    case PROCESSOR_IDENTIFIER:
-      return isSetProcessorIdentifier();
-    case ENGINE:
-      return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -603,15 +623,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof GetTableRequest)
-      return this.equals((GetTableRequest)that);
+    if (that instanceof GetPartitionsPsWithAuthRequest)
+      return this.equals((GetPartitionsPsWithAuthRequest)that);
     return false;
   }
 
-  public boolean equals(GetTableRequest that) {
+  public boolean equals(GetPartitionsPsWithAuthRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -630,66 +659,57 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_capabilities = true && this.isSetCapabilities();
-    boolean that_present_capabilities = true && that.isSetCapabilities();
-    if (this_present_capabilities || that_present_capabilities) {
-      if (!(this_present_capabilities && that_present_capabilities))
+    boolean this_present_partVals = true && this.isSetPartVals();
+    boolean that_present_partVals = true && that.isSetPartVals();
+    if (this_present_partVals || that_present_partVals) {
+      if (!(this_present_partVals && that_present_partVals))
         return false;
-      if (!this.capabilities.equals(that.capabilities))
+      if (!this.partVals.equals(that.partVals))
         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))
+    boolean this_present_maxParts = true && this.isSetMaxParts();
+    boolean that_present_maxParts = true && that.isSetMaxParts();
+    if (this_present_maxParts || that_present_maxParts) {
+      if (!(this_present_maxParts && that_present_maxParts))
         return false;
-      if (!this.catName.equals(that.catName))
+      if (this.maxParts != that.maxParts)
         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))
+    boolean this_present_userName = true && this.isSetUserName();
+    boolean that_present_userName = true && that.isSetUserName();
+    if (this_present_userName || that_present_userName) {
+      if (!(this_present_userName && that_present_userName))
         return false;
-      if (!this.validWriteIdList.equals(that.validWriteIdList))
+      if (!this.userName.equals(that.userName))
         return false;
     }
 
-    boolean this_present_getColumnStats = true && this.isSetGetColumnStats();
-    boolean that_present_getColumnStats = true && that.isSetGetColumnStats();
-    if (this_present_getColumnStats || that_present_getColumnStats) {
-      if (!(this_present_getColumnStats && that_present_getColumnStats))
+    boolean this_present_groupNames = true && this.isSetGroupNames();
+    boolean that_present_groupNames = true && that.isSetGroupNames();
+    if (this_present_groupNames || that_present_groupNames) {
+      if (!(this_present_groupNames && that_present_groupNames))
         return false;
-      if (this.getColumnStats != that.getColumnStats)
+      if (!this.groupNames.equals(that.groupNames))
         return false;
     }
 
-    boolean this_present_processorCapabilities = true && this.isSetProcessorCapabilities();
-    boolean that_present_processorCapabilities = true && that.isSetProcessorCapabilities();
-    if (this_present_processorCapabilities || that_present_processorCapabilities) {
-      if (!(this_present_processorCapabilities && that_present_processorCapabilities))
-        return false;
-      if (!this.processorCapabilities.equals(that.processorCapabilities))
-        return false;
-    }
-
-    boolean this_present_processorIdentifier = true && this.isSetProcessorIdentifier();
-    boolean that_present_processorIdentifier = true && that.isSetProcessorIdentifier();
-    if (this_present_processorIdentifier || that_present_processorIdentifier) {
-      if (!(this_present_processorIdentifier && that_present_processorIdentifier))
+    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.processorIdentifier.equals(that.processorIdentifier))
+      if (!this.validWriteIdList.equals(that.validWriteIdList))
         return false;
     }
 
-    boolean this_present_engine = true && this.isSetEngine();
-    boolean that_present_engine = true && that.isSetEngine();
-    if (this_present_engine || that_present_engine) {
-      if (!(this_present_engine && that_present_engine))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.engine.equals(that.engine))
+      if (this.id != that.id)
         return false;
     }
 
@@ -700,6 +720,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
     boolean present_dbName = true && (isSetDbName());
     list.add(present_dbName);
     if (present_dbName)
@@ -710,138 +735,133 @@ import org.slf4j.LoggerFactory;
     if (present_tblName)
       list.add(tblName);
 
-    boolean present_capabilities = true && (isSetCapabilities());
-    list.add(present_capabilities);
-    if (present_capabilities)
-      list.add(capabilities);
+    boolean present_partVals = true && (isSetPartVals());
+    list.add(present_partVals);
+    if (present_partVals)
+      list.add(partVals);
 
-    boolean present_catName = true && (isSetCatName());
-    list.add(present_catName);
-    if (present_catName)
-      list.add(catName);
+    boolean present_maxParts = true && (isSetMaxParts());
+    list.add(present_maxParts);
+    if (present_maxParts)
+      list.add(maxParts);
+
+    boolean present_userName = true && (isSetUserName());
+    list.add(present_userName);
+    if (present_userName)
+      list.add(userName);
+
+    boolean present_groupNames = true && (isSetGroupNames());
+    list.add(present_groupNames);
+    if (present_groupNames)
+      list.add(groupNames);
 
     boolean present_validWriteIdList = true && (isSetValidWriteIdList());
     list.add(present_validWriteIdList);
     if (present_validWriteIdList)
       list.add(validWriteIdList);
 
-    boolean present_getColumnStats = true && (isSetGetColumnStats());
-    list.add(present_getColumnStats);
-    if (present_getColumnStats)
-      list.add(getColumnStats);
-
-    boolean present_processorCapabilities = true && (isSetProcessorCapabilities());
-    list.add(present_processorCapabilities);
-    if (present_processorCapabilities)
-      list.add(processorCapabilities);
-
-    boolean present_processorIdentifier = true && (isSetProcessorIdentifier());
-    list.add(present_processorIdentifier);
-    if (present_processorIdentifier)
-      list.add(processorIdentifier);
-
-    boolean present_engine = true && (isSetEngine());
-    list.add(present_engine);
-    if (present_engine)
-      list.add(engine);
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
 
     return list.hashCode();
   }
 
   @Override
-  public int compareTo(GetTableRequest other) {
+  public int compareTo(GetPartitionsPsWithAuthRequest other) {
     if (!getClass().equals(other.getClass())) {
       return getClass().getName().compareTo(other.getClass().getName());
     }
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDbName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+    if (isSetCatName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTblName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+    if (isSetDbName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCapabilities()).compareTo(other.isSetCapabilities());
+    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCapabilities()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.capabilities, other.capabilities);
+    if (isSetTblName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+    lastComparison = Boolean.valueOf(isSetPartVals()).compareTo(other.isSetPartVals());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCatName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+    if (isSetPartVals()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partVals, other.partVals);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetValidWriteIdList()).compareTo(other.isSetValidWriteIdList());
+    lastComparison = Boolean.valueOf(isSetMaxParts()).compareTo(other.isSetMaxParts());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetValidWriteIdList()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validWriteIdList, other.validWriteIdList);
+    if (isSetMaxParts()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.maxParts, other.maxParts);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetGetColumnStats()).compareTo(other.isSetGetColumnStats());
+    lastComparison = Boolean.valueOf(isSetUserName()).compareTo(other.isSetUserName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetGetColumnStats()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.getColumnStats, other.getColumnStats);
+    if (isSetUserName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.userName, other.userName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetProcessorCapabilities()).compareTo(other.isSetProcessorCapabilities());
+    lastComparison = Boolean.valueOf(isSetGroupNames()).compareTo(other.isSetGroupNames());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetProcessorCapabilities()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processorCapabilities, other.processorCapabilities);
+    if (isSetGroupNames()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.groupNames, other.groupNames);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetProcessorIdentifier()).compareTo(other.isSetProcessorIdentifier());
+    lastComparison = Boolean.valueOf(isSetValidWriteIdList()).compareTo(other.isSetValidWriteIdList());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetProcessorIdentifier()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processorIdentifier, other.processorIdentifier);
+    if (isSetValidWriteIdList()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.validWriteIdList, other.validWriteIdList);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetEngine()).compareTo(other.isSetEngine());
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetEngine()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.engine, other.engine);
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -863,9 +883,19 @@ import org.slf4j.LoggerFactory;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("GetTableRequest(");
+    StringBuilder sb = new StringBuilder("GetPartitionsPsWithAuthRequest(");
     boolean first = true;
 
+    if (isSetCatName()) {
+      sb.append("catName:");
+      if (this.catName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.catName);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
     sb.append("dbName:");
     if (this.dbName == null) {
       sb.append("null");
@@ -881,70 +911,56 @@ import org.slf4j.LoggerFactory;
       sb.append(this.tblName);
     }
     first = false;
-    if (isSetCapabilities()) {
+    if (isSetPartVals()) {
       if (!first) sb.append(", ");
-      sb.append("capabilities:");
-      if (this.capabilities == null) {
+      sb.append("partVals:");
+      if (this.partVals == null) {
         sb.append("null");
       } else {
-        sb.append(this.capabilities);
+        sb.append(this.partVals);
       }
       first = false;
     }
-    if (isSetCatName()) {
+    if (isSetMaxParts()) {
       if (!first) sb.append(", ");
-      sb.append("catName:");
-      if (this.catName == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.catName);
-      }
+      sb.append("maxParts:");
+      sb.append(this.maxParts);
       first = false;
     }
-    if (isSetValidWriteIdList()) {
+    if (isSetUserName()) {
       if (!first) sb.append(", ");
-      sb.append("validWriteIdList:");
-      if (this.validWriteIdList == null) {
+      sb.append("userName:");
+      if (this.userName == null) {
         sb.append("null");
       } else {
-        sb.append(this.validWriteIdList);
+        sb.append(this.userName);
       }
       first = false;
     }
-    if (isSetGetColumnStats()) {
-      if (!first) sb.append(", ");
-      sb.append("getColumnStats:");
-      sb.append(this.getColumnStats);
-      first = false;
-    }
-    if (isSetProcessorCapabilities()) {
+    if (isSetGroupNames()) {
       if (!first) sb.append(", ");
-      sb.append("processorCapabilities:");
-      if (this.processorCapabilities == null) {
+      sb.append("groupNames:");
+      if (this.groupNames == null) {
         sb.append("null");
       } else {
-        sb.append(this.processorCapabilities);
+        sb.append(this.groupNames);
       }
       first = false;
     }
-    if (isSetProcessorIdentifier()) {
+    if (isSetValidWriteIdList()) {
       if (!first) sb.append(", ");
-      sb.append("processorIdentifier:");
-      if (this.processorIdentifier == null) {
+      sb.append("validWriteIdList:");
+      if (this.validWriteIdList == null) {
         sb.append("null");
       } else {
-        sb.append(this.processorIdentifier);
+        sb.append(this.validWriteIdList);
       }
       first = false;
     }
-    if (isSetEngine()) {
+    if (isSetId()) {
       if (!first) sb.append(", ");
-      sb.append("engine:");
-      if (this.engine == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.engine);
-      }
+      sb.append("id:");
+      sb.append(this.id);
       first = false;
     }
     sb.append(")");
@@ -962,9 +978,6 @@ import org.slf4j.LoggerFactory;
     }
 
     // check for sub-struct validity
-    if (capabilities != null) {
-      capabilities.validate();
-    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -985,15 +998,15 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  private static class GetTableRequestStandardSchemeFactory implements SchemeFactory {
-    public GetTableRequestStandardScheme getScheme() {
-      return new GetTableRequestStandardScheme();
+  private static class GetPartitionsPsWithAuthRequestStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionsPsWithAuthRequestStandardScheme getScheme() {
+      return new GetPartitionsPsWithAuthRequestStandardScheme();
     }
   }
 
-  private static class GetTableRequestStandardScheme extends StandardScheme<GetTableRequest> {
+  private static class GetPartitionsPsWithAuthRequestStandardScheme extends StandardScheme<GetPartitionsPsWithAuthRequest> {
 
-    public void read(org.apache.thrift.protocol.TProtocol iprot, GetTableRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionsPsWithAuthRequest struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
       iprot.readStructBegin();
       while (true)
@@ -1003,7 +1016,15 @@ import org.slf4j.LoggerFactory;
           break;
         }
         switch (schemeField.id) {
-          case 1: // DB_NAME
+          case 1: // 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 2: // DB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.dbName = iprot.readString();
               struct.setDbNameIsSet(true);
@@ -1011,7 +1032,7 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // TBL_NAME
+          case 3: // TBL_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
               struct.tblName = iprot.readString();
               struct.setTblNameIsSet(true);
@@ -1019,69 +1040,70 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 3: // CAPABILITIES
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.capabilities = new ClientCapabilities();
-              struct.capabilities.read(iprot);
-              struct.setCapabilitiesIsSet(true);
+          case 4: // PART_VALS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1256 = iprot.readListBegin();
+                struct.partVals = new ArrayList<String>(_list1256.size);
+                String _elem1257;
+                for (int _i1258 = 0; _i1258 < _list1256.size; ++_i1258)
+                {
+                  _elem1257 = iprot.readString();
+                  struct.partVals.add(_elem1257);
+                }
+                iprot.readListEnd();
+              }
+              struct.setPartValsIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 4: // CAT_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.catName = iprot.readString();
-              struct.setCatNameIsSet(true);
+          case 5: // MAX_PARTS
+            if (schemeField.type == org.apache.thrift.protocol.TType.I16) {
+              struct.maxParts = iprot.readI16();
+              struct.setMaxPartsIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // VALID_WRITE_ID_LIST
+          case 6: // USER_NAME
             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;
-          case 7: // GET_COLUMN_STATS
-            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
-              struct.getColumnStats = iprot.readBool();
-              struct.setGetColumnStatsIsSet(true);
+              struct.userName = iprot.readString();
+              struct.setUserNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 8: // PROCESSOR_CAPABILITIES
+          case 7: // GROUP_NAMES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list944 = iprot.readListBegin();
-                struct.processorCapabilities = new ArrayList<String>(_list944.size);
-                String _elem945;
-                for (int _i946 = 0; _i946 < _list944.size; ++_i946)
+                org.apache.thrift.protocol.TList _list1259 = iprot.readListBegin();
+                struct.groupNames = new ArrayList<String>(_list1259.size);
+                String _elem1260;
+                for (int _i1261 = 0; _i1261 < _list1259.size; ++_i1261)
                 {
-                  _elem945 = iprot.readString();
-                  struct.processorCapabilities.add(_elem945);
+                  _elem1260 = iprot.readString();
+                  struct.groupNames.add(_elem1260);
                 }
                 iprot.readListEnd();
               }
-              struct.setProcessorCapabilitiesIsSet(true);
+              struct.setGroupNamesIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 9: // PROCESSOR_IDENTIFIER
+          case 8: // VALID_WRITE_ID_LIST
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.processorIdentifier = iprot.readString();
-              struct.setProcessorIdentifierIsSet(true);
+              struct.validWriteIdList = iprot.readString();
+              struct.setValidWriteIdListIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 10: // ENGINE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.engine = iprot.readString();
-              struct.setEngineIsSet(true);
+          case 9: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -1095,10 +1117,17 @@ import org.slf4j.LoggerFactory;
       struct.validate();
     }
 
-    public void write(org.apache.thrift.protocol.TProtocol oprot, GetTableRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol oprot, GetPartitionsPsWithAuthRequest struct) throws org.apache.thrift.TException {
       struct.validate();
 
       oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.catName != null) {
+        if (struct.isSetCatName()) {
+          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+          oprot.writeString(struct.catName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.dbName != null) {
         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
         oprot.writeString(struct.dbName);
@@ -1109,59 +1138,57 @@ import org.slf4j.LoggerFactory;
         oprot.writeString(struct.tblName);
         oprot.writeFieldEnd();
       }
-      if (struct.capabilities != null) {
-        if (struct.isSetCapabilities()) {
-          oprot.writeFieldBegin(CAPABILITIES_FIELD_DESC);
-          struct.capabilities.write(oprot);
+      if (struct.partVals != null) {
+        if (struct.isSetPartVals()) {
+          oprot.writeFieldBegin(PART_VALS_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.partVals.size()));
+            for (String _iter1262 : struct.partVals)
+            {
+              oprot.writeString(_iter1262);
+            }
+            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.isSetMaxParts()) {
+        oprot.writeFieldBegin(MAX_PARTS_FIELD_DESC);
+        oprot.writeI16(struct.maxParts);
+        oprot.writeFieldEnd();
       }
-      if (struct.validWriteIdList != null) {
-        if (struct.isSetValidWriteIdList()) {
-          oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
-          oprot.writeString(struct.validWriteIdList);
+      if (struct.userName != null) {
+        if (struct.isSetUserName()) {
+          oprot.writeFieldBegin(USER_NAME_FIELD_DESC);
+          oprot.writeString(struct.userName);
           oprot.writeFieldEnd();
         }
       }
-      if (struct.isSetGetColumnStats()) {
-        oprot.writeFieldBegin(GET_COLUMN_STATS_FIELD_DESC);
-        oprot.writeBool(struct.getColumnStats);
-        oprot.writeFieldEnd();
-      }
-      if (struct.processorCapabilities != null) {
-        if (struct.isSetProcessorCapabilities()) {
-          oprot.writeFieldBegin(PROCESSOR_CAPABILITIES_FIELD_DESC);
+      if (struct.groupNames != null) {
+        if (struct.isSetGroupNames()) {
+          oprot.writeFieldBegin(GROUP_NAMES_FIELD_DESC);
           {
-            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.processorCapabilities.size()));
-            for (String _iter947 : struct.processorCapabilities)
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.groupNames.size()));
+            for (String _iter1263 : struct.groupNames)
             {
-              oprot.writeString(_iter947);
+              oprot.writeString(_iter1263);
             }
             oprot.writeListEnd();
           }
           oprot.writeFieldEnd();
         }
       }
-      if (struct.processorIdentifier != null) {
-        if (struct.isSetProcessorIdentifier()) {
-          oprot.writeFieldBegin(PROCESSOR_IDENTIFIER_FIELD_DESC);
-          oprot.writeString(struct.processorIdentifier);
+      if (struct.validWriteIdList != null) {
+        if (struct.isSetValidWriteIdList()) {
+          oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
+          oprot.writeString(struct.validWriteIdList);
           oprot.writeFieldEnd();
         }
       }
-      if (struct.engine != null) {
-        if (struct.isSetEngine()) {
-          oprot.writeFieldBegin(ENGINE_FIELD_DESC);
-          oprot.writeString(struct.engine);
-          oprot.writeFieldEnd();
-        }
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
+        oprot.writeFieldEnd();
       }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
@@ -1169,73 +1196,79 @@ import org.slf4j.LoggerFactory;
 
   }
 
-  private static class GetTableRequestTupleSchemeFactory implements SchemeFactory {
-    public GetTableRequestTupleScheme getScheme() {
-      return new GetTableRequestTupleScheme();
+  private static class GetPartitionsPsWithAuthRequestTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionsPsWithAuthRequestTupleScheme getScheme() {
+      return new GetPartitionsPsWithAuthRequestTupleScheme();
     }
   }
 
-  private static class GetTableRequestTupleScheme extends TupleScheme<GetTableRequest> {
+  private static class GetPartitionsPsWithAuthRequestTupleScheme extends TupleScheme<GetPartitionsPsWithAuthRequest> {
 
     @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, GetTableRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionsPsWithAuthRequest struct) throws org.apache.thrift.TException {
       TTupleProtocol oprot = (TTupleProtocol) prot;
       oprot.writeString(struct.dbName);
       oprot.writeString(struct.tblName);
       BitSet optionals = new BitSet();
-      if (struct.isSetCapabilities()) {
+      if (struct.isSetCatName()) {
         optionals.set(0);
       }
-      if (struct.isSetCatName()) {
+      if (struct.isSetPartVals()) {
         optionals.set(1);
       }
-      if (struct.isSetValidWriteIdList()) {
+      if (struct.isSetMaxParts()) {
         optionals.set(2);
       }
-      if (struct.isSetGetColumnStats()) {
+      if (struct.isSetUserName()) {
         optionals.set(3);
       }
-      if (struct.isSetProcessorCapabilities()) {
+      if (struct.isSetGroupNames()) {
         optionals.set(4);
       }
-      if (struct.isSetProcessorIdentifier()) {
+      if (struct.isSetValidWriteIdList()) {
         optionals.set(5);
       }
-      if (struct.isSetEngine()) {
+      if (struct.isSetId()) {
         optionals.set(6);
       }
       oprot.writeBitSet(optionals, 7);
-      if (struct.isSetCapabilities()) {
-        struct.capabilities.write(oprot);
-      }
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
-      if (struct.isSetValidWriteIdList()) {
-        oprot.writeString(struct.validWriteIdList);
+      if (struct.isSetPartVals()) {
+        {
+          oprot.writeI32(struct.partVals.size());
+          for (String _iter1264 : struct.partVals)
+          {
+            oprot.writeString(_iter1264);
+          }
+        }
+      }
+      if (struct.isSetMaxParts()) {
+        oprot.writeI16(struct.maxParts);
       }
-      if (struct.isSetGetColumnStats()) {
-        oprot.writeBool(struct.getColumnStats);
+      if (struct.isSetUserName()) {
+        oprot.writeString(struct.userName);
       }
-      if (struct.isSetProcessorCapabilities()) {
+      if (struct.isSetGroupNames()) {
         {
-          oprot.writeI32(struct.processorCapabilities.size());
-          for (String _iter948 : struct.processorCapabilities)
+          oprot.writeI32(struct.groupNames.size());
+          for (String _iter1265 : struct.groupNames)
           {
-            oprot.writeString(_iter948);
+            oprot.writeString(_iter1265);
           }
         }
       }
-      if (struct.isSetProcessorIdentifier()) {
-        oprot.writeString(struct.processorIdentifier);
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
       }
-      if (struct.isSetEngine()) {
-        oprot.writeString(struct.engine);
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
       }
     }
 
     @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, GetTableRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionsPsWithAuthRequest struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.dbName = iprot.readString();
       struct.setDbNameIsSet(true);
@@ -1243,42 +1276,50 @@ import org.slf4j.LoggerFactory;
       struct.setTblNameIsSet(true);
       BitSet incoming = iprot.readBitSet(7);
       if (incoming.get(0)) {
-        struct.capabilities = new ClientCapabilities();
-        struct.capabilities.read(iprot);
-        struct.setCapabilitiesIsSet(true);
-      }
-      if (incoming.get(1)) {
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
       }
+      if (incoming.get(1)) {
+        {
+          org.apache.thrift.protocol.TList _list1266 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.partVals = new ArrayList<String>(_list1266.size);
+          String _elem1267;
+          for (int _i1268 = 0; _i1268 < _list1266.size; ++_i1268)
+          {
+            _elem1267 = iprot.readString();
+            struct.partVals.add(_elem1267);
+          }
+        }
+        struct.setPartValsIsSet(true);
+      }
       if (incoming.get(2)) {
-        struct.validWriteIdList = iprot.readString();
-        struct.setValidWriteIdListIsSet(true);
+        struct.maxParts = iprot.readI16();
+        struct.setMaxPartsIsSet(true);
       }
       if (incoming.get(3)) {
-        struct.getColumnStats = iprot.readBool();
-        struct.setGetColumnStatsIsSet(true);
+        struct.userName = iprot.readString();
+        struct.setUserNameIsSet(true);
       }
       if (incoming.get(4)) {
         {
-          org.apache.thrift.protocol.TList _list949 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.processorCapabilities = new ArrayList<String>(_list949.size);
-          String _elem950;
-          for (int _i951 = 0; _i951 < _list949.size; ++_i951)
+          org.apache.thrift.protocol.TList _list1269 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.groupNames = new ArrayList<String>(_list1269.size);
+          String _elem1270;
+          for (int _i1271 = 0; _i1271 < _list1269.size; ++_i1271)
           {
-            _elem950 = iprot.readString();
-            struct.processorCapabilities.add(_elem950);
+            _elem1270 = iprot.readString();
+            struct.groupNames.add(_elem1270);
           }
         }
-        struct.setProcessorCapabilitiesIsSet(true);
+        struct.setGroupNamesIsSet(true);
       }
       if (incoming.get(5)) {
-        struct.processorIdentifier = iprot.readString();
-        struct.setProcessorIdentifierIsSet(true);
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
       }
       if (incoming.get(6)) {
-        struct.engine = iprot.readString();
-        struct.setEngineIsSet(true);
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
       }
     }
   }
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthResponse.java
new file mode 100644
index 0000000..00aa02d
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsPsWithAuthResponse.java
@@ -0,0 +1,443 @@
+/**
+ * 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 GetPartitionsPsWithAuthResponse implements org.apache.thrift.TBase<GetPartitionsPsWithAuthResponse, GetPartitionsPsWithAuthResponse._Fields>, java.io.Serializable, Cloneable, Comparable<GetPartitionsPsWithAuthResponse> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetPartitionsPsWithAuthResponse");
+
+  private static final org.apache.thrift.protocol.TField PARTITIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("partitions", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new GetPartitionsPsWithAuthResponseStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetPartitionsPsWithAuthResponseTupleSchemeFactory());
+  }
+
+  private List<Partition> partitions; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    PARTITIONS((short)1, "partitions");
+
+    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: // PARTITIONS
+          return PARTITIONS;
+        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
+  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.PARTITIONS, new org.apache.thrift.meta_data.FieldMetaData("partitions", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Partition.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetPartitionsPsWithAuthResponse.class, metaDataMap);
+  }
+
+  public GetPartitionsPsWithAuthResponse() {
+  }
+
+  public GetPartitionsPsWithAuthResponse(
+    List<Partition> partitions)
+  {
+    this();
+    this.partitions = partitions;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public GetPartitionsPsWithAuthResponse(GetPartitionsPsWithAuthResponse other) {
+    if (other.isSetPartitions()) {
+      List<Partition> __this__partitions = new ArrayList<Partition>(other.partitions.size());
+      for (Partition other_element : other.partitions) {
+        __this__partitions.add(new Partition(other_element));
+      }
+      this.partitions = __this__partitions;
+    }
+  }
+
+  public GetPartitionsPsWithAuthResponse deepCopy() {
+    return new GetPartitionsPsWithAuthResponse(this);
+  }
+
+  @Override
+  public void clear() {
+    this.partitions = null;
+  }
+
+  public int getPartitionsSize() {
+    return (this.partitions == null) ? 0 : this.partitions.size();
+  }
+
+  public java.util.Iterator<Partition> getPartitionsIterator() {
+    return (this.partitions == null) ? null : this.partitions.iterator();
+  }
+
+  public void addToPartitions(Partition elem) {
+    if (this.partitions == null) {
+      this.partitions = new ArrayList<Partition>();
+    }
+    this.partitions.add(elem);
+  }
+
+  public List<Partition> getPartitions() {
+    return this.partitions;
+  }
+
+  public void setPartitions(List<Partition> partitions) {
+    this.partitions = partitions;
+  }
+
+  public void unsetPartitions() {
+    this.partitions = null;
+  }
+
+  /** Returns true if field partitions is set (has been assigned a value) and false otherwise */
+  public boolean isSetPartitions() {
+    return this.partitions != null;
+  }
+
+  public void setPartitionsIsSet(boolean value) {
+    if (!value) {
+      this.partitions = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PARTITIONS:
+      if (value == null) {
+        unsetPartitions();
+      } else {
+        setPartitions((List<Partition>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PARTITIONS:
+      return getPartitions();
+
+    }
+    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 PARTITIONS:
+      return isSetPartitions();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof GetPartitionsPsWithAuthResponse)
+      return this.equals((GetPartitionsPsWithAuthResponse)that);
+    return false;
+  }
+
+  public boolean equals(GetPartitionsPsWithAuthResponse that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_partitions = true && this.isSetPartitions();
+    boolean that_present_partitions = true && that.isSetPartitions();
+    if (this_present_partitions || that_present_partitions) {
+      if (!(this_present_partitions && that_present_partitions))
+        return false;
+      if (!this.partitions.equals(that.partitions))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_partitions = true && (isSetPartitions());
+    list.add(present_partitions);
+    if (present_partitions)
+      list.add(partitions);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(GetPartitionsPsWithAuthResponse other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetPartitions()).compareTo(other.isSetPartitions());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPartitions()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partitions, other.partitions);
+      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("GetPartitionsPsWithAuthResponse(");
+    boolean first = true;
+
+    sb.append("partitions:");
+    if (this.partitions == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.partitions);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetPartitions()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'partitions' 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 {
+      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 GetPartitionsPsWithAuthResponseStandardSchemeFactory implements SchemeFactory {
+    public GetPartitionsPsWithAuthResponseStandardScheme getScheme() {
+      return new GetPartitionsPsWithAuthResponseStandardScheme();
+    }
+  }
+
+  private static class GetPartitionsPsWithAuthResponseStandardScheme extends StandardScheme<GetPartitionsPsWithAuthResponse> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetPartitionsPsWithAuthResponse 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: // PARTITIONS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1272 = iprot.readListBegin();
+                struct.partitions = new ArrayList<Partition>(_list1272.size);
+                Partition _elem1273;
+                for (int _i1274 = 0; _i1274 < _list1272.size; ++_i1274)
+                {
+                  _elem1273 = new Partition();
+                  _elem1273.read(iprot);
+                  struct.partitions.add(_elem1273);
+                }
+                iprot.readListEnd();
+              }
+              struct.setPartitionsIsSet(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, GetPartitionsPsWithAuthResponse struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.partitions != null) {
+        oprot.writeFieldBegin(PARTITIONS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.partitions.size()));
+          for (Partition _iter1275 : struct.partitions)
+          {
+            _iter1275.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class GetPartitionsPsWithAuthResponseTupleSchemeFactory implements SchemeFactory {
+    public GetPartitionsPsWithAuthResponseTupleScheme getScheme() {
+      return new GetPartitionsPsWithAuthResponseTupleScheme();
+    }
+  }
+
+  private static class GetPartitionsPsWithAuthResponseTupleScheme extends TupleScheme<GetPartitionsPsWithAuthResponse> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetPartitionsPsWithAuthResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      {
+        oprot.writeI32(struct.partitions.size());
+        for (Partition _iter1276 : struct.partitions)
+        {
+          _iter1276.write(oprot);
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionsPsWithAuthResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      {
+        org.apache.thrift.protocol.TList _list1277 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.partitions = new ArrayList<Partition>(_list1277.size);
+        Partition _elem1278;
+        for (int _i1279 = 0; _i1279 < _list1277.size; ++_i1279)
+        {
+          _elem1278 = new Partition();
+          _elem1278.read(iprot);
+          struct.partitions.add(_elem1278);
+        }
+      }
+      struct.setPartitionsIsSet(true);
+    }
+  }
+
+}
+
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsRequest.java
index c927bbc..80619e8 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetPartitionsRequest.java
@@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField FILTER_SPEC_FIELD_DESC = new org.apache.thrift.protocol.TField("filterSpec", org.apache.thrift.protocol.TType.STRUCT, (short)8);
   private static final org.apache.thrift.protocol.TField PROCESSOR_CAPABILITIES_FIELD_DESC = new org.apache.thrift.protocol.TField("processorCapabilities", org.apache.thrift.protocol.TType.LIST, (short)9);
   private static final org.apache.thrift.protocol.TField PROCESSOR_IDENTIFIER_FIELD_DESC = new org.apache.thrift.protocol.TField("processorIdentifier", org.apache.thrift.protocol.TType.STRING, (short)10);
+  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)11);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -65,6 +66,7 @@ import org.slf4j.LoggerFactory;
   private GetPartitionsFilterSpec filterSpec; // required
   private List<String> processorCapabilities; // optional
   private String processorIdentifier; // 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 {
@@ -77,7 +79,8 @@ import org.slf4j.LoggerFactory;
     PROJECTION_SPEC((short)7, "projectionSpec"),
     FILTER_SPEC((short)8, "filterSpec"),
     PROCESSOR_CAPABILITIES((short)9, "processorCapabilities"),
-    PROCESSOR_IDENTIFIER((short)10, "processorIdentifier");
+    PROCESSOR_IDENTIFIER((short)10, "processorIdentifier"),
+    VALID_WRITE_ID_LIST((short)11, "validWriteIdList");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -112,6 +115,8 @@ import org.slf4j.LoggerFactory;
           return PROCESSOR_CAPABILITIES;
         case 10: // PROCESSOR_IDENTIFIER
           return PROCESSOR_IDENTIFIER;
+        case 11: // VALID_WRITE_ID_LIST
+          return VALID_WRITE_ID_LIST;
         default:
           return null;
       }
@@ -154,7 +159,7 @@ import org.slf4j.LoggerFactory;
   // isset id assignments
   private static final int __WITHAUTH_ISSET_ID = 0;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.WITH_AUTH,_Fields.USER,_Fields.GROUP_NAMES,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER};
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.WITH_AUTH,_Fields.USER,_Fields.GROUP_NAMES,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_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);
@@ -180,6 +185,8 @@ import org.slf4j.LoggerFactory;
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
     tmpMap.put(_Fields.PROCESSOR_IDENTIFIER, new org.apache.thrift.meta_data.FieldMetaData("processorIdentifier", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    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(GetPartitionsRequest.class, metaDataMap);
   }
@@ -235,6 +242,9 @@ import org.slf4j.LoggerFactory;
     if (other.isSetProcessorIdentifier()) {
       this.processorIdentifier = other.processorIdentifier;
     }
+    if (other.isSetValidWriteIdList()) {
+      this.validWriteIdList = other.validWriteIdList;
+    }
   }
 
   public GetPartitionsRequest deepCopy() {
@@ -254,6 +264,7 @@ import org.slf4j.LoggerFactory;
     this.filterSpec = null;
     this.processorCapabilities = null;
     this.processorIdentifier = null;
+    this.validWriteIdList = null;
   }
 
   public String getCatName() {
@@ -515,6 +526,29 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  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 CAT_NAME:
@@ -597,6 +631,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case VALID_WRITE_ID_LIST:
+      if (value == null) {
+        unsetValidWriteIdList();
+      } else {
+        setValidWriteIdList((String)value);
+      }
+      break;
+
     }
   }
 
@@ -632,6 +674,9 @@ import org.slf4j.LoggerFactory;
     case PROCESSOR_IDENTIFIER:
       return getProcessorIdentifier();
 
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
+
     }
     throw new IllegalStateException();
   }
@@ -663,6 +708,8 @@ import org.slf4j.LoggerFactory;
       return isSetProcessorCapabilities();
     case PROCESSOR_IDENTIFIER:
       return isSetProcessorIdentifier();
+    case VALID_WRITE_ID_LIST:
+      return isSetValidWriteIdList();
     }
     throw new IllegalStateException();
   }
@@ -770,6 +817,15 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -827,6 +883,11 @@ import org.slf4j.LoggerFactory;
     if (present_processorIdentifier)
       list.add(processorIdentifier);
 
+    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
+    list.add(present_validWriteIdList);
+    if (present_validWriteIdList)
+      list.add(validWriteIdList);
+
     return list.hashCode();
   }
 
@@ -938,6 +999,16 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -1045,6 +1116,16 @@ import org.slf4j.LoggerFactory;
       }
       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();
   }
@@ -1198,6 +1279,14 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 11: // 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);
         }
@@ -1285,6 +1374,13 @@ import org.slf4j.LoggerFactory;
           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();
     }
@@ -1333,7 +1429,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetProcessorIdentifier()) {
         optionals.set(9);
       }
-      oprot.writeBitSet(optionals, 10);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(10);
+      }
+      oprot.writeBitSet(optionals, 11);
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
@@ -1376,12 +1475,15 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetProcessorIdentifier()) {
         oprot.writeString(struct.processorIdentifier);
       }
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
+      }
     }
 
     @Override
     public void read(org.apache.thrift.protocol.TProtocol prot, GetPartitionsRequest struct) throws org.apache.thrift.TException {
       TTupleProtocol iprot = (TTupleProtocol) prot;
-      BitSet incoming = iprot.readBitSet(10);
+      BitSet incoming = iprot.readBitSet(11);
       if (incoming.get(0)) {
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
@@ -1442,6 +1544,10 @@ import org.slf4j.LoggerFactory;
         struct.processorIdentifier = iprot.readString();
         struct.setProcessorIdentifierIsSet(true);
       }
+      if (incoming.get(10)) {
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaRequest.java
similarity index 70%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaRequest.java
index 1eafee5..3a875c6 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaRequest.java
@@ -35,37 +35,37 @@ 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 TableStatsRequest implements org.apache.thrift.TBase<TableStatsRequest, TableStatsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<TableStatsRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TableStatsRequest");
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class GetSchemaRequest implements org.apache.thrift.TBase<GetSchemaRequest, GetSchemaRequest._Fields>, java.io.Serializable, Cloneable, Comparable<GetSchemaRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetSchemaRequest");
 
-  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 CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField ENV_CONTEXT_FIELD_DESC = new org.apache.thrift.protocol.TField("envContext", org.apache.thrift.protocol.TType.STRUCT, (short)4);
   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)5);
-  private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new TableStatsRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new TableStatsRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new GetSchemaRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetSchemaRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private List<String> colNames; // required
-  private String catName; // optional
+  private EnvironmentContext envContext; // optional
   private String validWriteIdList; // optional
-  private String engine; // required
+  private long id; // 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"),
-    CAT_NAME((short)4, "catName"),
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    ENV_CONTEXT((short)4, "envContext"),
     VALID_WRITE_ID_LIST((short)5, "validWriteIdList"),
-    ENGINE((short)6, "engine");
+    ID((short)6, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -80,18 +80,18 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // COL_NAMES
-          return COL_NAMES;
-        case 4: // CAT_NAME
-          return CAT_NAME;
+        case 4: // ENV_CONTEXT
+          return ENV_CONTEXT;
         case 5: // VALID_WRITE_ID_LIST
           return VALID_WRITE_ID_LIST;
-        case 6: // ENGINE
-          return ENGINE;
+        case 6: // ID
+          return ID;
         default:
           return null;
       }
@@ -132,80 +132,101 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST};
+  private static final int __ID_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.ENV_CONTEXT,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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.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.ENV_CONTEXT, new org.apache.thrift.meta_data.FieldMetaData("envContext", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, EnvironmentContext.class)));
     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)));
-    tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TableStatsRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetSchemaRequest.class, metaDataMap);
   }
 
-  public TableStatsRequest() {
+  public GetSchemaRequest() {
+    this.id = -1L;
+
   }
 
-  public TableStatsRequest(
+  public GetSchemaRequest(
     String dbName,
-    String tblName,
-    List<String> colNames,
-    String engine)
+    String tblName)
   {
     this();
     this.dbName = dbName;
     this.tblName = tblName;
-    this.colNames = colNames;
-    this.engine = engine;
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public TableStatsRequest(TableStatsRequest other) {
+  public GetSchemaRequest(GetSchemaRequest other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     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.isSetCatName()) {
-      this.catName = other.catName;
+    if (other.isSetEnvContext()) {
+      this.envContext = new EnvironmentContext(other.envContext);
     }
     if (other.isSetValidWriteIdList()) {
       this.validWriteIdList = other.validWriteIdList;
     }
-    if (other.isSetEngine()) {
-      this.engine = other.engine;
-    }
+    this.id = other.id;
   }
 
-  public TableStatsRequest deepCopy() {
-    return new TableStatsRequest(this);
+  public GetSchemaRequest deepCopy() {
+    return new GetSchemaRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.colNames = null;
-    this.catName = null;
+    this.envContext = null;
     this.validWriteIdList = null;
-    this.engine = null;
+    this.id = -1L;
+
+  }
+
+  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 String getDbName() {
@@ -254,64 +275,26 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  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 String getCatName() {
-    return this.catName;
+  public EnvironmentContext getEnvContext() {
+    return this.envContext;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setEnvContext(EnvironmentContext envContext) {
+    this.envContext = envContext;
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetEnvContext() {
+    this.envContext = null;
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != null;
+  /** Returns true if field envContext is set (has been assigned a value) and false otherwise */
+  public boolean isSetEnvContext() {
+    return this.envContext != null;
   }
 
-  public void setCatNameIsSet(boolean value) {
+  public void setEnvContextIsSet(boolean value) {
     if (!value) {
-      this.catName = null;
+      this.envContext = null;
     }
   }
 
@@ -338,31 +321,38 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public String getEngine() {
-    return this.engine;
+  public long getId() {
+    return this.id;
   }
 
-  public void setEngine(String engine) {
-    this.engine = engine;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetEngine() {
-    this.engine = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field engine is set (has been assigned a value) and false otherwise */
-  public boolean isSetEngine() {
-    return this.engine != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setEngineIsSet(boolean value) {
-    if (!value) {
-      this.engine = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -379,19 +369,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case COL_NAMES:
+    case ENV_CONTEXT:
       if (value == null) {
-        unsetColNames();
+        unsetEnvContext();
       } else {
-        setColNames((List<String>)value);
-      }
-      break;
-
-    case CAT_NAME:
-      if (value == null) {
-        unsetCatName();
-      } else {
-        setCatName((String)value);
+        setEnvContext((EnvironmentContext)value);
       }
       break;
 
@@ -403,11 +385,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case ENGINE:
+    case ID:
       if (value == null) {
-        unsetEngine();
+        unsetId();
       } else {
-        setEngine((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -416,23 +398,23 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case COL_NAMES:
-      return getColNames();
-
-    case CAT_NAME:
-      return getCatName();
+    case ENV_CONTEXT:
+      return getEnvContext();
 
     case VALID_WRITE_ID_LIST:
       return getValidWriteIdList();
 
-    case ENGINE:
-      return getEngine();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -445,18 +427,18 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case COL_NAMES:
-      return isSetColNames();
-    case CAT_NAME:
-      return isSetCatName();
+    case ENV_CONTEXT:
+      return isSetEnvContext();
     case VALID_WRITE_ID_LIST:
       return isSetValidWriteIdList();
-    case ENGINE:
-      return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -465,15 +447,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof TableStatsRequest)
-      return this.equals((TableStatsRequest)that);
+    if (that instanceof GetSchemaRequest)
+      return this.equals((GetSchemaRequest)that);
     return false;
   }
 
-  public boolean equals(TableStatsRequest that) {
+  public boolean equals(GetSchemaRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -492,21 +483,12 @@ import org.slf4j.LoggerFactory;
         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))
+    boolean this_present_envContext = true && this.isSetEnvContext();
+    boolean that_present_envContext = true && that.isSetEnvContext();
+    if (this_present_envContext || that_present_envContext) {
+      if (!(this_present_envContext && that_present_envContext))
         return false;
-      if (!this.colNames.equals(that.colNames))
-        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))
+      if (!this.envContext.equals(that.envContext))
         return false;
     }
 
@@ -519,12 +501,12 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_engine = true && this.isSetEngine();
-    boolean that_present_engine = true && that.isSetEngine();
-    if (this_present_engine || that_present_engine) {
-      if (!(this_present_engine && that_present_engine))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.engine.equals(that.engine))
+      if (this.id != that.id)
         return false;
     }
 
@@ -535,6 +517,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
     boolean present_dbName = true && (isSetDbName());
     list.add(present_dbName);
     if (present_dbName)
@@ -545,73 +532,68 @@ import org.slf4j.LoggerFactory;
     if (present_tblName)
       list.add(tblName);
 
-    boolean present_colNames = true && (isSetColNames());
-    list.add(present_colNames);
-    if (present_colNames)
-      list.add(colNames);
-
-    boolean present_catName = true && (isSetCatName());
-    list.add(present_catName);
-    if (present_catName)
-      list.add(catName);
+    boolean present_envContext = true && (isSetEnvContext());
+    list.add(present_envContext);
+    if (present_envContext)
+      list.add(envContext);
 
     boolean present_validWriteIdList = true && (isSetValidWriteIdList());
     list.add(present_validWriteIdList);
     if (present_validWriteIdList)
       list.add(validWriteIdList);
 
-    boolean present_engine = true && (isSetEngine());
-    list.add(present_engine);
-    if (present_engine)
-      list.add(engine);
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
 
     return list.hashCode();
   }
 
   @Override
-  public int compareTo(TableStatsRequest other) {
+  public int compareTo(GetSchemaRequest other) {
     if (!getClass().equals(other.getClass())) {
       return getClass().getName().compareTo(other.getClass().getName());
     }
 
     int lastComparison = 0;
 
-    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
+    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetDbName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
+    if (isSetCatName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
+    lastComparison = Boolean.valueOf(isSetDbName()).compareTo(other.isSetDbName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetTblName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
+    if (isSetDbName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dbName, other.dbName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetColNames()).compareTo(other.isSetColNames());
+    lastComparison = Boolean.valueOf(isSetTblName()).compareTo(other.isSetTblName());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetColNames()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.colNames, other.colNames);
+    if (isSetTblName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tblName, other.tblName);
       if (lastComparison != 0) {
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetCatName()).compareTo(other.isSetCatName());
+    lastComparison = Boolean.valueOf(isSetEnvContext()).compareTo(other.isSetEnvContext());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetCatName()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.catName, other.catName);
+    if (isSetEnvContext()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.envContext, other.envContext);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -626,12 +608,12 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetEngine()).compareTo(other.isSetEngine());
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetEngine()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.engine, other.engine);
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -653,9 +635,19 @@ import org.slf4j.LoggerFactory;
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder("TableStatsRequest(");
+    StringBuilder sb = new StringBuilder("GetSchemaRequest(");
     boolean first = true;
 
+    if (isSetCatName()) {
+      sb.append("catName:");
+      if (this.catName == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.catName);
+      }
+      first = false;
+    }
+    if (!first) sb.append(", ");
     sb.append("dbName:");
     if (this.dbName == null) {
       sb.append("null");
@@ -671,21 +663,13 @@ import org.slf4j.LoggerFactory;
       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 (isSetCatName()) {
+    if (isSetEnvContext()) {
       if (!first) sb.append(", ");
-      sb.append("catName:");
-      if (this.catName == null) {
+      sb.append("envContext:");
+      if (this.envContext == null) {
         sb.append("null");
       } else {
-        sb.append(this.catName);
+        sb.append(this.envContext);
       }
       first = false;
     }
@@ -699,14 +683,12 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
-    if (!first) sb.append(", ");
-    sb.append("engine:");
-    if (this.engine == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.engine);
+    if (isSetId()) {
+      if (!first) sb.append(", ");
+      sb.append("id:");
+      sb.append(this.id);
+      first = false;
     }
-    first = false;
     sb.append(")");
     return sb.toString();
   }
@@ -721,15 +703,10 @@ import org.slf4j.LoggerFactory;
       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 (!isSetEngine()) {
-      throw new org.apache.thrift.protocol.TProtocolException("Required field 'engine' is unset! Struct:" + toString());
-    }
-
     // check for sub-struct validity
+    if (envContext != null) {
+      envContext.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -742,21 +719,23 @@ import org.slf4j.LoggerFactory;
 
   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 TableStatsRequestStandardSchemeFactory implements SchemeFactory {
-    public TableStatsRequestStandardScheme getScheme() {
-      return new TableStatsRequestStandardScheme();
+  private static class GetSchemaRequestStandardSchemeFactory implements SchemeFactory {
+    public GetSchemaRequestStandardScheme getScheme() {
+      return new GetSchemaRequestStandardScheme();
     }
   }
 
-  private static class TableStatsRequestStandardScheme extends StandardScheme<TableStatsRequest> {
+  private static class GetSchemaRequestStandardScheme extends StandardScheme<GetSchemaRequest> {
 
-    public void read(org.apache.thrift.protocol.TProtocol iprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetSchemaRequest struct) throws org.apache.thrift.TException {
       org.apache.thrift.protocol.TField schemeField;
       iprot.readStructBegin();
       while (true)
@@ -766,44 +745,35 @@ import org.slf4j.LoggerFactory;
           break;
         }
         switch (schemeField.id) {
-          case 1: // DB_NAME
+          case 1: // CAT_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.dbName = iprot.readString();
-              struct.setDbNameIsSet(true);
+              struct.catName = iprot.readString();
+              struct.setCatNameIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 2: // TBL_NAME
+          case 2: // DB_NAME
             if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.tblName = iprot.readString();
-              struct.setTblNameIsSet(true);
+              struct.dbName = iprot.readString();
+              struct.setDbNameIsSet(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 _list490 = iprot.readListBegin();
-                struct.colNames = new ArrayList<String>(_list490.size);
-                String _elem491;
-                for (int _i492 = 0; _i492 < _list490.size; ++_i492)
-                {
-                  _elem491 = iprot.readString();
-                  struct.colNames.add(_elem491);
-                }
-                iprot.readListEnd();
-              }
-              struct.setColNamesIsSet(true);
+          case 3: // 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 4: // CAT_NAME
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.catName = iprot.readString();
-              struct.setCatNameIsSet(true);
+          case 4: // ENV_CONTEXT
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+              struct.envContext = new EnvironmentContext();
+              struct.envContext.read(iprot);
+              struct.setEnvContextIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -816,10 +786,10 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 6: // ENGINE
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
-              struct.engine = iprot.readString();
-              struct.setEngineIsSet(true);
+          case 6: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -833,10 +803,17 @@ import org.slf4j.LoggerFactory;
       struct.validate();
     }
 
-    public void write(org.apache.thrift.protocol.TProtocol oprot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol oprot, GetSchemaRequest struct) throws org.apache.thrift.TException {
       struct.validate();
 
       oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.catName != null) {
+        if (struct.isSetCatName()) {
+          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
+          oprot.writeString(struct.catName);
+          oprot.writeFieldEnd();
+        }
+      }
       if (struct.dbName != null) {
         oprot.writeFieldBegin(DB_NAME_FIELD_DESC);
         oprot.writeString(struct.dbName);
@@ -847,22 +824,10 @@ import org.slf4j.LoggerFactory;
         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 _iter493 : struct.colNames)
-          {
-            oprot.writeString(_iter493);
-          }
-          oprot.writeListEnd();
-        }
-        oprot.writeFieldEnd();
-      }
-      if (struct.catName != null) {
-        if (struct.isSetCatName()) {
-          oprot.writeFieldBegin(CAT_NAME_FIELD_DESC);
-          oprot.writeString(struct.catName);
+      if (struct.envContext != null) {
+        if (struct.isSetEnvContext()) {
+          oprot.writeFieldBegin(ENV_CONTEXT_FIELD_DESC);
+          struct.envContext.write(oprot);
           oprot.writeFieldEnd();
         }
       }
@@ -873,9 +838,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
-      if (struct.engine != null) {
-        oprot.writeFieldBegin(ENGINE_FIELD_DESC);
-        oprot.writeString(struct.engine);
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
         oprot.writeFieldEnd();
       }
       oprot.writeFieldStop();
@@ -884,72 +849,72 @@ import org.slf4j.LoggerFactory;
 
   }
 
-  private static class TableStatsRequestTupleSchemeFactory implements SchemeFactory {
-    public TableStatsRequestTupleScheme getScheme() {
-      return new TableStatsRequestTupleScheme();
+  private static class GetSchemaRequestTupleSchemeFactory implements SchemeFactory {
+    public GetSchemaRequestTupleScheme getScheme() {
+      return new GetSchemaRequestTupleScheme();
     }
   }
 
-  private static class TableStatsRequestTupleScheme extends TupleScheme<TableStatsRequest> {
+  private static class GetSchemaRequestTupleScheme extends TupleScheme<GetSchemaRequest> {
 
     @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetSchemaRequest 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 _iter494 : struct.colNames)
-        {
-          oprot.writeString(_iter494);
-        }
-      }
-      oprot.writeString(struct.engine);
       BitSet optionals = new BitSet();
       if (struct.isSetCatName()) {
         optionals.set(0);
       }
-      if (struct.isSetValidWriteIdList()) {
+      if (struct.isSetEnvContext()) {
         optionals.set(1);
       }
-      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(2);
+      }
+      if (struct.isSetId()) {
+        optionals.set(3);
+      }
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
+      if (struct.isSetEnvContext()) {
+        struct.envContext.write(oprot);
+      }
       if (struct.isSetValidWriteIdList()) {
         oprot.writeString(struct.validWriteIdList);
       }
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
+      }
     }
 
     @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, TableStatsRequest struct) throws org.apache.thrift.TException {
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetSchemaRequest 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 _list495 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-        struct.colNames = new ArrayList<String>(_list495.size);
-        String _elem496;
-        for (int _i497 = 0; _i497 < _list495.size; ++_i497)
-        {
-          _elem496 = iprot.readString();
-          struct.colNames.add(_elem496);
-        }
-      }
-      struct.setColNamesIsSet(true);
-      struct.engine = iprot.readString();
-      struct.setEngineIsSet(true);
-      BitSet incoming = iprot.readBitSet(2);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
       }
       if (incoming.get(1)) {
+        struct.envContext = new EnvironmentContext();
+        struct.envContext.read(iprot);
+        struct.setEnvContextIsSet(true);
+      }
+      if (incoming.get(2)) {
         struct.validWriteIdList = iprot.readString();
         struct.setValidWriteIdListIsSet(true);
       }
+      if (incoming.get(3)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaResponse.java
new file mode 100644
index 0000000..847d04c
--- /dev/null
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetSchemaResponse.java
@@ -0,0 +1,443 @@
+/**
+ * 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 GetSchemaResponse implements org.apache.thrift.TBase<GetSchemaResponse, GetSchemaResponse._Fields>, java.io.Serializable, Cloneable, Comparable<GetSchemaResponse> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("GetSchemaResponse");
+
+  private static final org.apache.thrift.protocol.TField FIELDS_FIELD_DESC = new org.apache.thrift.protocol.TField("fields", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new GetSchemaResponseStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new GetSchemaResponseTupleSchemeFactory());
+  }
+
+  private List<FieldSchema> fields; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    FIELDS((short)1, "fields");
+
+    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: // FIELDS
+          return FIELDS;
+        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
+  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.FIELDS, new org.apache.thrift.meta_data.FieldMetaData("fields", org.apache.thrift.TFieldRequirementType.REQUIRED, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, FieldSchema.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetSchemaResponse.class, metaDataMap);
+  }
+
+  public GetSchemaResponse() {
+  }
+
+  public GetSchemaResponse(
+    List<FieldSchema> fields)
+  {
+    this();
+    this.fields = fields;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public GetSchemaResponse(GetSchemaResponse other) {
+    if (other.isSetFields()) {
+      List<FieldSchema> __this__fields = new ArrayList<FieldSchema>(other.fields.size());
+      for (FieldSchema other_element : other.fields) {
+        __this__fields.add(new FieldSchema(other_element));
+      }
+      this.fields = __this__fields;
+    }
+  }
+
+  public GetSchemaResponse deepCopy() {
+    return new GetSchemaResponse(this);
+  }
+
+  @Override
+  public void clear() {
+    this.fields = null;
+  }
+
+  public int getFieldsSize() {
+    return (this.fields == null) ? 0 : this.fields.size();
+  }
+
+  public java.util.Iterator<FieldSchema> getFieldsIterator() {
+    return (this.fields == null) ? null : this.fields.iterator();
+  }
+
+  public void addToFields(FieldSchema elem) {
+    if (this.fields == null) {
+      this.fields = new ArrayList<FieldSchema>();
+    }
+    this.fields.add(elem);
+  }
+
+  public List<FieldSchema> getFields() {
+    return this.fields;
+  }
+
+  public void setFields(List<FieldSchema> fields) {
+    this.fields = fields;
+  }
+
+  public void unsetFields() {
+    this.fields = null;
+  }
+
+  /** Returns true if field fields is set (has been assigned a value) and false otherwise */
+  public boolean isSetFields() {
+    return this.fields != null;
+  }
+
+  public void setFieldsIsSet(boolean value) {
+    if (!value) {
+      this.fields = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case FIELDS:
+      if (value == null) {
+        unsetFields();
+      } else {
+        setFields((List<FieldSchema>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case FIELDS:
+      return getFields();
+
+    }
+    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 FIELDS:
+      return isSetFields();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof GetSchemaResponse)
+      return this.equals((GetSchemaResponse)that);
+    return false;
+  }
+
+  public boolean equals(GetSchemaResponse that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_fields = true && this.isSetFields();
+    boolean that_present_fields = true && that.isSetFields();
+    if (this_present_fields || that_present_fields) {
+      if (!(this_present_fields && that_present_fields))
+        return false;
+      if (!this.fields.equals(that.fields))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_fields = true && (isSetFields());
+    list.add(present_fields);
+    if (present_fields)
+      list.add(fields);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(GetSchemaResponse other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetFields()).compareTo(other.isSetFields());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFields()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.fields, other.fields);
+      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("GetSchemaResponse(");
+    boolean first = true;
+
+    sb.append("fields:");
+    if (this.fields == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.fields);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    if (!isSetFields()) {
+      throw new org.apache.thrift.protocol.TProtocolException("Required field 'fields' 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 {
+      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 GetSchemaResponseStandardSchemeFactory implements SchemeFactory {
+    public GetSchemaResponseStandardScheme getScheme() {
+      return new GetSchemaResponseStandardScheme();
+    }
+  }
+
+  private static class GetSchemaResponseStandardScheme extends StandardScheme<GetSchemaResponse> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, GetSchemaResponse 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: // FIELDS
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list1216 = iprot.readListBegin();
+                struct.fields = new ArrayList<FieldSchema>(_list1216.size);
+                FieldSchema _elem1217;
+                for (int _i1218 = 0; _i1218 < _list1216.size; ++_i1218)
+                {
+                  _elem1217 = new FieldSchema();
+                  _elem1217.read(iprot);
+                  struct.fields.add(_elem1217);
+                }
+                iprot.readListEnd();
+              }
+              struct.setFieldsIsSet(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, GetSchemaResponse struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.fields != null) {
+        oprot.writeFieldBegin(FIELDS_FIELD_DESC);
+        {
+          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.fields.size()));
+          for (FieldSchema _iter1219 : struct.fields)
+          {
+            _iter1219.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class GetSchemaResponseTupleSchemeFactory implements SchemeFactory {
+    public GetSchemaResponseTupleScheme getScheme() {
+      return new GetSchemaResponseTupleScheme();
+    }
+  }
+
+  private static class GetSchemaResponseTupleScheme extends TupleScheme<GetSchemaResponse> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, GetSchemaResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      {
+        oprot.writeI32(struct.fields.size());
+        for (FieldSchema _iter1220 : struct.fields)
+        {
+          _iter1220.write(oprot);
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, GetSchemaResponse struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      {
+        org.apache.thrift.protocol.TList _list1221 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.fields = new ArrayList<FieldSchema>(_list1221.size);
+        FieldSchema _elem1222;
+        for (int _i1223 = 0; _i1223 < _list1221.size; ++_i1223)
+        {
+          _elem1222 = new FieldSchema();
+          _elem1222.read(iprot);
+          struct.fields.add(_elem1222);
+        }
+      }
+      struct.setFieldsIsSet(true);
+    }
+  }
+
+}
+
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java
index 4e66f07..a803676 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/GetTableRequest.java
@@ -47,6 +47,7 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField PROCESSOR_CAPABILITIES_FIELD_DESC = new org.apache.thrift.protocol.TField("processorCapabilities", org.apache.thrift.protocol.TType.LIST, (short)8);
   private static final org.apache.thrift.protocol.TField PROCESSOR_IDENTIFIER_FIELD_DESC = new org.apache.thrift.protocol.TField("processorIdentifier", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)10);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)11);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -63,6 +64,7 @@ import org.slf4j.LoggerFactory;
   private List<String> processorCapabilities; // optional
   private String processorIdentifier; // optional
   private String engine; // optional
+  private long id; // 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 {
@@ -74,7 +76,8 @@ import org.slf4j.LoggerFactory;
     GET_COLUMN_STATS((short)7, "getColumnStats"),
     PROCESSOR_CAPABILITIES((short)8, "processorCapabilities"),
     PROCESSOR_IDENTIFIER((short)9, "processorIdentifier"),
-    ENGINE((short)10, "engine");
+    ENGINE((short)10, "engine"),
+    ID((short)11, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -107,6 +110,8 @@ import org.slf4j.LoggerFactory;
           return PROCESSOR_IDENTIFIER;
         case 10: // ENGINE
           return ENGINE;
+        case 11: // ID
+          return ID;
         default:
           return null;
       }
@@ -148,8 +153,9 @@ import org.slf4j.LoggerFactory;
 
   // isset id assignments
   private static final int __GETCOLUMNSTATS_ISSET_ID = 0;
+  private static final int __ID_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CAPABILITIES,_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST,_Fields.GET_COLUMN_STATS,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_Fields.ENGINE};
+  private static final _Fields optionals[] = {_Fields.CAPABILITIES,_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST,_Fields.GET_COLUMN_STATS,_Fields.PROCESSOR_CAPABILITIES,_Fields.PROCESSOR_IDENTIFIER,_Fields.ENGINE,_Fields.ID};
   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);
@@ -172,11 +178,15 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(GetTableRequest.class, metaDataMap);
   }
 
   public GetTableRequest() {
+    this.id = -1L;
+
   }
 
   public GetTableRequest(
@@ -219,6 +229,7 @@ import org.slf4j.LoggerFactory;
     if (other.isSetEngine()) {
       this.engine = other.engine;
     }
+    this.id = other.id;
   }
 
   public GetTableRequest deepCopy() {
@@ -237,6 +248,8 @@ import org.slf4j.LoggerFactory;
     this.processorCapabilities = null;
     this.processorIdentifier = null;
     this.engine = null;
+    this.id = -1L;
+
   }
 
   public String getDbName() {
@@ -460,6 +473,28 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  public long getId() {
+    return this.id;
+  }
+
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
+  }
+
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
+  }
+
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
+  }
+
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case DB_NAME:
@@ -534,6 +569,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case ID:
+      if (value == null) {
+        unsetId();
+      } else {
+        setId((Long)value);
+      }
+      break;
+
     }
   }
 
@@ -566,6 +609,9 @@ import org.slf4j.LoggerFactory;
     case ENGINE:
       return getEngine();
 
+    case ID:
+      return getId();
+
     }
     throw new IllegalStateException();
   }
@@ -595,6 +641,8 @@ import org.slf4j.LoggerFactory;
       return isSetProcessorIdentifier();
     case ENGINE:
       return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -693,6 +741,15 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
+        return false;
+      if (this.id != that.id)
+        return false;
+    }
+
     return true;
   }
 
@@ -745,6 +802,11 @@ import org.slf4j.LoggerFactory;
     if (present_engine)
       list.add(engine);
 
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
+
     return list.hashCode();
   }
 
@@ -846,6 +908,16 @@ import org.slf4j.LoggerFactory;
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -947,6 +1019,12 @@ import org.slf4j.LoggerFactory;
       }
       first = false;
     }
+    if (isSetId()) {
+      if (!first) sb.append(", ");
+      sb.append("id:");
+      sb.append(this.id);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -1086,6 +1164,14 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 11: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -1163,6 +1249,11 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -1204,7 +1295,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetEngine()) {
         optionals.set(6);
       }
-      oprot.writeBitSet(optionals, 7);
+      if (struct.isSetId()) {
+        optionals.set(7);
+      }
+      oprot.writeBitSet(optionals, 8);
       if (struct.isSetCapabilities()) {
         struct.capabilities.write(oprot);
       }
@@ -1232,6 +1326,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetEngine()) {
         oprot.writeString(struct.engine);
       }
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
+      }
     }
 
     @Override
@@ -1241,7 +1338,7 @@ import org.slf4j.LoggerFactory;
       struct.setDbNameIsSet(true);
       struct.tblName = iprot.readString();
       struct.setTblNameIsSet(true);
-      BitSet incoming = iprot.readBitSet(7);
+      BitSet incoming = iprot.readBitSet(8);
       if (incoming.get(0)) {
         struct.capabilities = new ClientCapabilities();
         struct.capabilities.read(iprot);
@@ -1280,6 +1377,10 @@ import org.slf4j.LoggerFactory;
         struct.engine = iprot.readString();
         struct.setEngineIsSet(true);
       }
+      if (incoming.get(7)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionValuesRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionValuesRequest.java
index 783f28c..8694f7a 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionValuesRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionValuesRequest.java
@@ -47,6 +47,7 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField ASCENDING_FIELD_DESC = new org.apache.thrift.protocol.TField("ascending", org.apache.thrift.protocol.TType.BOOL, (short)7);
   private static final org.apache.thrift.protocol.TField MAX_PARTS_FIELD_DESC = new org.apache.thrift.protocol.TField("maxParts", org.apache.thrift.protocol.TType.I64, (short)8);
   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)9);
+  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)10);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -63,6 +64,7 @@ import org.slf4j.LoggerFactory;
   private boolean ascending; // optional
   private long maxParts; // optional
   private String catName; // 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 {
@@ -74,7 +76,8 @@ import org.slf4j.LoggerFactory;
     PARTITION_ORDER((short)6, "partitionOrder"),
     ASCENDING((short)7, "ascending"),
     MAX_PARTS((short)8, "maxParts"),
-    CAT_NAME((short)9, "catName");
+    CAT_NAME((short)9, "catName"),
+    VALID_WRITE_ID_LIST((short)10, "validWriteIdList");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -107,6 +110,8 @@ import org.slf4j.LoggerFactory;
           return MAX_PARTS;
         case 9: // CAT_NAME
           return CAT_NAME;
+        case 10: // VALID_WRITE_ID_LIST
+          return VALID_WRITE_ID_LIST;
         default:
           return null;
       }
@@ -151,7 +156,7 @@ import org.slf4j.LoggerFactory;
   private static final int __ASCENDING_ISSET_ID = 1;
   private static final int __MAXPARTS_ISSET_ID = 2;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.APPLY_DISTINCT,_Fields.FILTER,_Fields.PARTITION_ORDER,_Fields.ASCENDING,_Fields.MAX_PARTS,_Fields.CAT_NAME};
+  private static final _Fields optionals[] = {_Fields.APPLY_DISTINCT,_Fields.FILTER,_Fields.PARTITION_ORDER,_Fields.ASCENDING,_Fields.MAX_PARTS,_Fields.CAT_NAME,_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);
@@ -175,6 +180,8 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     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.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(PartitionValuesRequest.class, metaDataMap);
   }
@@ -233,6 +240,9 @@ import org.slf4j.LoggerFactory;
     if (other.isSetCatName()) {
       this.catName = other.catName;
     }
+    if (other.isSetValidWriteIdList()) {
+      this.validWriteIdList = other.validWriteIdList;
+    }
   }
 
   public PartitionValuesRequest deepCopy() {
@@ -253,6 +263,7 @@ import org.slf4j.LoggerFactory;
     this.maxParts = -1L;
 
     this.catName = null;
+    this.validWriteIdList = null;
   }
 
   public String getDbName() {
@@ -489,6 +500,29 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  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:
@@ -563,6 +597,14 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case VALID_WRITE_ID_LIST:
+      if (value == null) {
+        unsetValidWriteIdList();
+      } else {
+        setValidWriteIdList((String)value);
+      }
+      break;
+
     }
   }
 
@@ -595,6 +637,9 @@ import org.slf4j.LoggerFactory;
     case CAT_NAME:
       return getCatName();
 
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
+
     }
     throw new IllegalStateException();
   }
@@ -624,6 +669,8 @@ import org.slf4j.LoggerFactory;
       return isSetMaxParts();
     case CAT_NAME:
       return isSetCatName();
+    case VALID_WRITE_ID_LIST:
+      return isSetValidWriteIdList();
     }
     throw new IllegalStateException();
   }
@@ -722,6 +769,15 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -774,6 +830,11 @@ import org.slf4j.LoggerFactory;
     if (present_catName)
       list.add(catName);
 
+    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
+    list.add(present_validWriteIdList);
+    if (present_validWriteIdList)
+      list.add(validWriteIdList);
+
     return list.hashCode();
   }
 
@@ -875,6 +936,16 @@ import org.slf4j.LoggerFactory;
         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;
   }
 
@@ -966,6 +1037,16 @@ import org.slf4j.LoggerFactory;
       }
       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();
   }
@@ -1117,6 +1198,14 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 10: // 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);
         }
@@ -1195,6 +1284,13 @@ import org.slf4j.LoggerFactory;
           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();
     }
@@ -1240,7 +1336,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetCatName()) {
         optionals.set(5);
       }
-      oprot.writeBitSet(optionals, 6);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(6);
+      }
+      oprot.writeBitSet(optionals, 7);
       if (struct.isSetApplyDistinct()) {
         oprot.writeBool(struct.applyDistinct);
       }
@@ -1265,6 +1364,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetCatName()) {
         oprot.writeString(struct.catName);
       }
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
+      }
     }
 
     @Override
@@ -1286,7 +1388,7 @@ import org.slf4j.LoggerFactory;
         }
       }
       struct.setPartitionKeysIsSet(true);
-      BitSet incoming = iprot.readBitSet(6);
+      BitSet incoming = iprot.readBitSet(7);
       if (incoming.get(0)) {
         struct.applyDistinct = iprot.readBool();
         struct.setApplyDistinctIsSet(true);
@@ -1321,6 +1423,10 @@ import org.slf4j.LoggerFactory;
         struct.catName = iprot.readString();
         struct.setCatNameIsSet(true);
       }
+      if (incoming.get(6)) {
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java
index c55da73..8646f85 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsByExprRequest.java
@@ -45,6 +45,8 @@ import org.slf4j.LoggerFactory;
   private static final org.apache.thrift.protocol.TField MAX_PARTS_FIELD_DESC = new org.apache.thrift.protocol.TField("maxParts", org.apache.thrift.protocol.TType.I16, (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 ORDER_FIELD_DESC = new org.apache.thrift.protocol.TField("order", org.apache.thrift.protocol.TType.STRING, (short)7);
+  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)8);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)9);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -59,6 +61,8 @@ import org.slf4j.LoggerFactory;
   private short maxParts; // optional
   private String catName; // optional
   private String order; // optional
+  private String validWriteIdList; // optional
+  private long id; // 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 {
@@ -68,7 +72,9 @@ import org.slf4j.LoggerFactory;
     DEFAULT_PARTITION_NAME((short)4, "defaultPartitionName"),
     MAX_PARTS((short)5, "maxParts"),
     CAT_NAME((short)6, "catName"),
-    ORDER((short)7, "order");
+    ORDER((short)7, "order"),
+    VALID_WRITE_ID_LIST((short)8, "validWriteIdList"),
+    ID((short)9, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -97,6 +103,10 @@ import org.slf4j.LoggerFactory;
           return CAT_NAME;
         case 7: // ORDER
           return ORDER;
+        case 8: // VALID_WRITE_ID_LIST
+          return VALID_WRITE_ID_LIST;
+        case 9: // ID
+          return ID;
         default:
           return null;
       }
@@ -138,8 +148,9 @@ import org.slf4j.LoggerFactory;
 
   // isset id assignments
   private static final int __MAXPARTS_ISSET_ID = 0;
+  private static final int __ID_ISSET_ID = 1;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.DEFAULT_PARTITION_NAME,_Fields.MAX_PARTS,_Fields.CAT_NAME,_Fields.ORDER};
+  private static final _Fields optionals[] = {_Fields.DEFAULT_PARTITION_NAME,_Fields.MAX_PARTS,_Fields.CAT_NAME,_Fields.ORDER,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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);
@@ -157,6 +168,10 @@ import org.slf4j.LoggerFactory;
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ORDER, new org.apache.thrift.meta_data.FieldMetaData("order", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    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)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PartitionsByExprRequest.class, metaDataMap);
   }
@@ -164,6 +179,8 @@ import org.slf4j.LoggerFactory;
   public PartitionsByExprRequest() {
     this.maxParts = (short)-1;
 
+    this.id = -1L;
+
   }
 
   public PartitionsByExprRequest(
@@ -201,6 +218,10 @@ import org.slf4j.LoggerFactory;
     if (other.isSetOrder()) {
       this.order = other.order;
     }
+    if (other.isSetValidWriteIdList()) {
+      this.validWriteIdList = other.validWriteIdList;
+    }
+    this.id = other.id;
   }
 
   public PartitionsByExprRequest deepCopy() {
@@ -217,6 +238,9 @@ import org.slf4j.LoggerFactory;
 
     this.catName = null;
     this.order = null;
+    this.validWriteIdList = null;
+    this.id = -1L;
+
   }
 
   public String getDbName() {
@@ -388,6 +412,51 @@ import org.slf4j.LoggerFactory;
     }
   }
 
+  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 long getId() {
+    return this.id;
+  }
+
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
+  }
+
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
+  }
+
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
+  }
+
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case DB_NAME:
@@ -446,6 +515,22 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
+    case VALID_WRITE_ID_LIST:
+      if (value == null) {
+        unsetValidWriteIdList();
+      } else {
+        setValidWriteIdList((String)value);
+      }
+      break;
+
+    case ID:
+      if (value == null) {
+        unsetId();
+      } else {
+        setId((Long)value);
+      }
+      break;
+
     }
   }
 
@@ -472,6 +557,12 @@ import org.slf4j.LoggerFactory;
     case ORDER:
       return getOrder();
 
+    case VALID_WRITE_ID_LIST:
+      return getValidWriteIdList();
+
+    case ID:
+      return getId();
+
     }
     throw new IllegalStateException();
   }
@@ -497,6 +588,10 @@ import org.slf4j.LoggerFactory;
       return isSetCatName();
     case ORDER:
       return isSetOrder();
+    case VALID_WRITE_ID_LIST:
+      return isSetValidWriteIdList();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -577,6 +672,24 @@ import org.slf4j.LoggerFactory;
         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;
+    }
+
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
+        return false;
+      if (this.id != that.id)
+        return false;
+    }
+
     return true;
   }
 
@@ -619,6 +732,16 @@ import org.slf4j.LoggerFactory;
     if (present_order)
       list.add(order);
 
+    boolean present_validWriteIdList = true && (isSetValidWriteIdList());
+    list.add(present_validWriteIdList);
+    if (present_validWriteIdList)
+      list.add(validWriteIdList);
+
+    boolean present_id = true && (isSetId());
+    list.add(present_id);
+    if (present_id)
+      list.add(id);
+
     return list.hashCode();
   }
 
@@ -700,6 +823,26 @@ import org.slf4j.LoggerFactory;
         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;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetId()).compareTo(other.isSetId());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetId()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.id, other.id);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -779,6 +922,22 @@ import org.slf4j.LoggerFactory;
       }
       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;
+    }
+    if (isSetId()) {
+      if (!first) sb.append(", ");
+      sb.append("id:");
+      sb.append(this.id);
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -892,6 +1051,22 @@ import org.slf4j.LoggerFactory;
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 8: // 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;
+          case 9: // ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+              struct.id = iprot.readI64();
+              struct.setIdIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -946,6 +1121,18 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldEnd();
         }
       }
+      if (struct.validWriteIdList != null) {
+        if (struct.isSetValidWriteIdList()) {
+          oprot.writeFieldBegin(VALID_WRITE_ID_LIST_FIELD_DESC);
+          oprot.writeString(struct.validWriteIdList);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetId()) {
+        oprot.writeFieldBegin(ID_FIELD_DESC);
+        oprot.writeI64(struct.id);
+        oprot.writeFieldEnd();
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -979,7 +1166,13 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetOrder()) {
         optionals.set(3);
       }
-      oprot.writeBitSet(optionals, 4);
+      if (struct.isSetValidWriteIdList()) {
+        optionals.set(4);
+      }
+      if (struct.isSetId()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
       if (struct.isSetDefaultPartitionName()) {
         oprot.writeString(struct.defaultPartitionName);
       }
@@ -992,6 +1185,12 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetOrder()) {
         oprot.writeString(struct.order);
       }
+      if (struct.isSetValidWriteIdList()) {
+        oprot.writeString(struct.validWriteIdList);
+      }
+      if (struct.isSetId()) {
+        oprot.writeI64(struct.id);
+      }
     }
 
     @Override
@@ -1003,7 +1202,7 @@ import org.slf4j.LoggerFactory;
       struct.setTblNameIsSet(true);
       struct.expr = iprot.readBinary();
       struct.setExprIsSet(true);
-      BitSet incoming = iprot.readBitSet(4);
+      BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         struct.defaultPartitionName = iprot.readString();
         struct.setDefaultPartitionNameIsSet(true);
@@ -1020,6 +1219,14 @@ import org.slf4j.LoggerFactory;
         struct.order = iprot.readString();
         struct.setOrderIsSet(true);
       }
+      if (incoming.get(4)) {
+        struct.validWriteIdList = iprot.readString();
+        struct.setValidWriteIdListIsSet(true);
+      }
+      if (incoming.get(5)) {
+        struct.id = iprot.readI64();
+        struct.setIdIsSet(true);
+      }
     }
   }
 
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsRequest.java
similarity index 70%
copy from standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
copy to standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsRequest.java
index 1eafee5..15a906a 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/TableStatsRequest.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionsRequest.java
@@ -35,37 +35,37 @@ 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 TableStatsRequest implements org.apache.thrift.TBase<TableStatsRequest, TableStatsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<TableStatsRequest> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TableStatsRequest");
+@org.apache.hadoop.classification.InterfaceAudience.Public @org.apache.hadoop.classification.InterfaceStability.Stable public class PartitionsRequest implements org.apache.thrift.TBase<PartitionsRequest, PartitionsRequest._Fields>, java.io.Serializable, Cloneable, Comparable<PartitionsRequest> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PartitionsRequest");
 
-  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 CAT_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("catName", org.apache.thrift.protocol.TType.STRING, (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)1);
+  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)2);
+  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)3);
+  private static final org.apache.thrift.protocol.TField MAX_PARTS_FIELD_DESC = new org.apache.thrift.protocol.TField("maxParts", org.apache.thrift.protocol.TType.I16, (short)4);
   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)5);
-  private static final org.apache.thrift.protocol.TField ENGINE_FIELD_DESC = new org.apache.thrift.protocol.TField("engine", org.apache.thrift.protocol.TType.STRING, (short)6);
+  private static final org.apache.thrift.protocol.TField ID_FIELD_DESC = new org.apache.thrift.protocol.TField("id", org.apache.thrift.protocol.TType.I64, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
-    schemes.put(StandardScheme.class, new TableStatsRequestStandardSchemeFactory());
-    schemes.put(TupleScheme.class, new TableStatsRequestTupleSchemeFactory());
+    schemes.put(StandardScheme.class, new PartitionsRequestStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new PartitionsRequestTupleSchemeFactory());
   }
 
+  private String catName; // optional
   private String dbName; // required
   private String tblName; // required
-  private List<String> colNames; // required
-  private String catName; // optional
+  private short maxParts; // optional
   private String validWriteIdList; // optional
-  private String engine; // required
+  private long id; // 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"),
-    CAT_NAME((short)4, "catName"),
+    CAT_NAME((short)1, "catName"),
+    DB_NAME((short)2, "dbName"),
+    TBL_NAME((short)3, "tblName"),
+    MAX_PARTS((short)4, "maxParts"),
     VALID_WRITE_ID_LIST((short)5, "validWriteIdList"),
-    ENGINE((short)6, "engine");
+    ID((short)6, "id");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -80,18 +80,18 @@ import org.slf4j.LoggerFactory;
      */
     public static _Fields findByThriftId(int fieldId) {
       switch(fieldId) {
-        case 1: // DB_NAME
+        case 1: // CAT_NAME
+          return CAT_NAME;
+        case 2: // DB_NAME
           return DB_NAME;
-        case 2: // TBL_NAME
+        case 3: // TBL_NAME
           return TBL_NAME;
-        case 3: // COL_NAMES
-          return COL_NAMES;
-        case 4: // CAT_NAME
-          return CAT_NAME;
+        case 4: // MAX_PARTS
+          return MAX_PARTS;
         case 5: // VALID_WRITE_ID_LIST
           return VALID_WRITE_ID_LIST;
-        case 6: // ENGINE
-          return ENGINE;
+        case 6: // ID
+          return ID;
         default:
           return null;
       }
@@ -132,80 +132,103 @@ import org.slf4j.LoggerFactory;
   }
 
   // isset id assignments
-  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.VALID_WRITE_ID_LIST};
+  private static final int __MAXPARTS_ISSET_ID = 0;
+  private static final int __ID_ISSET_ID = 1;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.CAT_NAME,_Fields.MAX_PARTS,_Fields.VALID_WRITE_ID_LIST,_Fields.ID};
   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.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.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.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.MAX_PARTS, new org.apache.thrift.meta_data.FieldMetaData("maxParts", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16)));
     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)));
-    tmpMap.put(_Fields.ENGINE, new org.apache.thrift.meta_data.FieldMetaData("engine", org.apache.thrift.TFieldRequirementType.REQUIRED, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.ID, new org.apache.thrift.meta_data.FieldMetaData("id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
-    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TableStatsRequest.class, metaDataMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PartitionsRequest.class, metaDataMap);
   }
 
-  public TableStatsRequest() {
+  public PartitionsRequest() {
+    this.maxParts = (short)-1;
+
+    this.id = -1L;
+
   }
 
-  public TableStatsRequest(
+  public PartitionsRequest(
     String dbName,
-    String tblName,
-    List<String> colNames,
-    String engine)
+    String tblName)
   {
     this();
     this.dbName = dbName;
     this.tblName = tblName;
-    this.colNames = colNames;
-    this.engine = engine;
   }
 
   /**
    * Performs a deep copy on <i>other</i>.
    */
-  public TableStatsRequest(TableStatsRequest other) {
+  public PartitionsRequest(PartitionsRequest other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetCatName()) {
+      this.catName = other.catName;
+    }
     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.isSetCatName()) {
-      this.catName = other.catName;
-    }
+    this.maxParts = other.maxParts;
     if (other.isSetValidWriteIdList()) {
       this.validWriteIdList = other.validWriteIdList;
     }
-    if (other.isSetEngine()) {
-      this.engine = other.engine;
-    }
+    this.id = other.id;
   }
 
-  public TableStatsRequest deepCopy() {
-    return new TableStatsRequest(this);
+  public PartitionsRequest deepCopy() {
+    return new PartitionsRequest(this);
   }
 
   @Override
   public void clear() {
+    this.catName = null;
     this.dbName = null;
     this.tblName = null;
-    this.colNames = null;
-    this.catName = null;
+    this.maxParts = (short)-1;
+
     this.validWriteIdList = null;
-    this.engine = null;
+    this.id = -1L;
+
+  }
+
+  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 String getDbName() {
@@ -254,65 +277,26 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  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 String getCatName() {
-    return this.catName;
+  public short getMaxParts() {
+    return this.maxParts;
   }
 
-  public void setCatName(String catName) {
-    this.catName = catName;
+  public void setMaxParts(short maxParts) {
+    this.maxParts = maxParts;
+    setMaxPartsIsSet(true);
   }
 
-  public void unsetCatName() {
-    this.catName = null;
+  public void unsetMaxParts() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MAXPARTS_ISSET_ID);
   }
 
-  /** Returns true if field catName is set (has been assigned a value) and false otherwise */
-  public boolean isSetCatName() {
-    return this.catName != null;
+  /** Returns true if field maxParts is set (has been assigned a value) and false otherwise */
+  public boolean isSetMaxParts() {
+    return EncodingUtils.testBit(__isset_bitfield, __MAXPARTS_ISSET_ID);
   }
 
-  public void setCatNameIsSet(boolean value) {
-    if (!value) {
-      this.catName = null;
-    }
+  public void setMaxPartsIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MAXPARTS_ISSET_ID, value);
   }
 
   public String getValidWriteIdList() {
@@ -338,31 +322,38 @@ import org.slf4j.LoggerFactory;
     }
   }
 
-  public String getEngine() {
-    return this.engine;
+  public long getId() {
+    return this.id;
   }
 
-  public void setEngine(String engine) {
-    this.engine = engine;
+  public void setId(long id) {
+    this.id = id;
+    setIdIsSet(true);
   }
 
-  public void unsetEngine() {
-    this.engine = null;
+  public void unsetId() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  /** Returns true if field engine is set (has been assigned a value) and false otherwise */
-  public boolean isSetEngine() {
-    return this.engine != null;
+  /** Returns true if field id is set (has been assigned a value) and false otherwise */
+  public boolean isSetId() {
+    return EncodingUtils.testBit(__isset_bitfield, __ID_ISSET_ID);
   }
 
-  public void setEngineIsSet(boolean value) {
-    if (!value) {
-      this.engine = null;
-    }
+  public void setIdIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ID_ISSET_ID, value);
   }
 
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
+    case CAT_NAME:
+      if (value == null) {
+        unsetCatName();
+      } else {
+        setCatName((String)value);
+      }
+      break;
+
     case DB_NAME:
       if (value == null) {
         unsetDbName();
@@ -379,19 +370,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case COL_NAMES:
-      if (value == null) {
-        unsetColNames();
-      } else {
-        setColNames((List<String>)value);
-      }
-      break;
-
-    case CAT_NAME:
+    case MAX_PARTS:
       if (value == null) {
-        unsetCatName();
+        unsetMaxParts();
       } else {
-        setCatName((String)value);
+        setMaxParts((Short)value);
       }
       break;
 
@@ -403,11 +386,11 @@ import org.slf4j.LoggerFactory;
       }
       break;
 
-    case ENGINE:
+    case ID:
       if (value == null) {
-        unsetEngine();
+        unsetId();
       } else {
-        setEngine((String)value);
+        setId((Long)value);
       }
       break;
 
@@ -416,23 +399,23 @@ import org.slf4j.LoggerFactory;
 
   public Object getFieldValue(_Fields field) {
     switch (field) {
+    case CAT_NAME:
+      return getCatName();
+
     case DB_NAME:
       return getDbName();
 
     case TBL_NAME:
       return getTblName();
 
-    case COL_NAMES:
-      return getColNames();
-
-    case CAT_NAME:
-      return getCatName();
+    case MAX_PARTS:
+      return getMaxParts();
 
     case VALID_WRITE_ID_LIST:
       return getValidWriteIdList();
 
-    case ENGINE:
-      return getEngine();
+    case ID:
+      return getId();
 
     }
     throw new IllegalStateException();
@@ -445,18 +428,18 @@ import org.slf4j.LoggerFactory;
     }
 
     switch (field) {
+    case CAT_NAME:
+      return isSetCatName();
     case DB_NAME:
       return isSetDbName();
     case TBL_NAME:
       return isSetTblName();
-    case COL_NAMES:
-      return isSetColNames();
-    case CAT_NAME:
-      return isSetCatName();
+    case MAX_PARTS:
+      return isSetMaxParts();
     case VALID_WRITE_ID_LIST:
       return isSetValidWriteIdList();
-    case ENGINE:
-      return isSetEngine();
+    case ID:
+      return isSetId();
     }
     throw new IllegalStateException();
   }
@@ -465,15 +448,24 @@ import org.slf4j.LoggerFactory;
   public boolean equals(Object that) {
     if (that == null)
       return false;
-    if (that instanceof TableStatsRequest)
-      return this.equals((TableStatsRequest)that);
+    if (that instanceof PartitionsRequest)
+      return this.equals((PartitionsRequest)that);
     return false;
   }
 
-  public boolean equals(TableStatsRequest that) {
+  public boolean equals(PartitionsRequest that) {
     if (that == null)
       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_dbName = true && this.isSetDbName();
     boolean that_present_dbName = true && that.isSetDbName();
     if (this_present_dbName || that_present_dbName) {
@@ -492,21 +484,12 @@ import org.slf4j.LoggerFactory;
         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))
+    boolean this_present_maxParts = true && this.isSetMaxParts();
+    boolean that_present_maxParts = true && that.isSetMaxParts();
+    if (this_present_maxParts || that_present_maxParts) {
+      if (!(this_present_maxParts && that_present_maxParts))
         return false;
-      if (!this.colNames.equals(that.colNames))
-        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))
+      if (this.maxParts != that.maxParts)
         return false;
     }
 
@@ -519,12 +502,12 @@ import org.slf4j.LoggerFactory;
         return false;
     }
 
-    boolean this_present_engine = true && this.isSetEngine();
-    boolean that_present_engine = true && that.isSetEngine();
-    if (this_present_engine || that_present_engine) {
-      if (!(this_present_engine && that_present_engine))
+    boolean this_present_id = true && this.isSetId();
+    boolean that_present_id = true && that.isSetId();
+    if (this_present_id || that_present_id) {
+      if (!(this_present_id && that_present_id))
         return false;
-      if (!this.engine.equals(that.engine))
+      if (this.id != that.id)
         return false;
     }
 
@@ -535,6 +518,11 @@ import org.slf4j.LoggerFactory;
   public int hashCode() {
     List<Object> list = new ArrayList<Object>();
 
+    boolean present_catName = true && (isSetCatName());
+    list.add(present_catName);
+    if (present_catName)
+      list.add(catName);
+
... 94879 lines suppressed ...