http://git-wip-us.apache.org/repos/asf/hive/blob/20eb7b51/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
new file mode 100644
index 0000000..b0818bb
--- /dev/null
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalPrivilegeSet.java
@@ -0,0 +1,906 @@
+/**
+ * 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 
PrincipalPrivilegeSet implements org.apache.thrift.TBase<PrincipalPrivilegeSet, 
PrincipalPrivilegeSet._Fields>, java.io.Serializable, Cloneable, 
Comparable<PrincipalPrivilegeSet> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("PrincipalPrivilegeSet");
+
+  private static final org.apache.thrift.protocol.TField 
USER_PRIVILEGES_FIELD_DESC = new 
org.apache.thrift.protocol.TField("userPrivileges", 
org.apache.thrift.protocol.TType.MAP, (short)1);
+  private static final org.apache.thrift.protocol.TField 
GROUP_PRIVILEGES_FIELD_DESC = new 
org.apache.thrift.protocol.TField("groupPrivileges", 
org.apache.thrift.protocol.TType.MAP, (short)2);
+  private static final org.apache.thrift.protocol.TField 
ROLE_PRIVILEGES_FIELD_DESC = new 
org.apache.thrift.protocol.TField("rolePrivileges", 
org.apache.thrift.protocol.TType.MAP, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = 
new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new 
PrincipalPrivilegeSetStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new 
PrincipalPrivilegeSetTupleSchemeFactory());
+  }
+
+  private Map<String,List<PrivilegeGrantInfo>> userPrivileges; // required
+  private Map<String,List<PrivilegeGrantInfo>> groupPrivileges; // required
+  private Map<String,List<PrivilegeGrantInfo>> rolePrivileges; // 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 {
+    USER_PRIVILEGES((short)1, "userPrivileges"),
+    GROUP_PRIVILEGES((short)2, "groupPrivileges"),
+    ROLE_PRIVILEGES((short)3, "rolePrivileges");
+
+    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: // USER_PRIVILEGES
+          return USER_PRIVILEGES;
+        case 2: // GROUP_PRIVILEGES
+          return GROUP_PRIVILEGES;
+        case 3: // ROLE_PRIVILEGES
+          return ROLE_PRIVILEGES;
+        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.USER_PRIVILEGES, new 
org.apache.thrift.meta_data.FieldMetaData("userPrivileges", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
 
+            new 
org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+                new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 PrivilegeGrantInfo.class)))));
+    tmpMap.put(_Fields.GROUP_PRIVILEGES, new 
org.apache.thrift.meta_data.FieldMetaData("groupPrivileges", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
 
+            new 
org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+                new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 PrivilegeGrantInfo.class)))));
+    tmpMap.put(_Fields.ROLE_PRIVILEGES, new 
org.apache.thrift.meta_data.FieldMetaData("rolePrivileges", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
+            new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
 
+            new 
org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+                new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 PrivilegeGrantInfo.class)))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PrincipalPrivilegeSet.class,
 metaDataMap);
+  }
+
+  public PrincipalPrivilegeSet() {
+  }
+
+  public PrincipalPrivilegeSet(
+    Map<String,List<PrivilegeGrantInfo>> userPrivileges,
+    Map<String,List<PrivilegeGrantInfo>> groupPrivileges,
+    Map<String,List<PrivilegeGrantInfo>> rolePrivileges)
+  {
+    this();
+    this.userPrivileges = userPrivileges;
+    this.groupPrivileges = groupPrivileges;
+    this.rolePrivileges = rolePrivileges;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public PrincipalPrivilegeSet(PrincipalPrivilegeSet other) {
+    if (other.isSetUserPrivileges()) {
+      Map<String,List<PrivilegeGrantInfo>> __this__userPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(other.userPrivileges.size());
+      for (Map.Entry<String, List<PrivilegeGrantInfo>> other_element : 
other.userPrivileges.entrySet()) {
+
+        String other_element_key = other_element.getKey();
+        List<PrivilegeGrantInfo> other_element_value = 
other_element.getValue();
+
+        String __this__userPrivileges_copy_key = other_element_key;
+
+        List<PrivilegeGrantInfo> __this__userPrivileges_copy_value = new 
ArrayList<PrivilegeGrantInfo>(other_element_value.size());
+        for (PrivilegeGrantInfo other_element_value_element : 
other_element_value) {
+          __this__userPrivileges_copy_value.add(new 
PrivilegeGrantInfo(other_element_value_element));
+        }
+
+        __this__userPrivileges.put(__this__userPrivileges_copy_key, 
__this__userPrivileges_copy_value);
+      }
+      this.userPrivileges = __this__userPrivileges;
+    }
+    if (other.isSetGroupPrivileges()) {
+      Map<String,List<PrivilegeGrantInfo>> __this__groupPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(other.groupPrivileges.size());
+      for (Map.Entry<String, List<PrivilegeGrantInfo>> other_element : 
other.groupPrivileges.entrySet()) {
+
+        String other_element_key = other_element.getKey();
+        List<PrivilegeGrantInfo> other_element_value = 
other_element.getValue();
+
+        String __this__groupPrivileges_copy_key = other_element_key;
+
+        List<PrivilegeGrantInfo> __this__groupPrivileges_copy_value = new 
ArrayList<PrivilegeGrantInfo>(other_element_value.size());
+        for (PrivilegeGrantInfo other_element_value_element : 
other_element_value) {
+          __this__groupPrivileges_copy_value.add(new 
PrivilegeGrantInfo(other_element_value_element));
+        }
+
+        __this__groupPrivileges.put(__this__groupPrivileges_copy_key, 
__this__groupPrivileges_copy_value);
+      }
+      this.groupPrivileges = __this__groupPrivileges;
+    }
+    if (other.isSetRolePrivileges()) {
+      Map<String,List<PrivilegeGrantInfo>> __this__rolePrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(other.rolePrivileges.size());
+      for (Map.Entry<String, List<PrivilegeGrantInfo>> other_element : 
other.rolePrivileges.entrySet()) {
+
+        String other_element_key = other_element.getKey();
+        List<PrivilegeGrantInfo> other_element_value = 
other_element.getValue();
+
+        String __this__rolePrivileges_copy_key = other_element_key;
+
+        List<PrivilegeGrantInfo> __this__rolePrivileges_copy_value = new 
ArrayList<PrivilegeGrantInfo>(other_element_value.size());
+        for (PrivilegeGrantInfo other_element_value_element : 
other_element_value) {
+          __this__rolePrivileges_copy_value.add(new 
PrivilegeGrantInfo(other_element_value_element));
+        }
+
+        __this__rolePrivileges.put(__this__rolePrivileges_copy_key, 
__this__rolePrivileges_copy_value);
+      }
+      this.rolePrivileges = __this__rolePrivileges;
+    }
+  }
+
+  public PrincipalPrivilegeSet deepCopy() {
+    return new PrincipalPrivilegeSet(this);
+  }
+
+  @Override
+  public void clear() {
+    this.userPrivileges = null;
+    this.groupPrivileges = null;
+    this.rolePrivileges = null;
+  }
+
+  public int getUserPrivilegesSize() {
+    return (this.userPrivileges == null) ? 0 : this.userPrivileges.size();
+  }
+
+  public void putToUserPrivileges(String key, List<PrivilegeGrantInfo> val) {
+    if (this.userPrivileges == null) {
+      this.userPrivileges = new HashMap<String,List<PrivilegeGrantInfo>>();
+    }
+    this.userPrivileges.put(key, val);
+  }
+
+  public Map<String,List<PrivilegeGrantInfo>> getUserPrivileges() {
+    return this.userPrivileges;
+  }
+
+  public void setUserPrivileges(Map<String,List<PrivilegeGrantInfo>> 
userPrivileges) {
+    this.userPrivileges = userPrivileges;
+  }
+
+  public void unsetUserPrivileges() {
+    this.userPrivileges = null;
+  }
+
+  /** Returns true if field userPrivileges is set (has been assigned a value) 
and false otherwise */
+  public boolean isSetUserPrivileges() {
+    return this.userPrivileges != null;
+  }
+
+  public void setUserPrivilegesIsSet(boolean value) {
+    if (!value) {
+      this.userPrivileges = null;
+    }
+  }
+
+  public int getGroupPrivilegesSize() {
+    return (this.groupPrivileges == null) ? 0 : this.groupPrivileges.size();
+  }
+
+  public void putToGroupPrivileges(String key, List<PrivilegeGrantInfo> val) {
+    if (this.groupPrivileges == null) {
+      this.groupPrivileges = new HashMap<String,List<PrivilegeGrantInfo>>();
+    }
+    this.groupPrivileges.put(key, val);
+  }
+
+  public Map<String,List<PrivilegeGrantInfo>> getGroupPrivileges() {
+    return this.groupPrivileges;
+  }
+
+  public void setGroupPrivileges(Map<String,List<PrivilegeGrantInfo>> 
groupPrivileges) {
+    this.groupPrivileges = groupPrivileges;
+  }
+
+  public void unsetGroupPrivileges() {
+    this.groupPrivileges = null;
+  }
+
+  /** Returns true if field groupPrivileges is set (has been assigned a value) 
and false otherwise */
+  public boolean isSetGroupPrivileges() {
+    return this.groupPrivileges != null;
+  }
+
+  public void setGroupPrivilegesIsSet(boolean value) {
+    if (!value) {
+      this.groupPrivileges = null;
+    }
+  }
+
+  public int getRolePrivilegesSize() {
+    return (this.rolePrivileges == null) ? 0 : this.rolePrivileges.size();
+  }
+
+  public void putToRolePrivileges(String key, List<PrivilegeGrantInfo> val) {
+    if (this.rolePrivileges == null) {
+      this.rolePrivileges = new HashMap<String,List<PrivilegeGrantInfo>>();
+    }
+    this.rolePrivileges.put(key, val);
+  }
+
+  public Map<String,List<PrivilegeGrantInfo>> getRolePrivileges() {
+    return this.rolePrivileges;
+  }
+
+  public void setRolePrivileges(Map<String,List<PrivilegeGrantInfo>> 
rolePrivileges) {
+    this.rolePrivileges = rolePrivileges;
+  }
+
+  public void unsetRolePrivileges() {
+    this.rolePrivileges = null;
+  }
+
+  /** Returns true if field rolePrivileges is set (has been assigned a value) 
and false otherwise */
+  public boolean isSetRolePrivileges() {
+    return this.rolePrivileges != null;
+  }
+
+  public void setRolePrivilegesIsSet(boolean value) {
+    if (!value) {
+      this.rolePrivileges = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case USER_PRIVILEGES:
+      if (value == null) {
+        unsetUserPrivileges();
+      } else {
+        setUserPrivileges((Map<String,List<PrivilegeGrantInfo>>)value);
+      }
+      break;
+
+    case GROUP_PRIVILEGES:
+      if (value == null) {
+        unsetGroupPrivileges();
+      } else {
+        setGroupPrivileges((Map<String,List<PrivilegeGrantInfo>>)value);
+      }
+      break;
+
+    case ROLE_PRIVILEGES:
+      if (value == null) {
+        unsetRolePrivileges();
+      } else {
+        setRolePrivileges((Map<String,List<PrivilegeGrantInfo>>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case USER_PRIVILEGES:
+      return getUserPrivileges();
+
+    case GROUP_PRIVILEGES:
+      return getGroupPrivileges();
+
+    case ROLE_PRIVILEGES:
+      return getRolePrivileges();
+
+    }
+    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 USER_PRIVILEGES:
+      return isSetUserPrivileges();
+    case GROUP_PRIVILEGES:
+      return isSetGroupPrivileges();
+    case ROLE_PRIVILEGES:
+      return isSetRolePrivileges();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof PrincipalPrivilegeSet)
+      return this.equals((PrincipalPrivilegeSet)that);
+    return false;
+  }
+
+  public boolean equals(PrincipalPrivilegeSet that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_userPrivileges = true && this.isSetUserPrivileges();
+    boolean that_present_userPrivileges = true && that.isSetUserPrivileges();
+    if (this_present_userPrivileges || that_present_userPrivileges) {
+      if (!(this_present_userPrivileges && that_present_userPrivileges))
+        return false;
+      if (!this.userPrivileges.equals(that.userPrivileges))
+        return false;
+    }
+
+    boolean this_present_groupPrivileges = true && this.isSetGroupPrivileges();
+    boolean that_present_groupPrivileges = true && that.isSetGroupPrivileges();
+    if (this_present_groupPrivileges || that_present_groupPrivileges) {
+      if (!(this_present_groupPrivileges && that_present_groupPrivileges))
+        return false;
+      if (!this.groupPrivileges.equals(that.groupPrivileges))
+        return false;
+    }
+
+    boolean this_present_rolePrivileges = true && this.isSetRolePrivileges();
+    boolean that_present_rolePrivileges = true && that.isSetRolePrivileges();
+    if (this_present_rolePrivileges || that_present_rolePrivileges) {
+      if (!(this_present_rolePrivileges && that_present_rolePrivileges))
+        return false;
+      if (!this.rolePrivileges.equals(that.rolePrivileges))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_userPrivileges = true && (isSetUserPrivileges());
+    list.add(present_userPrivileges);
+    if (present_userPrivileges)
+      list.add(userPrivileges);
+
+    boolean present_groupPrivileges = true && (isSetGroupPrivileges());
+    list.add(present_groupPrivileges);
+    if (present_groupPrivileges)
+      list.add(groupPrivileges);
+
+    boolean present_rolePrivileges = true && (isSetRolePrivileges());
+    list.add(present_rolePrivileges);
+    if (present_rolePrivileges)
+      list.add(rolePrivileges);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(PrincipalPrivilegeSet other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = 
Boolean.valueOf(isSetUserPrivileges()).compareTo(other.isSetUserPrivileges());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetUserPrivileges()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.userPrivileges, 
other.userPrivileges);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetGroupPrivileges()).compareTo(other.isSetGroupPrivileges());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGroupPrivileges()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.groupPrivileges, 
other.groupPrivileges);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetRolePrivileges()).compareTo(other.isSetRolePrivileges());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetRolePrivileges()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.rolePrivileges, 
other.rolePrivileges);
+      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("PrincipalPrivilegeSet(");
+    boolean first = true;
+
+    sb.append("userPrivileges:");
+    if (this.userPrivileges == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.userPrivileges);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("groupPrivileges:");
+    if (this.groupPrivileges == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.groupPrivileges);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("rolePrivileges:");
+    if (this.rolePrivileges == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.rolePrivileges);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class PrincipalPrivilegeSetStandardSchemeFactory implements 
SchemeFactory {
+    public PrincipalPrivilegeSetStandardScheme getScheme() {
+      return new PrincipalPrivilegeSetStandardScheme();
+    }
+  }
+
+  private static class PrincipalPrivilegeSetStandardScheme extends 
StandardScheme<PrincipalPrivilegeSet> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, 
PrincipalPrivilegeSet 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: // USER_PRIVILEGES
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map24 = iprot.readMapBegin();
+                struct.userPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map24.size);
+                String _key25;
+                List<PrivilegeGrantInfo> _val26;
+                for (int _i27 = 0; _i27 < _map24.size; ++_i27)
+                {
+                  _key25 = iprot.readString();
+                  {
+                    org.apache.thrift.protocol.TList _list28 = 
iprot.readListBegin();
+                    _val26 = new ArrayList<PrivilegeGrantInfo>(_list28.size);
+                    PrivilegeGrantInfo _elem29;
+                    for (int _i30 = 0; _i30 < _list28.size; ++_i30)
+                    {
+                      _elem29 = new PrivilegeGrantInfo();
+                      _elem29.read(iprot);
+                      _val26.add(_elem29);
+                    }
+                    iprot.readListEnd();
+                  }
+                  struct.userPrivileges.put(_key25, _val26);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setUserPrivilegesIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 2: // GROUP_PRIVILEGES
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map31 = iprot.readMapBegin();
+                struct.groupPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map31.size);
+                String _key32;
+                List<PrivilegeGrantInfo> _val33;
+                for (int _i34 = 0; _i34 < _map31.size; ++_i34)
+                {
+                  _key32 = iprot.readString();
+                  {
+                    org.apache.thrift.protocol.TList _list35 = 
iprot.readListBegin();
+                    _val33 = new ArrayList<PrivilegeGrantInfo>(_list35.size);
+                    PrivilegeGrantInfo _elem36;
+                    for (int _i37 = 0; _i37 < _list35.size; ++_i37)
+                    {
+                      _elem36 = new PrivilegeGrantInfo();
+                      _elem36.read(iprot);
+                      _val33.add(_elem36);
+                    }
+                    iprot.readListEnd();
+                  }
+                  struct.groupPrivileges.put(_key32, _val33);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setGroupPrivilegesIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 3: // ROLE_PRIVILEGES
+            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
+              {
+                org.apache.thrift.protocol.TMap _map38 = iprot.readMapBegin();
+                struct.rolePrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map38.size);
+                String _key39;
+                List<PrivilegeGrantInfo> _val40;
+                for (int _i41 = 0; _i41 < _map38.size; ++_i41)
+                {
+                  _key39 = iprot.readString();
+                  {
+                    org.apache.thrift.protocol.TList _list42 = 
iprot.readListBegin();
+                    _val40 = new ArrayList<PrivilegeGrantInfo>(_list42.size);
+                    PrivilegeGrantInfo _elem43;
+                    for (int _i44 = 0; _i44 < _list42.size; ++_i44)
+                    {
+                      _elem43 = new PrivilegeGrantInfo();
+                      _elem43.read(iprot);
+                      _val40.add(_elem43);
+                    }
+                    iprot.readListEnd();
+                  }
+                  struct.rolePrivileges.put(_key39, _val40);
+                }
+                iprot.readMapEnd();
+              }
+              struct.setRolePrivilegesIsSet(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, 
PrincipalPrivilegeSet struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.userPrivileges != null) {
+        oprot.writeFieldBegin(USER_PRIVILEGES_FIELD_DESC);
+        {
+          oprot.writeMapBegin(new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, struct.userPrivileges.size()));
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter45 : 
struct.userPrivileges.entrySet())
+          {
+            oprot.writeString(_iter45.getKey());
+            {
+              oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
_iter45.getValue().size()));
+              for (PrivilegeGrantInfo _iter46 : _iter45.getValue())
+              {
+                _iter46.write(oprot);
+              }
+              oprot.writeListEnd();
+            }
+          }
+          oprot.writeMapEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      if (struct.groupPrivileges != null) {
+        oprot.writeFieldBegin(GROUP_PRIVILEGES_FIELD_DESC);
+        {
+          oprot.writeMapBegin(new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, struct.groupPrivileges.size()));
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter47 : 
struct.groupPrivileges.entrySet())
+          {
+            oprot.writeString(_iter47.getKey());
+            {
+              oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
_iter47.getValue().size()));
+              for (PrivilegeGrantInfo _iter48 : _iter47.getValue())
+              {
+                _iter48.write(oprot);
+              }
+              oprot.writeListEnd();
+            }
+          }
+          oprot.writeMapEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      if (struct.rolePrivileges != null) {
+        oprot.writeFieldBegin(ROLE_PRIVILEGES_FIELD_DESC);
+        {
+          oprot.writeMapBegin(new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, struct.rolePrivileges.size()));
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter49 : 
struct.rolePrivileges.entrySet())
+          {
+            oprot.writeString(_iter49.getKey());
+            {
+              oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
_iter49.getValue().size()));
+              for (PrivilegeGrantInfo _iter50 : _iter49.getValue())
+              {
+                _iter50.write(oprot);
+              }
+              oprot.writeListEnd();
+            }
+          }
+          oprot.writeMapEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class PrincipalPrivilegeSetTupleSchemeFactory implements 
SchemeFactory {
+    public PrincipalPrivilegeSetTupleScheme getScheme() {
+      return new PrincipalPrivilegeSetTupleScheme();
+    }
+  }
+
+  private static class PrincipalPrivilegeSetTupleScheme extends 
TupleScheme<PrincipalPrivilegeSet> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, 
PrincipalPrivilegeSet struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetUserPrivileges()) {
+        optionals.set(0);
+      }
+      if (struct.isSetGroupPrivileges()) {
+        optionals.set(1);
+      }
+      if (struct.isSetRolePrivileges()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetUserPrivileges()) {
+        {
+          oprot.writeI32(struct.userPrivileges.size());
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter51 : 
struct.userPrivileges.entrySet())
+          {
+            oprot.writeString(_iter51.getKey());
+            {
+              oprot.writeI32(_iter51.getValue().size());
+              for (PrivilegeGrantInfo _iter52 : _iter51.getValue())
+              {
+                _iter52.write(oprot);
+              }
+            }
+          }
+        }
+      }
+      if (struct.isSetGroupPrivileges()) {
+        {
+          oprot.writeI32(struct.groupPrivileges.size());
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter53 : 
struct.groupPrivileges.entrySet())
+          {
+            oprot.writeString(_iter53.getKey());
+            {
+              oprot.writeI32(_iter53.getValue().size());
+              for (PrivilegeGrantInfo _iter54 : _iter53.getValue())
+              {
+                _iter54.write(oprot);
+              }
+            }
+          }
+        }
+      }
+      if (struct.isSetRolePrivileges()) {
+        {
+          oprot.writeI32(struct.rolePrivileges.size());
+          for (Map.Entry<String, List<PrivilegeGrantInfo>> _iter55 : 
struct.rolePrivileges.entrySet())
+          {
+            oprot.writeString(_iter55.getKey());
+            {
+              oprot.writeI32(_iter55.getValue().size());
+              for (PrivilegeGrantInfo _iter56 : _iter55.getValue())
+              {
+                _iter56.write(oprot);
+              }
+            }
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, 
PrincipalPrivilegeSet struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        {
+          org.apache.thrift.protocol.TMap _map57 = new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+          struct.userPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map57.size);
+          String _key58;
+          List<PrivilegeGrantInfo> _val59;
+          for (int _i60 = 0; _i60 < _map57.size; ++_i60)
+          {
+            _key58 = iprot.readString();
+            {
+              org.apache.thrift.protocol.TList _list61 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
+              _val59 = new ArrayList<PrivilegeGrantInfo>(_list61.size);
+              PrivilegeGrantInfo _elem62;
+              for (int _i63 = 0; _i63 < _list61.size; ++_i63)
+              {
+                _elem62 = new PrivilegeGrantInfo();
+                _elem62.read(iprot);
+                _val59.add(_elem62);
+              }
+            }
+            struct.userPrivileges.put(_key58, _val59);
+          }
+        }
+        struct.setUserPrivilegesIsSet(true);
+      }
+      if (incoming.get(1)) {
+        {
+          org.apache.thrift.protocol.TMap _map64 = new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+          struct.groupPrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map64.size);
+          String _key65;
+          List<PrivilegeGrantInfo> _val66;
+          for (int _i67 = 0; _i67 < _map64.size; ++_i67)
+          {
+            _key65 = iprot.readString();
+            {
+              org.apache.thrift.protocol.TList _list68 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
+              _val66 = new ArrayList<PrivilegeGrantInfo>(_list68.size);
+              PrivilegeGrantInfo _elem69;
+              for (int _i70 = 0; _i70 < _list68.size; ++_i70)
+              {
+                _elem69 = new PrivilegeGrantInfo();
+                _elem69.read(iprot);
+                _val66.add(_elem69);
+              }
+            }
+            struct.groupPrivileges.put(_key65, _val66);
+          }
+        }
+        struct.setGroupPrivilegesIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TMap _map71 = new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.LIST, iprot.readI32());
+          struct.rolePrivileges = new 
HashMap<String,List<PrivilegeGrantInfo>>(2*_map71.size);
+          String _key72;
+          List<PrivilegeGrantInfo> _val73;
+          for (int _i74 = 0; _i74 < _map71.size; ++_i74)
+          {
+            _key72 = iprot.readString();
+            {
+              org.apache.thrift.protocol.TList _list75 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
+              _val73 = new ArrayList<PrivilegeGrantInfo>(_list75.size);
+              PrivilegeGrantInfo _elem76;
+              for (int _i77 = 0; _i77 < _list75.size; ++_i77)
+              {
+                _elem76 = new PrivilegeGrantInfo();
+                _elem76.read(iprot);
+                _val73.add(_elem76);
+              }
+            }
+            struct.rolePrivileges.put(_key72, _val73);
+          }
+        }
+        struct.setRolePrivilegesIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/hive/blob/20eb7b51/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalType.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalType.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalType.java
new file mode 100644
index 0000000..82eb8fd
--- /dev/null
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrincipalType.java
@@ -0,0 +1,48 @@
+/**
+ * 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 java.util.Map;
+import java.util.HashMap;
+import org.apache.thrift.TEnum;
+
+public enum PrincipalType implements org.apache.thrift.TEnum {
+  USER(1),
+  ROLE(2),
+  GROUP(3);
+
+  private final int value;
+
+  private PrincipalType(int value) {
+    this.value = value;
+  }
+
+  /**
+   * Get the integer value of this enum value, as defined in the Thrift IDL.
+   */
+  public int getValue() {
+    return value;
+  }
+
+  /**
+   * Find a the enum type by its integer value, as defined in the Thrift IDL.
+   * @return null if the value is not found.
+   */
+  public static PrincipalType findByValue(int value) { 
+    switch (value) {
+      case 1:
+        return USER;
+      case 2:
+        return ROLE;
+      case 3:
+        return GROUP;
+      default:
+        return null;
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/20eb7b51/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeBag.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeBag.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeBag.java
new file mode 100644
index 0000000..a5c8969
--- /dev/null
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeBag.java
@@ -0,0 +1,449 @@
+/**
+ * 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 
PrivilegeBag implements org.apache.thrift.TBase<PrivilegeBag, 
PrivilegeBag._Fields>, java.io.Serializable, Cloneable, 
Comparable<PrivilegeBag> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("PrivilegeBag");
+
+  private static final org.apache.thrift.protocol.TField PRIVILEGES_FIELD_DESC 
= new org.apache.thrift.protocol.TField("privileges", 
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 PrivilegeBagStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new PrivilegeBagTupleSchemeFactory());
+  }
+
+  private List<HiveObjectPrivilege> privileges; // 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 {
+    PRIVILEGES((short)1, "privileges");
+
+    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: // PRIVILEGES
+          return PRIVILEGES;
+        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.PRIVILEGES, new 
org.apache.thrift.meta_data.FieldMetaData("privileges", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        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,
 HiveObjectPrivilege.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PrivilegeBag.class,
 metaDataMap);
+  }
+
+  public PrivilegeBag() {
+  }
+
+  public PrivilegeBag(
+    List<HiveObjectPrivilege> privileges)
+  {
+    this();
+    this.privileges = privileges;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public PrivilegeBag(PrivilegeBag other) {
+    if (other.isSetPrivileges()) {
+      List<HiveObjectPrivilege> __this__privileges = new 
ArrayList<HiveObjectPrivilege>(other.privileges.size());
+      for (HiveObjectPrivilege other_element : other.privileges) {
+        __this__privileges.add(new HiveObjectPrivilege(other_element));
+      }
+      this.privileges = __this__privileges;
+    }
+  }
+
+  public PrivilegeBag deepCopy() {
+    return new PrivilegeBag(this);
+  }
+
+  @Override
+  public void clear() {
+    this.privileges = null;
+  }
+
+  public int getPrivilegesSize() {
+    return (this.privileges == null) ? 0 : this.privileges.size();
+  }
+
+  public java.util.Iterator<HiveObjectPrivilege> getPrivilegesIterator() {
+    return (this.privileges == null) ? null : this.privileges.iterator();
+  }
+
+  public void addToPrivileges(HiveObjectPrivilege elem) {
+    if (this.privileges == null) {
+      this.privileges = new ArrayList<HiveObjectPrivilege>();
+    }
+    this.privileges.add(elem);
+  }
+
+  public List<HiveObjectPrivilege> getPrivileges() {
+    return this.privileges;
+  }
+
+  public void setPrivileges(List<HiveObjectPrivilege> privileges) {
+    this.privileges = privileges;
+  }
+
+  public void unsetPrivileges() {
+    this.privileges = null;
+  }
+
+  /** Returns true if field privileges is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetPrivileges() {
+    return this.privileges != null;
+  }
+
+  public void setPrivilegesIsSet(boolean value) {
+    if (!value) {
+      this.privileges = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PRIVILEGES:
+      if (value == null) {
+        unsetPrivileges();
+      } else {
+        setPrivileges((List<HiveObjectPrivilege>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PRIVILEGES:
+      return getPrivileges();
+
+    }
+    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 PRIVILEGES:
+      return isSetPrivileges();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof PrivilegeBag)
+      return this.equals((PrivilegeBag)that);
+    return false;
+  }
+
+  public boolean equals(PrivilegeBag that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_privileges = true && this.isSetPrivileges();
+    boolean that_present_privileges = true && that.isSetPrivileges();
+    if (this_present_privileges || that_present_privileges) {
+      if (!(this_present_privileges && that_present_privileges))
+        return false;
+      if (!this.privileges.equals(that.privileges))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_privileges = true && (isSetPrivileges());
+    list.add(present_privileges);
+    if (present_privileges)
+      list.add(privileges);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(PrivilegeBag other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = 
Boolean.valueOf(isSetPrivileges()).compareTo(other.isSetPrivileges());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPrivileges()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.privileges, other.privileges);
+      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("PrivilegeBag(");
+    boolean first = true;
+
+    sb.append("privileges:");
+    if (this.privileges == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.privileges);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private static class PrivilegeBagStandardSchemeFactory implements 
SchemeFactory {
+    public PrivilegeBagStandardScheme getScheme() {
+      return new PrivilegeBagStandardScheme();
+    }
+  }
+
+  private static class PrivilegeBagStandardScheme extends 
StandardScheme<PrivilegeBag> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, PrivilegeBag 
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: // PRIVILEGES
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list16 = 
iprot.readListBegin();
+                struct.privileges = new 
ArrayList<HiveObjectPrivilege>(_list16.size);
+                HiveObjectPrivilege _elem17;
+                for (int _i18 = 0; _i18 < _list16.size; ++_i18)
+                {
+                  _elem17 = new HiveObjectPrivilege();
+                  _elem17.read(iprot);
+                  struct.privileges.add(_elem17);
+                }
+                iprot.readListEnd();
+              }
+              struct.setPrivilegesIsSet(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, PrivilegeBag 
struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.privileges != null) {
+        oprot.writeFieldBegin(PRIVILEGES_FIELD_DESC);
+        {
+          oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.privileges.size()));
+          for (HiveObjectPrivilege _iter19 : struct.privileges)
+          {
+            _iter19.write(oprot);
+          }
+          oprot.writeListEnd();
+        }
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class PrivilegeBagTupleSchemeFactory implements SchemeFactory 
{
+    public PrivilegeBagTupleScheme getScheme() {
+      return new PrivilegeBagTupleScheme();
+    }
+  }
+
+  private static class PrivilegeBagTupleScheme extends 
TupleScheme<PrivilegeBag> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, PrivilegeBag 
struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetPrivileges()) {
+        optionals.set(0);
+      }
+      oprot.writeBitSet(optionals, 1);
+      if (struct.isSetPrivileges()) {
+        {
+          oprot.writeI32(struct.privileges.size());
+          for (HiveObjectPrivilege _iter20 : struct.privileges)
+          {
+            _iter20.write(oprot);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, PrivilegeBag 
struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(1);
+      if (incoming.get(0)) {
+        {
+          org.apache.thrift.protocol.TList _list21 = new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
iprot.readI32());
+          struct.privileges = new ArrayList<HiveObjectPrivilege>(_list21.size);
+          HiveObjectPrivilege _elem22;
+          for (int _i23 = 0; _i23 < _list21.size; ++_i23)
+          {
+            _elem22 = new HiveObjectPrivilege();
+            _elem22.read(iprot);
+            struct.privileges.add(_elem22);
+          }
+        }
+        struct.setPrivilegesIsSet(true);
+      }
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/hive/blob/20eb7b51/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeGrantInfo.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeGrantInfo.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeGrantInfo.java
new file mode 100644
index 0000000..8ae118c
--- /dev/null
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PrivilegeGrantInfo.java
@@ -0,0 +1,815 @@
+/**
+ * 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 
PrivilegeGrantInfo implements org.apache.thrift.TBase<PrivilegeGrantInfo, 
PrivilegeGrantInfo._Fields>, java.io.Serializable, Cloneable, 
Comparable<PrivilegeGrantInfo> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("PrivilegeGrantInfo");
+
+  private static final org.apache.thrift.protocol.TField PRIVILEGE_FIELD_DESC 
= new org.apache.thrift.protocol.TField("privilege", 
org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField 
CREATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("createTime", 
org.apache.thrift.protocol.TType.I32, (short)2);
+  private static final org.apache.thrift.protocol.TField GRANTOR_FIELD_DESC = 
new org.apache.thrift.protocol.TField("grantor", 
org.apache.thrift.protocol.TType.STRING, (short)3);
+  private static final org.apache.thrift.protocol.TField 
GRANTOR_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("grantorType", 
org.apache.thrift.protocol.TType.I32, (short)4);
+  private static final org.apache.thrift.protocol.TField 
GRANT_OPTION_FIELD_DESC = new org.apache.thrift.protocol.TField("grantOption", 
org.apache.thrift.protocol.TType.BOOL, (short)5);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = 
new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new 
PrivilegeGrantInfoStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new PrivilegeGrantInfoTupleSchemeFactory());
+  }
+
+  private String privilege; // required
+  private int createTime; // required
+  private String grantor; // required
+  private PrincipalType grantorType; // required
+  private boolean grantOption; // 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 {
+    PRIVILEGE((short)1, "privilege"),
+    CREATE_TIME((short)2, "createTime"),
+    GRANTOR((short)3, "grantor"),
+    /**
+     * 
+     * @see PrincipalType
+     */
+    GRANTOR_TYPE((short)4, "grantorType"),
+    GRANT_OPTION((short)5, "grantOption");
+
+    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: // PRIVILEGE
+          return PRIVILEGE;
+        case 2: // CREATE_TIME
+          return CREATE_TIME;
+        case 3: // GRANTOR
+          return GRANTOR;
+        case 4: // GRANTOR_TYPE
+          return GRANTOR_TYPE;
+        case 5: // GRANT_OPTION
+          return GRANT_OPTION;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + 
fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __CREATETIME_ISSET_ID = 0;
+  private static final int __GRANTOPTION_ISSET_ID = 1;
+  private byte __isset_bitfield = 0;
+  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.PRIVILEGE, new 
org.apache.thrift.meta_data.FieldMetaData("privilege", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.CREATE_TIME, new 
org.apache.thrift.meta_data.FieldMetaData("createTime", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.GRANTOR, new 
org.apache.thrift.meta_data.FieldMetaData("grantor", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.GRANTOR_TYPE, new 
org.apache.thrift.meta_data.FieldMetaData("grantorType", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, 
PrincipalType.class)));
+    tmpMap.put(_Fields.GRANT_OPTION, new 
org.apache.thrift.meta_data.FieldMetaData("grantOption", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PrivilegeGrantInfo.class,
 metaDataMap);
+  }
+
+  public PrivilegeGrantInfo() {
+  }
+
+  public PrivilegeGrantInfo(
+    String privilege,
+    int createTime,
+    String grantor,
+    PrincipalType grantorType,
+    boolean grantOption)
+  {
+    this();
+    this.privilege = privilege;
+    this.createTime = createTime;
+    setCreateTimeIsSet(true);
+    this.grantor = grantor;
+    this.grantorType = grantorType;
+    this.grantOption = grantOption;
+    setGrantOptionIsSet(true);
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public PrivilegeGrantInfo(PrivilegeGrantInfo other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetPrivilege()) {
+      this.privilege = other.privilege;
+    }
+    this.createTime = other.createTime;
+    if (other.isSetGrantor()) {
+      this.grantor = other.grantor;
+    }
+    if (other.isSetGrantorType()) {
+      this.grantorType = other.grantorType;
+    }
+    this.grantOption = other.grantOption;
+  }
+
+  public PrivilegeGrantInfo deepCopy() {
+    return new PrivilegeGrantInfo(this);
+  }
+
+  @Override
+  public void clear() {
+    this.privilege = null;
+    setCreateTimeIsSet(false);
+    this.createTime = 0;
+    this.grantor = null;
+    this.grantorType = null;
+    setGrantOptionIsSet(false);
+    this.grantOption = false;
+  }
+
+  public String getPrivilege() {
+    return this.privilege;
+  }
+
+  public void setPrivilege(String privilege) {
+    this.privilege = privilege;
+  }
+
+  public void unsetPrivilege() {
+    this.privilege = null;
+  }
+
+  /** Returns true if field privilege is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetPrivilege() {
+    return this.privilege != null;
+  }
+
+  public void setPrivilegeIsSet(boolean value) {
+    if (!value) {
+      this.privilege = null;
+    }
+  }
+
+  public int getCreateTime() {
+    return this.createTime;
+  }
+
+  public void setCreateTime(int createTime) {
+    this.createTime = createTime;
+    setCreateTimeIsSet(true);
+  }
+
+  public void unsetCreateTime() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, 
__CREATETIME_ISSET_ID);
+  }
+
+  /** Returns true if field createTime is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetCreateTime() {
+    return EncodingUtils.testBit(__isset_bitfield, __CREATETIME_ISSET_ID);
+  }
+
+  public void setCreateTimeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, 
__CREATETIME_ISSET_ID, value);
+  }
+
+  public String getGrantor() {
+    return this.grantor;
+  }
+
+  public void setGrantor(String grantor) {
+    this.grantor = grantor;
+  }
+
+  public void unsetGrantor() {
+    this.grantor = null;
+  }
+
+  /** Returns true if field grantor is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetGrantor() {
+    return this.grantor != null;
+  }
+
+  public void setGrantorIsSet(boolean value) {
+    if (!value) {
+      this.grantor = null;
+    }
+  }
+
+  /**
+   * 
+   * @see PrincipalType
+   */
+  public PrincipalType getGrantorType() {
+    return this.grantorType;
+  }
+
+  /**
+   * 
+   * @see PrincipalType
+   */
+  public void setGrantorType(PrincipalType grantorType) {
+    this.grantorType = grantorType;
+  }
+
+  public void unsetGrantorType() {
+    this.grantorType = null;
+  }
+
+  /** Returns true if field grantorType is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetGrantorType() {
+    return this.grantorType != null;
+  }
+
+  public void setGrantorTypeIsSet(boolean value) {
+    if (!value) {
+      this.grantorType = null;
+    }
+  }
+
+  public boolean isGrantOption() {
+    return this.grantOption;
+  }
+
+  public void setGrantOption(boolean grantOption) {
+    this.grantOption = grantOption;
+    setGrantOptionIsSet(true);
+  }
+
+  public void unsetGrantOption() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, 
__GRANTOPTION_ISSET_ID);
+  }
+
+  /** Returns true if field grantOption is set (has been assigned a value) and 
false otherwise */
+  public boolean isSetGrantOption() {
+    return EncodingUtils.testBit(__isset_bitfield, __GRANTOPTION_ISSET_ID);
+  }
+
+  public void setGrantOptionIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, 
__GRANTOPTION_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case PRIVILEGE:
+      if (value == null) {
+        unsetPrivilege();
+      } else {
+        setPrivilege((String)value);
+      }
+      break;
+
+    case CREATE_TIME:
+      if (value == null) {
+        unsetCreateTime();
+      } else {
+        setCreateTime((Integer)value);
+      }
+      break;
+
+    case GRANTOR:
+      if (value == null) {
+        unsetGrantor();
+      } else {
+        setGrantor((String)value);
+      }
+      break;
+
+    case GRANTOR_TYPE:
+      if (value == null) {
+        unsetGrantorType();
+      } else {
+        setGrantorType((PrincipalType)value);
+      }
+      break;
+
+    case GRANT_OPTION:
+      if (value == null) {
+        unsetGrantOption();
+      } else {
+        setGrantOption((Boolean)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case PRIVILEGE:
+      return getPrivilege();
+
+    case CREATE_TIME:
+      return getCreateTime();
+
+    case GRANTOR:
+      return getGrantor();
+
+    case GRANTOR_TYPE:
+      return getGrantorType();
+
+    case GRANT_OPTION:
+      return isGrantOption();
+
+    }
+    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 PRIVILEGE:
+      return isSetPrivilege();
+    case CREATE_TIME:
+      return isSetCreateTime();
+    case GRANTOR:
+      return isSetGrantor();
+    case GRANTOR_TYPE:
+      return isSetGrantorType();
+    case GRANT_OPTION:
+      return isSetGrantOption();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof PrivilegeGrantInfo)
+      return this.equals((PrivilegeGrantInfo)that);
+    return false;
+  }
+
+  public boolean equals(PrivilegeGrantInfo that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_privilege = true && this.isSetPrivilege();
+    boolean that_present_privilege = true && that.isSetPrivilege();
+    if (this_present_privilege || that_present_privilege) {
+      if (!(this_present_privilege && that_present_privilege))
+        return false;
+      if (!this.privilege.equals(that.privilege))
+        return false;
+    }
+
+    boolean this_present_createTime = true;
+    boolean that_present_createTime = true;
+    if (this_present_createTime || that_present_createTime) {
+      if (!(this_present_createTime && that_present_createTime))
+        return false;
+      if (this.createTime != that.createTime)
+        return false;
+    }
+
+    boolean this_present_grantor = true && this.isSetGrantor();
+    boolean that_present_grantor = true && that.isSetGrantor();
+    if (this_present_grantor || that_present_grantor) {
+      if (!(this_present_grantor && that_present_grantor))
+        return false;
+      if (!this.grantor.equals(that.grantor))
+        return false;
+    }
+
+    boolean this_present_grantorType = true && this.isSetGrantorType();
+    boolean that_present_grantorType = true && that.isSetGrantorType();
+    if (this_present_grantorType || that_present_grantorType) {
+      if (!(this_present_grantorType && that_present_grantorType))
+        return false;
+      if (!this.grantorType.equals(that.grantorType))
+        return false;
+    }
+
+    boolean this_present_grantOption = true;
+    boolean that_present_grantOption = true;
+    if (this_present_grantOption || that_present_grantOption) {
+      if (!(this_present_grantOption && that_present_grantOption))
+        return false;
+      if (this.grantOption != that.grantOption)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_privilege = true && (isSetPrivilege());
+    list.add(present_privilege);
+    if (present_privilege)
+      list.add(privilege);
+
+    boolean present_createTime = true;
+    list.add(present_createTime);
+    if (present_createTime)
+      list.add(createTime);
+
+    boolean present_grantor = true && (isSetGrantor());
+    list.add(present_grantor);
+    if (present_grantor)
+      list.add(grantor);
+
+    boolean present_grantorType = true && (isSetGrantorType());
+    list.add(present_grantorType);
+    if (present_grantorType)
+      list.add(grantorType.getValue());
+
+    boolean present_grantOption = true;
+    list.add(present_grantOption);
+    if (present_grantOption)
+      list.add(grantOption);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(PrivilegeGrantInfo other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = 
Boolean.valueOf(isSetPrivilege()).compareTo(other.isSetPrivilege());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetPrivilege()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.privilege, 
other.privilege);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetCreateTime()).compareTo(other.isSetCreateTime());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCreateTime()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.createTime, other.createTime);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetGrantor()).compareTo(other.isSetGrantor());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGrantor()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.grantor, 
other.grantor);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetGrantorType()).compareTo(other.isSetGrantorType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGrantorType()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.grantorType, other.grantorType);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = 
Boolean.valueOf(isSetGrantOption()).compareTo(other.isSetGrantOption());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetGrantOption()) {
+      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.grantOption, other.grantOption);
+      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("PrivilegeGrantInfo(");
+    boolean first = true;
+
+    sb.append("privilege:");
+    if (this.privilege == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.privilege);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("createTime:");
+    sb.append(this.createTime);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("grantor:");
+    if (this.grantor == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.grantor);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("grantorType:");
+    if (this.grantorType == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.grantorType);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("grantOption:");
+    sb.append(this.grantOption);
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+    // check for sub-struct validity
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, ClassNotFoundException {
+    try {
+      // 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 PrivilegeGrantInfoStandardSchemeFactory implements 
SchemeFactory {
+    public PrivilegeGrantInfoStandardScheme getScheme() {
+      return new PrivilegeGrantInfoStandardScheme();
+    }
+  }
+
+  private static class PrivilegeGrantInfoStandardScheme extends 
StandardScheme<PrivilegeGrantInfo> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, 
PrivilegeGrantInfo 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: // PRIVILEGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.privilege = iprot.readString();
+              struct.setPrivilegeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 2: // CREATE_TIME
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.createTime = iprot.readI32();
+              struct.setCreateTimeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 3: // GRANTOR
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.grantor = iprot.readString();
+              struct.setGrantorIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 4: // GRANTOR_TYPE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.grantorType = 
org.apache.hadoop.hive.metastore.api.PrincipalType.findByValue(iprot.readI32());
+              struct.setGrantorTypeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
+            }
+            break;
+          case 5: // GRANT_OPTION
+            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
+              struct.grantOption = iprot.readBool();
+              struct.setGrantOptionIsSet(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, 
PrivilegeGrantInfo struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.privilege != null) {
+        oprot.writeFieldBegin(PRIVILEGE_FIELD_DESC);
+        oprot.writeString(struct.privilege);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldBegin(CREATE_TIME_FIELD_DESC);
+      oprot.writeI32(struct.createTime);
+      oprot.writeFieldEnd();
+      if (struct.grantor != null) {
+        oprot.writeFieldBegin(GRANTOR_FIELD_DESC);
+        oprot.writeString(struct.grantor);
+        oprot.writeFieldEnd();
+      }
+      if (struct.grantorType != null) {
+        oprot.writeFieldBegin(GRANTOR_TYPE_FIELD_DESC);
+        oprot.writeI32(struct.grantorType.getValue());
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldBegin(GRANT_OPTION_FIELD_DESC);
+      oprot.writeBool(struct.grantOption);
+      oprot.writeFieldEnd();
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class PrivilegeGrantInfoTupleSchemeFactory implements 
SchemeFactory {
+    public PrivilegeGrantInfoTupleScheme getScheme() {
+      return new PrivilegeGrantInfoTupleScheme();
+    }
+  }
+
+  private static class PrivilegeGrantInfoTupleScheme extends 
TupleScheme<PrivilegeGrantInfo> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, 
PrivilegeGrantInfo struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetPrivilege()) {
+        optionals.set(0);
+      }
+      if (struct.isSetCreateTime()) {
+        optionals.set(1);
+      }
+      if (struct.isSetGrantor()) {
+        optionals.set(2);
+      }
+      if (struct.isSetGrantorType()) {
+        optionals.set(3);
+      }
+      if (struct.isSetGrantOption()) {
+        optionals.set(4);
+      }
+      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetPrivilege()) {
+        oprot.writeString(struct.privilege);
+      }
+      if (struct.isSetCreateTime()) {
+        oprot.writeI32(struct.createTime);
+      }
+      if (struct.isSetGrantor()) {
+        oprot.writeString(struct.grantor);
+      }
+      if (struct.isSetGrantorType()) {
+        oprot.writeI32(struct.grantorType.getValue());
+      }
+      if (struct.isSetGrantOption()) {
+        oprot.writeBool(struct.grantOption);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, 
PrivilegeGrantInfo struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(5);
+      if (incoming.get(0)) {
+        struct.privilege = iprot.readString();
+        struct.setPrivilegeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.createTime = iprot.readI32();
+        struct.setCreateTimeIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.grantor = iprot.readString();
+        struct.setGrantorIsSet(true);
+      }
+      if (incoming.get(3)) {
+        struct.grantorType = 
org.apache.hadoop.hive.metastore.api.PrincipalType.findByValue(iprot.readI32());
+        struct.setGrantorTypeIsSet(true);
+      }
+      if (incoming.get(4)) {
+        struct.grantOption = iprot.readBool();
+        struct.setGrantOptionIsSet(true);
+      }
+    }
+  }
+
+}
+

Reply via email to