http://git-wip-us.apache.org/repos/asf/hive/blob/93b9cdd6/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
----------------------------------------------------------------------
diff --cc 
standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
index 0000000,0348ff2..86b469c
mode 000000,100644..100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
@@@ -1,0 -1,5322 +1,5419 @@@
+ #
+ # Autogenerated by Thrift Compiler (0.9.3)
+ #
+ # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ #
+ 
+ require 'thrift'
+ require 'fb303_types'
+ 
+ 
+ module HiveObjectType
+   GLOBAL = 1
+   DATABASE = 2
+   TABLE = 3
+   PARTITION = 4
+   COLUMN = 5
+   VALUE_MAP = {1 => "GLOBAL", 2 => "DATABASE", 3 => "TABLE", 4 => 
"PARTITION", 5 => "COLUMN"}
+   VALID_VALUES = Set.new([GLOBAL, DATABASE, TABLE, PARTITION, COLUMN]).freeze
+ end
+ 
+ module PrincipalType
+   USER = 1
+   ROLE = 2
+   GROUP = 3
+   VALUE_MAP = {1 => "USER", 2 => "ROLE", 3 => "GROUP"}
+   VALID_VALUES = Set.new([USER, ROLE, GROUP]).freeze
+ end
+ 
+ module PartitionEventType
+   LOAD_DONE = 1
+   VALUE_MAP = {1 => "LOAD_DONE"}
+   VALID_VALUES = Set.new([LOAD_DONE]).freeze
+ end
+ 
+ module TxnState
+   COMMITTED = 1
+   ABORTED = 2
+   OPEN = 3
+   VALUE_MAP = {1 => "COMMITTED", 2 => "ABORTED", 3 => "OPEN"}
+   VALID_VALUES = Set.new([COMMITTED, ABORTED, OPEN]).freeze
+ end
+ 
+ module LockLevel
+   DB = 1
+   TABLE = 2
+   PARTITION = 3
+   VALUE_MAP = {1 => "DB", 2 => "TABLE", 3 => "PARTITION"}
+   VALID_VALUES = Set.new([DB, TABLE, PARTITION]).freeze
+ end
+ 
+ module LockState
+   ACQUIRED = 1
+   WAITING = 2
+   ABORT = 3
+   NOT_ACQUIRED = 4
+   VALUE_MAP = {1 => "ACQUIRED", 2 => "WAITING", 3 => "ABORT", 4 => 
"NOT_ACQUIRED"}
+   VALID_VALUES = Set.new([ACQUIRED, WAITING, ABORT, NOT_ACQUIRED]).freeze
+ end
+ 
+ module LockType
+   SHARED_READ = 1
+   SHARED_WRITE = 2
+   EXCLUSIVE = 3
+   VALUE_MAP = {1 => "SHARED_READ", 2 => "SHARED_WRITE", 3 => "EXCLUSIVE"}
+   VALID_VALUES = Set.new([SHARED_READ, SHARED_WRITE, EXCLUSIVE]).freeze
+ end
+ 
+ module CompactionType
+   MINOR = 1
+   MAJOR = 2
+   VALUE_MAP = {1 => "MINOR", 2 => "MAJOR"}
+   VALID_VALUES = Set.new([MINOR, MAJOR]).freeze
+ end
+ 
+ module GrantRevokeType
+   GRANT = 1
+   REVOKE = 2
+   VALUE_MAP = {1 => "GRANT", 2 => "REVOKE"}
+   VALID_VALUES = Set.new([GRANT, REVOKE]).freeze
+ end
+ 
+ module DataOperationType
+   SELECT = 1
+   INSERT = 2
+   UPDATE = 3
+   DELETE = 4
+   UNSET = 5
+   NO_TXN = 6
+   VALUE_MAP = {1 => "SELECT", 2 => "INSERT", 3 => "UPDATE", 4 => "DELETE", 5 
=> "UNSET", 6 => "NO_TXN"}
+   VALID_VALUES = Set.new([SELECT, INSERT, UPDATE, DELETE, UNSET, 
NO_TXN]).freeze
+ end
+ 
+ module EventRequestType
+   INSERT = 1
+   UPDATE = 2
+   DELETE = 3
+   VALUE_MAP = {1 => "INSERT", 2 => "UPDATE", 3 => "DELETE"}
+   VALID_VALUES = Set.new([INSERT, UPDATE, DELETE]).freeze
+ end
+ 
+ module SerdeType
+   HIVE = 1
+   SCHEMA_REGISTRY = 2
+   VALUE_MAP = {1 => "HIVE", 2 => "SCHEMA_REGISTRY"}
+   VALID_VALUES = Set.new([HIVE, SCHEMA_REGISTRY]).freeze
+ end
+ 
+ module SchemaType
+   HIVE = 1
+   AVRO = 2
+   VALUE_MAP = {1 => "HIVE", 2 => "AVRO"}
+   VALID_VALUES = Set.new([HIVE, AVRO]).freeze
+ end
+ 
+ module SchemaCompatibility
+   NONE = 1
+   BACKWARD = 2
+   FORWARD = 3
+   BOTH = 4
+   VALUE_MAP = {1 => "NONE", 2 => "BACKWARD", 3 => "FORWARD", 4 => "BOTH"}
+   VALID_VALUES = Set.new([NONE, BACKWARD, FORWARD, BOTH]).freeze
+ end
+ 
+ module SchemaValidation
+   LATEST = 1
+   ALL = 2
+   VALUE_MAP = {1 => "LATEST", 2 => "ALL"}
+   VALID_VALUES = Set.new([LATEST, ALL]).freeze
+ end
+ 
+ module SchemaVersionState
+   INITIATED = 1
+   START_REVIEW = 2
+   CHANGES_REQUIRED = 3
+   REVIEWED = 4
+   ENABLED = 5
+   DISABLED = 6
+   ARCHIVED = 7
+   DELETED = 8
+   VALUE_MAP = {1 => "INITIATED", 2 => "START_REVIEW", 3 => 
"CHANGES_REQUIRED", 4 => "REVIEWED", 5 => "ENABLED", 6 => "DISABLED", 7 => 
"ARCHIVED", 8 => "DELETED"}
+   VALID_VALUES = Set.new([INITIATED, START_REVIEW, CHANGES_REQUIRED, 
REVIEWED, ENABLED, DISABLED, ARCHIVED, DELETED]).freeze
+ end
+ 
+ module FunctionType
+   JAVA = 1
+   VALUE_MAP = {1 => "JAVA"}
+   VALID_VALUES = Set.new([JAVA]).freeze
+ end
+ 
+ module ResourceType
+   JAR = 1
+   FILE = 2
+   ARCHIVE = 3
+   VALUE_MAP = {1 => "JAR", 2 => "FILE", 3 => "ARCHIVE"}
+   VALID_VALUES = Set.new([JAR, FILE, ARCHIVE]).freeze
+ end
+ 
+ module FileMetadataExprType
+   ORC_SARG = 1
+   VALUE_MAP = {1 => "ORC_SARG"}
+   VALID_VALUES = Set.new([ORC_SARG]).freeze
+ end
+ 
+ module ClientCapability
+   TEST_CAPABILITY = 1
+   INSERT_ONLY_TABLES = 2
+   VALUE_MAP = {1 => "TEST_CAPABILITY", 2 => "INSERT_ONLY_TABLES"}
+   VALID_VALUES = Set.new([TEST_CAPABILITY, INSERT_ONLY_TABLES]).freeze
+ end
+ 
+ module WMResourcePlanStatus
+   ACTIVE = 1
+   ENABLED = 2
+   DISABLED = 3
+   VALUE_MAP = {1 => "ACTIVE", 2 => "ENABLED", 3 => "DISABLED"}
+   VALID_VALUES = Set.new([ACTIVE, ENABLED, DISABLED]).freeze
+ end
+ 
+ module WMPoolSchedulingPolicy
+   FAIR = 1
+   FIFO = 2
+   VALUE_MAP = {1 => "FAIR", 2 => "FIFO"}
+   VALID_VALUES = Set.new([FAIR, FIFO]).freeze
+ end
+ 
+ class Version
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   VERSION = 1
+   COMMENTS = 2
+ 
+   FIELDS = {
+     VERSION => {:type => ::Thrift::Types::STRING, :name => 'version'},
+     COMMENTS => {:type => ::Thrift::Types::STRING, :name => 'comments'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class FieldSchema
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   TYPE = 2
+   COMMENT = 3
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     TYPE => {:type => ::Thrift::Types::STRING, :name => 'type'},
+     COMMENT => {:type => ::Thrift::Types::STRING, :name => 'comment'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLPrimaryKey
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   TABLE_DB = 1
+   TABLE_NAME = 2
+   COLUMN_NAME = 3
+   KEY_SEQ = 4
+   PK_NAME = 5
+   ENABLE_CSTR = 6
+   VALIDATE_CSTR = 7
+   RELY_CSTR = 8
+   CATNAME = 9
+ 
+   FIELDS = {
+     TABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'table_db'},
+     TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
+     COLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 'column_name'},
+     KEY_SEQ => {:type => ::Thrift::Types::I32, :name => 'key_seq'},
+     PK_NAME => {:type => ::Thrift::Types::STRING, :name => 'pk_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLForeignKey
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PKTABLE_DB = 1
+   PKTABLE_NAME = 2
+   PKCOLUMN_NAME = 3
+   FKTABLE_DB = 4
+   FKTABLE_NAME = 5
+   FKCOLUMN_NAME = 6
+   KEY_SEQ = 7
+   UPDATE_RULE = 8
+   DELETE_RULE = 9
+   FK_NAME = 10
+   PK_NAME = 11
+   ENABLE_CSTR = 12
+   VALIDATE_CSTR = 13
+   RELY_CSTR = 14
+   CATNAME = 15
+ 
+   FIELDS = {
+     PKTABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'pktable_db'},
+     PKTABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 
'pktable_name'},
+     PKCOLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 
'pkcolumn_name'},
+     FKTABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'fktable_db'},
+     FKTABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 
'fktable_name'},
+     FKCOLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 
'fkcolumn_name'},
+     KEY_SEQ => {:type => ::Thrift::Types::I32, :name => 'key_seq'},
+     UPDATE_RULE => {:type => ::Thrift::Types::I32, :name => 'update_rule'},
+     DELETE_RULE => {:type => ::Thrift::Types::I32, :name => 'delete_rule'},
+     FK_NAME => {:type => ::Thrift::Types::STRING, :name => 'fk_name'},
+     PK_NAME => {:type => ::Thrift::Types::STRING, :name => 'pk_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLUniqueConstraint
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   TABLE_DB = 2
+   TABLE_NAME = 3
+   COLUMN_NAME = 4
+   KEY_SEQ = 5
+   UK_NAME = 6
+   ENABLE_CSTR = 7
+   VALIDATE_CSTR = 8
+   RELY_CSTR = 9
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     TABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'table_db'},
+     TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
+     COLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 'column_name'},
+     KEY_SEQ => {:type => ::Thrift::Types::I32, :name => 'key_seq'},
+     UK_NAME => {:type => ::Thrift::Types::STRING, :name => 'uk_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLNotNullConstraint
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   TABLE_DB = 2
+   TABLE_NAME = 3
+   COLUMN_NAME = 4
+   NN_NAME = 5
+   ENABLE_CSTR = 6
+   VALIDATE_CSTR = 7
+   RELY_CSTR = 8
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     TABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'table_db'},
+     TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
+     COLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 'column_name'},
+     NN_NAME => {:type => ::Thrift::Types::STRING, :name => 'nn_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLDefaultConstraint
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   TABLE_DB = 2
+   TABLE_NAME = 3
+   COLUMN_NAME = 4
+   DEFAULT_VALUE = 5
+   DC_NAME = 6
+   ENABLE_CSTR = 7
+   VALIDATE_CSTR = 8
+   RELY_CSTR = 9
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     TABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'table_db'},
+     TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
+     COLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 'column_name'},
+     DEFAULT_VALUE => {:type => ::Thrift::Types::STRING, :name => 
'default_value'},
+     DC_NAME => {:type => ::Thrift::Types::STRING, :name => 'dc_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SQLCheckConstraint
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   TABLE_DB = 2
+   TABLE_NAME = 3
+   COLUMN_NAME = 4
+   CHECK_EXPRESSION = 5
+   DC_NAME = 6
+   ENABLE_CSTR = 7
+   VALIDATE_CSTR = 8
+   RELY_CSTR = 9
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     TABLE_DB => {:type => ::Thrift::Types::STRING, :name => 'table_db'},
+     TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
+     COLUMN_NAME => {:type => ::Thrift::Types::STRING, :name => 'column_name'},
+     CHECK_EXPRESSION => {:type => ::Thrift::Types::STRING, :name => 
'check_expression'},
+     DC_NAME => {:type => ::Thrift::Types::STRING, :name => 'dc_name'},
+     ENABLE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'enable_cstr'},
+     VALIDATE_CSTR => {:type => ::Thrift::Types::BOOL, :name => 
'validate_cstr'},
+     RELY_CSTR => {:type => ::Thrift::Types::BOOL, :name => 'rely_cstr'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Type
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   TYPE1 = 2
+   TYPE2 = 3
+   FIELDS = 4
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     TYPE1 => {:type => ::Thrift::Types::STRING, :name => 'type1', :optional 
=> true},
+     TYPE2 => {:type => ::Thrift::Types::STRING, :name => 'type2', :optional 
=> true},
+     FIELDS => {:type => ::Thrift::Types::LIST, :name => 'fields', :element => 
{:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class HiveObjectRef
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   OBJECTTYPE = 1
+   DBNAME = 2
+   OBJECTNAME = 3
+   PARTVALUES = 4
+   COLUMNNAME = 5
+   CATNAME = 6
+ 
+   FIELDS = {
+     OBJECTTYPE => {:type => ::Thrift::Types::I32, :name => 'objectType', 
:enum_class => ::HiveObjectType},
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     OBJECTNAME => {:type => ::Thrift::Types::STRING, :name => 'objectName'},
+     PARTVALUES => {:type => ::Thrift::Types::LIST, :name => 'partValues', 
:element => {:type => ::Thrift::Types::STRING}},
+     COLUMNNAME => {:type => ::Thrift::Types::STRING, :name => 'columnName'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @objectType.nil? || 
::HiveObjectType::VALID_VALUES.include?(@objectType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field objectType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PrivilegeGrantInfo
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRIVILEGE = 1
+   CREATETIME = 2
+   GRANTOR = 3
+   GRANTORTYPE = 4
+   GRANTOPTION = 5
+ 
+   FIELDS = {
+     PRIVILEGE => {:type => ::Thrift::Types::STRING, :name => 'privilege'},
+     CREATETIME => {:type => ::Thrift::Types::I32, :name => 'createTime'},
+     GRANTOR => {:type => ::Thrift::Types::STRING, :name => 'grantor'},
+     GRANTORTYPE => {:type => ::Thrift::Types::I32, :name => 'grantorType', 
:enum_class => ::PrincipalType},
+     GRANTOPTION => {:type => ::Thrift::Types::BOOL, :name => 'grantOption'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @grantorType.nil? || 
::PrincipalType::VALID_VALUES.include?(@grantorType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field grantorType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class HiveObjectPrivilege
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   HIVEOBJECT = 1
+   PRINCIPALNAME = 2
+   PRINCIPALTYPE = 3
+   GRANTINFO = 4
+   AUTHORIZER = 5
+ 
+   FIELDS = {
+     HIVEOBJECT => {:type => ::Thrift::Types::STRUCT, :name => 'hiveObject', 
:class => ::HiveObjectRef},
+     PRINCIPALNAME => {:type => ::Thrift::Types::STRING, :name => 
'principalName'},
+     PRINCIPALTYPE => {:type => ::Thrift::Types::I32, :name => 
'principalType', :enum_class => ::PrincipalType},
+     GRANTINFO => {:type => ::Thrift::Types::STRUCT, :name => 'grantInfo', 
:class => ::PrivilegeGrantInfo},
+     AUTHORIZER => {:type => ::Thrift::Types::STRING, :name => 'authorizer'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @principalType.nil? || 
::PrincipalType::VALID_VALUES.include?(@principalType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field principalType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PrivilegeBag
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRIVILEGES = 1
+ 
+   FIELDS = {
+     PRIVILEGES => {:type => ::Thrift::Types::LIST, :name => 'privileges', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::HiveObjectPrivilege}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PrincipalPrivilegeSet
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   USERPRIVILEGES = 1
+   GROUPPRIVILEGES = 2
+   ROLEPRIVILEGES = 3
+ 
+   FIELDS = {
+     USERPRIVILEGES => {:type => ::Thrift::Types::MAP, :name => 
'userPrivileges', :key => {:type => ::Thrift::Types::STRING}, :value => {:type 
=> ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::PrivilegeGrantInfo}}},
+     GROUPPRIVILEGES => {:type => ::Thrift::Types::MAP, :name => 
'groupPrivileges', :key => {:type => ::Thrift::Types::STRING}, :value => {:type 
=> ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::PrivilegeGrantInfo}}},
+     ROLEPRIVILEGES => {:type => ::Thrift::Types::MAP, :name => 
'rolePrivileges', :key => {:type => ::Thrift::Types::STRING}, :value => {:type 
=> ::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::PrivilegeGrantInfo}}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GrantRevokePrivilegeRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   REQUESTTYPE = 1
+   PRIVILEGES = 2
+   REVOKEGRANTOPTION = 3
+ 
+   FIELDS = {
+     REQUESTTYPE => {:type => ::Thrift::Types::I32, :name => 'requestType', 
:enum_class => ::GrantRevokeType},
+     PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', 
:class => ::PrivilegeBag},
+     REVOKEGRANTOPTION => {:type => ::Thrift::Types::BOOL, :name => 
'revokeGrantOption', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @requestType.nil? || 
::GrantRevokeType::VALID_VALUES.include?(@requestType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field requestType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GrantRevokePrivilegeResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   SUCCESS = 1
+ 
+   FIELDS = {
+     SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success', :optional 
=> true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Role
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   ROLENAME = 1
+   CREATETIME = 2
+   OWNERNAME = 3
+ 
+   FIELDS = {
+     ROLENAME => {:type => ::Thrift::Types::STRING, :name => 'roleName'},
+     CREATETIME => {:type => ::Thrift::Types::I32, :name => 'createTime'},
+     OWNERNAME => {:type => ::Thrift::Types::STRING, :name => 'ownerName'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class RolePrincipalGrant
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   ROLENAME = 1
+   PRINCIPALNAME = 2
+   PRINCIPALTYPE = 3
+   GRANTOPTION = 4
+   GRANTTIME = 5
+   GRANTORNAME = 6
+   GRANTORPRINCIPALTYPE = 7
+ 
+   FIELDS = {
+     ROLENAME => {:type => ::Thrift::Types::STRING, :name => 'roleName'},
+     PRINCIPALNAME => {:type => ::Thrift::Types::STRING, :name => 
'principalName'},
+     PRINCIPALTYPE => {:type => ::Thrift::Types::I32, :name => 
'principalType', :enum_class => ::PrincipalType},
+     GRANTOPTION => {:type => ::Thrift::Types::BOOL, :name => 'grantOption'},
+     GRANTTIME => {:type => ::Thrift::Types::I32, :name => 'grantTime'},
+     GRANTORNAME => {:type => ::Thrift::Types::STRING, :name => 'grantorName'},
+     GRANTORPRINCIPALTYPE => {:type => ::Thrift::Types::I32, :name => 
'grantorPrincipalType', :enum_class => ::PrincipalType}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @principalType.nil? || 
::PrincipalType::VALID_VALUES.include?(@principalType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field principalType!')
+     end
+     unless @grantorPrincipalType.nil? || 
::PrincipalType::VALID_VALUES.include?(@grantorPrincipalType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field grantorPrincipalType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetRoleGrantsForPrincipalRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRINCIPAL_NAME = 1
+   PRINCIPAL_TYPE = 2
+ 
+   FIELDS = {
+     PRINCIPAL_NAME => {:type => ::Thrift::Types::STRING, :name => 
'principal_name'},
+     PRINCIPAL_TYPE => {:type => ::Thrift::Types::I32, :name => 
'principal_type', :enum_class => ::PrincipalType}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field principal_name is unset!') unless @principal_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field principal_type is unset!') unless @principal_type
+     unless @principal_type.nil? || 
::PrincipalType::VALID_VALUES.include?(@principal_type)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field principal_type!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetRoleGrantsForPrincipalResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRINCIPALGRANTS = 1
+ 
+   FIELDS = {
+     PRINCIPALGRANTS => {:type => ::Thrift::Types::LIST, :name => 
'principalGrants', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::RolePrincipalGrant}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field principalGrants is unset!') unless @principalGrants
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetPrincipalsInRoleRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   ROLENAME = 1
+ 
+   FIELDS = {
+     ROLENAME => {:type => ::Thrift::Types::STRING, :name => 'roleName'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field roleName is unset!') unless @roleName
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetPrincipalsInRoleResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRINCIPALGRANTS = 1
+ 
+   FIELDS = {
+     PRINCIPALGRANTS => {:type => ::Thrift::Types::LIST, :name => 
'principalGrants', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::RolePrincipalGrant}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field principalGrants is unset!') unless @principalGrants
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GrantRevokeRoleRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   REQUESTTYPE = 1
+   ROLENAME = 2
+   PRINCIPALNAME = 3
+   PRINCIPALTYPE = 4
+   GRANTOR = 5
+   GRANTORTYPE = 6
+   GRANTOPTION = 7
+ 
+   FIELDS = {
+     REQUESTTYPE => {:type => ::Thrift::Types::I32, :name => 'requestType', 
:enum_class => ::GrantRevokeType},
+     ROLENAME => {:type => ::Thrift::Types::STRING, :name => 'roleName'},
+     PRINCIPALNAME => {:type => ::Thrift::Types::STRING, :name => 
'principalName'},
+     PRINCIPALTYPE => {:type => ::Thrift::Types::I32, :name => 
'principalType', :enum_class => ::PrincipalType},
+     GRANTOR => {:type => ::Thrift::Types::STRING, :name => 'grantor', 
:optional => true},
+     GRANTORTYPE => {:type => ::Thrift::Types::I32, :name => 'grantorType', 
:optional => true, :enum_class => ::PrincipalType},
+     GRANTOPTION => {:type => ::Thrift::Types::BOOL, :name => 'grantOption', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @requestType.nil? || 
::GrantRevokeType::VALID_VALUES.include?(@requestType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field requestType!')
+     end
+     unless @principalType.nil? || 
::PrincipalType::VALID_VALUES.include?(@principalType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field principalType!')
+     end
+     unless @grantorType.nil? || 
::PrincipalType::VALID_VALUES.include?(@grantorType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field grantorType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GrantRevokeRoleResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   SUCCESS = 1
+ 
+   FIELDS = {
+     SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success', :optional 
=> true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Catalog
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   DESCRIPTION = 2
+   LOCATIONURI = 3
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     DESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'description', 
:optional => true},
+     LOCATIONURI => {:type => ::Thrift::Types::STRING, :name => 'locationUri'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class CreateCatalogRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATALOG = 1
+ 
+   FIELDS = {
+     CATALOG => {:type => ::Thrift::Types::STRUCT, :name => 'catalog', :class 
=> ::Catalog}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AlterCatalogRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   NEWCAT = 2
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     NEWCAT => {:type => ::Thrift::Types::STRUCT, :name => 'newCat', :class => 
::Catalog}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetCatalogRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetCatalogResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATALOG = 1
+ 
+   FIELDS = {
+     CATALOG => {:type => ::Thrift::Types::STRUCT, :name => 'catalog', :class 
=> ::Catalog}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class GetCatalogsResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAMES = 1
+ 
+   FIELDS = {
+     NAMES => {:type => ::Thrift::Types::LIST, :name => 'names', :element => 
{:type => ::Thrift::Types::STRING}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DropCatalogRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Database
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   DESCRIPTION = 2
+   LOCATIONURI = 3
+   PARAMETERS = 4
+   PRIVILEGES = 5
+   OWNERNAME = 6
+   OWNERTYPE = 7
+   CATALOGNAME = 8
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     DESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'description'},
+     LOCATIONURI => {:type => ::Thrift::Types::STRING, :name => 'locationUri'},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', 
:class => ::PrincipalPrivilegeSet, :optional => true},
+     OWNERNAME => {:type => ::Thrift::Types::STRING, :name => 'ownerName', 
:optional => true},
+     OWNERTYPE => {:type => ::Thrift::Types::I32, :name => 'ownerType', 
:optional => true, :enum_class => ::PrincipalType},
+     CATALOGNAME => {:type => ::Thrift::Types::STRING, :name => 'catalogName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @ownerType.nil? || 
::PrincipalType::VALID_VALUES.include?(@ownerType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field ownerType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SerDeInfo
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NAME = 1
+   SERIALIZATIONLIB = 2
+   PARAMETERS = 3
+   DESCRIPTION = 4
+   SERIALIZERCLASS = 5
+   DESERIALIZERCLASS = 6
+   SERDETYPE = 7
+ 
+   FIELDS = {
+     NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
+     SERIALIZATIONLIB => {:type => ::Thrift::Types::STRING, :name => 
'serializationLib'},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     DESCRIPTION => {:type => ::Thrift::Types::STRING, :name => 'description', 
:optional => true},
+     SERIALIZERCLASS => {:type => ::Thrift::Types::STRING, :name => 
'serializerClass', :optional => true},
+     DESERIALIZERCLASS => {:type => ::Thrift::Types::STRING, :name => 
'deserializerClass', :optional => true},
+     SERDETYPE => {:type => ::Thrift::Types::I32, :name => 'serdeType', 
:optional => true, :enum_class => ::SerdeType}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @serdeType.nil? || ::SerdeType::VALID_VALUES.include?(@serdeType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field serdeType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Order
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   COL = 1
+   ORDER = 2
+ 
+   FIELDS = {
+     COL => {:type => ::Thrift::Types::STRING, :name => 'col'},
+     ORDER => {:type => ::Thrift::Types::I32, :name => 'order'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SkewedInfo
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   SKEWEDCOLNAMES = 1
+   SKEWEDCOLVALUES = 2
+   SKEWEDCOLVALUELOCATIONMAPS = 3
+ 
+   FIELDS = {
+     SKEWEDCOLNAMES => {:type => ::Thrift::Types::LIST, :name => 
'skewedColNames', :element => {:type => ::Thrift::Types::STRING}},
+     SKEWEDCOLVALUES => {:type => ::Thrift::Types::LIST, :name => 
'skewedColValues', :element => {:type => ::Thrift::Types::LIST, :element => 
{:type => ::Thrift::Types::STRING}}},
+     SKEWEDCOLVALUELOCATIONMAPS => {:type => ::Thrift::Types::MAP, :name => 
'skewedColValueLocationMaps', :key => {:type => ::Thrift::Types::LIST, :element 
=> {:type => ::Thrift::Types::STRING}}, :value => {:type => 
::Thrift::Types::STRING}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class StorageDescriptor
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   COLS = 1
+   LOCATION = 2
+   INPUTFORMAT = 3
+   OUTPUTFORMAT = 4
+   COMPRESSED = 5
+   NUMBUCKETS = 6
+   SERDEINFO = 7
+   BUCKETCOLS = 8
+   SORTCOLS = 9
+   PARAMETERS = 10
+   SKEWEDINFO = 11
+   STOREDASSUBDIRECTORIES = 12
+ 
+   FIELDS = {
+     COLS => {:type => ::Thrift::Types::LIST, :name => 'cols', :element => 
{:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
+     LOCATION => {:type => ::Thrift::Types::STRING, :name => 'location'},
+     INPUTFORMAT => {:type => ::Thrift::Types::STRING, :name => 'inputFormat'},
+     OUTPUTFORMAT => {:type => ::Thrift::Types::STRING, :name => 
'outputFormat'},
+     COMPRESSED => {:type => ::Thrift::Types::BOOL, :name => 'compressed'},
+     NUMBUCKETS => {:type => ::Thrift::Types::I32, :name => 'numBuckets'},
+     SERDEINFO => {:type => ::Thrift::Types::STRUCT, :name => 'serdeInfo', 
:class => ::SerDeInfo},
+     BUCKETCOLS => {:type => ::Thrift::Types::LIST, :name => 'bucketCols', 
:element => {:type => ::Thrift::Types::STRING}},
+     SORTCOLS => {:type => ::Thrift::Types::LIST, :name => 'sortCols', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Order}},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     SKEWEDINFO => {:type => ::Thrift::Types::STRUCT, :name => 'skewedInfo', 
:class => ::SkewedInfo, :optional => true},
+     STOREDASSUBDIRECTORIES => {:type => ::Thrift::Types::BOOL, :name => 
'storedAsSubDirectories', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Table
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   TABLENAME = 1
+   DBNAME = 2
+   OWNER = 3
+   CREATETIME = 4
+   LASTACCESSTIME = 5
+   RETENTION = 6
+   SD = 7
+   PARTITIONKEYS = 8
+   PARAMETERS = 9
+   VIEWORIGINALTEXT = 10
+   VIEWEXPANDEDTEXT = 11
+   TABLETYPE = 12
+   PRIVILEGES = 13
+   TEMPORARY = 14
+   REWRITEENABLED = 15
+   CREATIONMETADATA = 16
+   CATNAME = 17
+   OWNERTYPE = 18
++  WRITEID = 19
++  ISSTATSCOMPLIANT = 20
+ 
+   FIELDS = {
+     TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     OWNER => {:type => ::Thrift::Types::STRING, :name => 'owner'},
+     CREATETIME => {:type => ::Thrift::Types::I32, :name => 'createTime'},
+     LASTACCESSTIME => {:type => ::Thrift::Types::I32, :name => 
'lastAccessTime'},
+     RETENTION => {:type => ::Thrift::Types::I32, :name => 'retention'},
+     SD => {:type => ::Thrift::Types::STRUCT, :name => 'sd', :class => 
::StorageDescriptor},
+     PARTITIONKEYS => {:type => ::Thrift::Types::LIST, :name => 
'partitionKeys', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::FieldSchema}},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     VIEWORIGINALTEXT => {:type => ::Thrift::Types::STRING, :name => 
'viewOriginalText'},
+     VIEWEXPANDEDTEXT => {:type => ::Thrift::Types::STRING, :name => 
'viewExpandedText'},
+     TABLETYPE => {:type => ::Thrift::Types::STRING, :name => 'tableType'},
+     PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', 
:class => ::PrincipalPrivilegeSet, :optional => true},
+     TEMPORARY => {:type => ::Thrift::Types::BOOL, :name => 'temporary', 
:default => false, :optional => true},
+     REWRITEENABLED => {:type => ::Thrift::Types::BOOL, :name => 
'rewriteEnabled', :optional => true},
+     CREATIONMETADATA => {:type => ::Thrift::Types::STRUCT, :name => 
'creationMetadata', :class => ::CreationMetadata, :optional => true},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
 -    OWNERTYPE => {:type => ::Thrift::Types::I32, :name => 'ownerType', 
:default =>     1, :optional => true, :enum_class => ::PrincipalType}
++    OWNERTYPE => {:type => ::Thrift::Types::I32, :name => 'ownerType', 
:default =>     1, :optional => true, :enum_class => ::PrincipalType},
++    WRITEID => {:type => ::Thrift::Types::I64, :name => 'writeId', :default 
=> -1, :optional => true},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @ownerType.nil? || 
::PrincipalType::VALID_VALUES.include?(@ownerType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field ownerType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Partition
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   VALUES = 1
+   DBNAME = 2
+   TABLENAME = 3
+   CREATETIME = 4
+   LASTACCESSTIME = 5
+   SD = 6
+   PARAMETERS = 7
+   PRIVILEGES = 8
+   CATNAME = 9
++  WRITEID = 10
++  ISSTATSCOMPLIANT = 11
+ 
+   FIELDS = {
+     VALUES => {:type => ::Thrift::Types::LIST, :name => 'values', :element => 
{:type => ::Thrift::Types::STRING}},
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+     CREATETIME => {:type => ::Thrift::Types::I32, :name => 'createTime'},
+     LASTACCESSTIME => {:type => ::Thrift::Types::I32, :name => 
'lastAccessTime'},
+     SD => {:type => ::Thrift::Types::STRUCT, :name => 'sd', :class => 
::StorageDescriptor},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', 
:class => ::PrincipalPrivilegeSet, :optional => true},
 -    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
++    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
++    WRITEID => {:type => ::Thrift::Types::I64, :name => 'writeId', :default 
=> -1, :optional => true},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionWithoutSD
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   VALUES = 1
+   CREATETIME = 2
+   LASTACCESSTIME = 3
+   RELATIVEPATH = 4
+   PARAMETERS = 5
+   PRIVILEGES = 6
+ 
+   FIELDS = {
+     VALUES => {:type => ::Thrift::Types::LIST, :name => 'values', :element => 
{:type => ::Thrift::Types::STRING}},
+     CREATETIME => {:type => ::Thrift::Types::I32, :name => 'createTime'},
+     LASTACCESSTIME => {:type => ::Thrift::Types::I32, :name => 
'lastAccessTime'},
+     RELATIVEPATH => {:type => ::Thrift::Types::STRING, :name => 
'relativePath'},
+     PARAMETERS => {:type => ::Thrift::Types::MAP, :name => 'parameters', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}},
+     PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', 
:class => ::PrincipalPrivilegeSet, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionSpecWithSharedSD
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONS = 1
+   SD = 2
+ 
+   FIELDS = {
+     PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::PartitionWithoutSD}},
+     SD => {:type => ::Thrift::Types::STRUCT, :name => 'sd', :class => 
::StorageDescriptor}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionListComposingSpec
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONS = 1
+ 
+   FIELDS = {
+     PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionSpec
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TABLENAME = 2
+   ROOTPATH = 3
+   SHAREDSDPARTITIONSPEC = 4
+   PARTITIONLIST = 5
+   CATNAME = 6
++  WRITEID = 7
++  ISSTATSCOMPLIANT = 8
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+     ROOTPATH => {:type => ::Thrift::Types::STRING, :name => 'rootPath'},
+     SHAREDSDPARTITIONSPEC => {:type => ::Thrift::Types::STRUCT, :name => 
'sharedSDPartitionSpec', :class => ::PartitionSpecWithSharedSD, :optional => 
true},
+     PARTITIONLIST => {:type => ::Thrift::Types::STRUCT, :name => 
'partitionList', :class => ::PartitionListComposingSpec, :optional => true},
 -    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
++    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
++    WRITEID => {:type => ::Thrift::Types::I64, :name => 'writeId', :default 
=> -1, :optional => true},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class BooleanColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NUMTRUES = 1
+   NUMFALSES = 2
+   NUMNULLS = 3
+   BITVECTORS = 4
+ 
+   FIELDS = {
+     NUMTRUES => {:type => ::Thrift::Types::I64, :name => 'numTrues'},
+     NUMFALSES => {:type => ::Thrift::Types::I64, :name => 'numFalses'},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numTrues is unset!') unless @numTrues
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numFalses is unset!') unless @numFalses
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DoubleColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   LOWVALUE = 1
+   HIGHVALUE = 2
+   NUMNULLS = 3
+   NUMDVS = 4
+   BITVECTORS = 5
+ 
+   FIELDS = {
+     LOWVALUE => {:type => ::Thrift::Types::DOUBLE, :name => 'lowValue', 
:optional => true},
+     HIGHVALUE => {:type => ::Thrift::Types::DOUBLE, :name => 'highValue', 
:optional => true},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     NUMDVS => {:type => ::Thrift::Types::I64, :name => 'numDVs'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numDVs is unset!') unless @numDVs
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class LongColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   LOWVALUE = 1
+   HIGHVALUE = 2
+   NUMNULLS = 3
+   NUMDVS = 4
+   BITVECTORS = 5
+ 
+   FIELDS = {
+     LOWVALUE => {:type => ::Thrift::Types::I64, :name => 'lowValue', 
:optional => true},
+     HIGHVALUE => {:type => ::Thrift::Types::I64, :name => 'highValue', 
:optional => true},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     NUMDVS => {:type => ::Thrift::Types::I64, :name => 'numDVs'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numDVs is unset!') unless @numDVs
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class StringColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   MAXCOLLEN = 1
+   AVGCOLLEN = 2
+   NUMNULLS = 3
+   NUMDVS = 4
+   BITVECTORS = 5
+ 
+   FIELDS = {
+     MAXCOLLEN => {:type => ::Thrift::Types::I64, :name => 'maxColLen'},
+     AVGCOLLEN => {:type => ::Thrift::Types::DOUBLE, :name => 'avgColLen'},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     NUMDVS => {:type => ::Thrift::Types::I64, :name => 'numDVs'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field maxColLen is unset!') unless @maxColLen
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field avgColLen is unset!') unless @avgColLen
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numDVs is unset!') unless @numDVs
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class BinaryColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   MAXCOLLEN = 1
+   AVGCOLLEN = 2
+   NUMNULLS = 3
+   BITVECTORS = 4
+ 
+   FIELDS = {
+     MAXCOLLEN => {:type => ::Thrift::Types::I64, :name => 'maxColLen'},
+     AVGCOLLEN => {:type => ::Thrift::Types::DOUBLE, :name => 'avgColLen'},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field maxColLen is unset!') unless @maxColLen
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field avgColLen is unset!') unless @avgColLen
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Decimal
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   SCALE = 3
+   UNSCALED = 1
+ 
+   FIELDS = {
+     SCALE => {:type => ::Thrift::Types::I16, :name => 'scale'},
+     UNSCALED => {:type => ::Thrift::Types::STRING, :name => 'unscaled', 
:binary => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field scale is unset!') unless @scale
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field unscaled is unset!') unless @unscaled
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DecimalColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   LOWVALUE = 1
+   HIGHVALUE = 2
+   NUMNULLS = 3
+   NUMDVS = 4
+   BITVECTORS = 5
+ 
+   FIELDS = {
+     LOWVALUE => {:type => ::Thrift::Types::STRUCT, :name => 'lowValue', 
:class => ::Decimal, :optional => true},
+     HIGHVALUE => {:type => ::Thrift::Types::STRUCT, :name => 'highValue', 
:class => ::Decimal, :optional => true},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     NUMDVS => {:type => ::Thrift::Types::I64, :name => 'numDVs'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numDVs is unset!') unless @numDVs
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Date
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DAYSSINCEEPOCH = 1
+ 
+   FIELDS = {
+     DAYSSINCEEPOCH => {:type => ::Thrift::Types::I64, :name => 
'daysSinceEpoch'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field daysSinceEpoch is unset!') unless @daysSinceEpoch
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DateColumnStatsData
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   LOWVALUE = 1
+   HIGHVALUE = 2
+   NUMNULLS = 3
+   NUMDVS = 4
+   BITVECTORS = 5
+ 
+   FIELDS = {
+     LOWVALUE => {:type => ::Thrift::Types::STRUCT, :name => 'lowValue', 
:class => ::Date, :optional => true},
+     HIGHVALUE => {:type => ::Thrift::Types::STRUCT, :name => 'highValue', 
:class => ::Date, :optional => true},
+     NUMNULLS => {:type => ::Thrift::Types::I64, :name => 'numNulls'},
+     NUMDVS => {:type => ::Thrift::Types::I64, :name => 'numDVs'},
+     BITVECTORS => {:type => ::Thrift::Types::STRING, :name => 'bitVectors', 
:binary => true, :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numNulls is unset!') unless @numNulls
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field numDVs is unset!') unless @numDVs
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ColumnStatisticsData < ::Thrift::Union
+   include ::Thrift::Struct_Union
+   class << self
+     def booleanStats(val)
+       ColumnStatisticsData.new(:booleanStats, val)
+     end
+ 
+     def longStats(val)
+       ColumnStatisticsData.new(:longStats, val)
+     end
+ 
+     def doubleStats(val)
+       ColumnStatisticsData.new(:doubleStats, val)
+     end
+ 
+     def stringStats(val)
+       ColumnStatisticsData.new(:stringStats, val)
+     end
+ 
+     def binaryStats(val)
+       ColumnStatisticsData.new(:binaryStats, val)
+     end
+ 
+     def decimalStats(val)
+       ColumnStatisticsData.new(:decimalStats, val)
+     end
+ 
+     def dateStats(val)
+       ColumnStatisticsData.new(:dateStats, val)
+     end
+   end
+ 
+   BOOLEANSTATS = 1
+   LONGSTATS = 2
+   DOUBLESTATS = 3
+   STRINGSTATS = 4
+   BINARYSTATS = 5
+   DECIMALSTATS = 6
+   DATESTATS = 7
+ 
+   FIELDS = {
+     BOOLEANSTATS => {:type => ::Thrift::Types::STRUCT, :name => 
'booleanStats', :class => ::BooleanColumnStatsData},
+     LONGSTATS => {:type => ::Thrift::Types::STRUCT, :name => 'longStats', 
:class => ::LongColumnStatsData},
+     DOUBLESTATS => {:type => ::Thrift::Types::STRUCT, :name => 'doubleStats', 
:class => ::DoubleColumnStatsData},
+     STRINGSTATS => {:type => ::Thrift::Types::STRUCT, :name => 'stringStats', 
:class => ::StringColumnStatsData},
+     BINARYSTATS => {:type => ::Thrift::Types::STRUCT, :name => 'binaryStats', 
:class => ::BinaryColumnStatsData},
+     DECIMALSTATS => {:type => ::Thrift::Types::STRUCT, :name => 
'decimalStats', :class => ::DecimalColumnStatsData},
+     DATESTATS => {:type => ::Thrift::Types::STRUCT, :name => 'dateStats', 
:class => ::DateColumnStatsData}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise(StandardError, 'Union fields are not set.') if get_set_field.nil? 
|| get_value.nil?
+   end
+ 
+   ::Thrift::Union.generate_accessors self
+ end
+ 
+ class ColumnStatisticsObj
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   COLNAME = 1
+   COLTYPE = 2
+   STATSDATA = 3
+ 
+   FIELDS = {
+     COLNAME => {:type => ::Thrift::Types::STRING, :name => 'colName'},
+     COLTYPE => {:type => ::Thrift::Types::STRING, :name => 'colType'},
+     STATSDATA => {:type => ::Thrift::Types::STRUCT, :name => 'statsData', 
:class => ::ColumnStatisticsData}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colName is unset!') unless @colName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colType is unset!') unless @colType
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field statsData is unset!') unless @statsData
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ColumnStatisticsDesc
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   ISTBLLEVEL = 1
+   DBNAME = 2
+   TABLENAME = 3
+   PARTNAME = 4
+   LASTANALYZED = 5
+   CATNAME = 6
+ 
+   FIELDS = {
+     ISTBLLEVEL => {:type => ::Thrift::Types::BOOL, :name => 'isTblLevel'},
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tableName'},
+     PARTNAME => {:type => ::Thrift::Types::STRING, :name => 'partName', 
:optional => true},
+     LASTANALYZED => {:type => ::Thrift::Types::I64, :name => 'lastAnalyzed', 
:optional => true},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field isTblLevel is unset!') if @isTblLevel.nil?
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tableName is unset!') unless @tableName
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ColumnStatistics
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   STATSDESC = 1
+   STATSOBJ = 2
++  TXNID = 3
++  VALIDWRITEIDLIST = 4
++  ISSTATSCOMPLIANT = 5
+ 
+   FIELDS = {
+     STATSDESC => {:type => ::Thrift::Types::STRUCT, :name => 'statsDesc', 
:class => ::ColumnStatisticsDesc},
 -    STATSOBJ => {:type => ::Thrift::Types::LIST, :name => 'statsObj', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::ColumnStatisticsObj}}
++    STATSOBJ => {:type => ::Thrift::Types::LIST, :name => 'statsObj', 
:element => {:type => ::Thrift::Types::STRUCT, :class => 
::ColumnStatisticsObj}},
++    TXNID => {:type => ::Thrift::Types::I64, :name => 'txnId', :default => 
-1, :optional => true},
++    VALIDWRITEIDLIST => {:type => ::Thrift::Types::STRING, :name => 
'validWriteIdList', :optional => true},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field statsDesc is unset!') unless @statsDesc
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field statsObj is unset!') unless @statsObj
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AggrStats
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   COLSTATS = 1
+   PARTSFOUND = 2
++  ISSTATSCOMPLIANT = 3
+ 
+   FIELDS = {
+     COLSTATS => {:type => ::Thrift::Types::LIST, :name => 'colStats', 
:element => {:type => ::Thrift::Types::STRUCT, :class => 
::ColumnStatisticsObj}},
 -    PARTSFOUND => {:type => ::Thrift::Types::I64, :name => 'partsFound'}
++    PARTSFOUND => {:type => ::Thrift::Types::I64, :name => 'partsFound'},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colStats is unset!') unless @colStats
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partsFound is unset!') unless @partsFound
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class SetPartitionsStatsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   COLSTATS = 1
+   NEEDMERGE = 2
++  TXNID = 3
++  WRITEID = 4
++  VALIDWRITEIDLIST = 5
+ 
+   FIELDS = {
+     COLSTATS => {:type => ::Thrift::Types::LIST, :name => 'colStats', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::ColumnStatistics}},
 -    NEEDMERGE => {:type => ::Thrift::Types::BOOL, :name => 'needMerge', 
:optional => true}
++    NEEDMERGE => {:type => ::Thrift::Types::BOOL, :name => 'needMerge', 
:optional => true},
++    TXNID => {:type => ::Thrift::Types::I64, :name => 'txnId', :default => 
-1, :optional => true},
++    WRITEID => {:type => ::Thrift::Types::I64, :name => 'writeId', :default 
=> -1, :optional => true},
++    VALIDWRITEIDLIST => {:type => ::Thrift::Types::STRING, :name => 
'validWriteIdList', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colStats is unset!') unless @colStats
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Schema
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   FIELDSCHEMAS = 1
+   PROPERTIES = 2
+ 
+   FIELDS = {
+     FIELDSCHEMAS => {:type => ::Thrift::Types::LIST, :name => 'fieldSchemas', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
+     PROPERTIES => {:type => ::Thrift::Types::MAP, :name => 'properties', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class EnvironmentContext
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PROPERTIES = 1
+ 
+   FIELDS = {
+     PROPERTIES => {:type => ::Thrift::Types::MAP, :name => 'properties', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::STRING}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PrimaryKeysRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DB_NAME = 1
+   TBL_NAME = 2
+   CATNAME = 3
+ 
+   FIELDS = {
+     DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
+     TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field db_name is unset!') unless @db_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tbl_name is unset!') unless @tbl_name
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PrimaryKeysResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRIMARYKEYS = 1
+ 
+   FIELDS = {
+     PRIMARYKEYS => {:type => ::Thrift::Types::LIST, :name => 'primaryKeys', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::SQLPrimaryKey}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field primaryKeys is unset!') unless @primaryKeys
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ForeignKeysRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARENT_DB_NAME = 1
+   PARENT_TBL_NAME = 2
+   FOREIGN_DB_NAME = 3
+   FOREIGN_TBL_NAME = 4
+   CATNAME = 5
+ 
+   FIELDS = {
+     PARENT_DB_NAME => {:type => ::Thrift::Types::STRING, :name => 
'parent_db_name'},
+     PARENT_TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 
'parent_tbl_name'},
+     FOREIGN_DB_NAME => {:type => ::Thrift::Types::STRING, :name => 
'foreign_db_name'},
+     FOREIGN_TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 
'foreign_tbl_name'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ForeignKeysResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   FOREIGNKEYS = 1
+ 
+   FIELDS = {
+     FOREIGNKEYS => {:type => ::Thrift::Types::LIST, :name => 'foreignKeys', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::SQLForeignKey}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field foreignKeys is unset!') unless @foreignKeys
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class UniqueConstraintsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   DB_NAME = 2
+   TBL_NAME = 3
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
+     TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field catName is unset!') unless @catName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field db_name is unset!') unless @db_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tbl_name is unset!') unless @tbl_name
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class UniqueConstraintsResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   UNIQUECONSTRAINTS = 1
+ 
+   FIELDS = {
+     UNIQUECONSTRAINTS => {:type => ::Thrift::Types::LIST, :name => 
'uniqueConstraints', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLUniqueConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field uniqueConstraints is unset!') unless @uniqueConstraints
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class NotNullConstraintsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   DB_NAME = 2
+   TBL_NAME = 3
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
+     TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field catName is unset!') unless @catName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field db_name is unset!') unless @db_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tbl_name is unset!') unless @tbl_name
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class NotNullConstraintsResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NOTNULLCONSTRAINTS = 1
+ 
+   FIELDS = {
+     NOTNULLCONSTRAINTS => {:type => ::Thrift::Types::LIST, :name => 
'notNullConstraints', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLNotNullConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field notNullConstraints is unset!') unless @notNullConstraints
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DefaultConstraintsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   DB_NAME = 2
+   TBL_NAME = 3
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
+     TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field catName is unset!') unless @catName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field db_name is unset!') unless @db_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tbl_name is unset!') unless @tbl_name
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DefaultConstraintsResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DEFAULTCONSTRAINTS = 1
+ 
+   FIELDS = {
+     DEFAULTCONSTRAINTS => {:type => ::Thrift::Types::LIST, :name => 
'defaultConstraints', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLDefaultConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field defaultConstraints is unset!') unless @defaultConstraints
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class CheckConstraintsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CATNAME = 1
+   DB_NAME = 2
+   TBL_NAME = 3
+ 
+   FIELDS = {
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName'},
+     DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
+     TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field catName is unset!') unless @catName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field db_name is unset!') unless @db_name
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tbl_name is unset!') unless @tbl_name
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class CheckConstraintsResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CHECKCONSTRAINTS = 1
+ 
+   FIELDS = {
+     CHECKCONSTRAINTS => {:type => ::Thrift::Types::LIST, :name => 
'checkConstraints', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLCheckConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field checkConstraints is unset!') unless @checkConstraints
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DropConstraintRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TABLENAME = 2
+   CONSTRAINTNAME = 3
+   CATNAME = 4
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
+     TABLENAME => {:type => ::Thrift::Types::STRING, :name => 'tablename'},
+     CONSTRAINTNAME => {:type => ::Thrift::Types::STRING, :name => 
'constraintname'},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbname is unset!') unless @dbname
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tablename is unset!') unless @tablename
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field constraintname is unset!') unless @constraintname
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddPrimaryKeyRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PRIMARYKEYCOLS = 1
+ 
+   FIELDS = {
+     PRIMARYKEYCOLS => {:type => ::Thrift::Types::LIST, :name => 
'primaryKeyCols', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLPrimaryKey}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field primaryKeyCols is unset!') unless @primaryKeyCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddForeignKeyRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   FOREIGNKEYCOLS = 1
+ 
+   FIELDS = {
+     FOREIGNKEYCOLS => {:type => ::Thrift::Types::LIST, :name => 
'foreignKeyCols', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLForeignKey}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field foreignKeyCols is unset!') unless @foreignKeyCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddUniqueConstraintRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   UNIQUECONSTRAINTCOLS = 1
+ 
+   FIELDS = {
+     UNIQUECONSTRAINTCOLS => {:type => ::Thrift::Types::LIST, :name => 
'uniqueConstraintCols', :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::SQLUniqueConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field uniqueConstraintCols is unset!') unless @uniqueConstraintCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddNotNullConstraintRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   NOTNULLCONSTRAINTCOLS = 1
+ 
+   FIELDS = {
+     NOTNULLCONSTRAINTCOLS => {:type => ::Thrift::Types::LIST, :name => 
'notNullConstraintCols', :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::SQLNotNullConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field notNullConstraintCols is unset!') unless @notNullConstraintCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddDefaultConstraintRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DEFAULTCONSTRAINTCOLS = 1
+ 
+   FIELDS = {
+     DEFAULTCONSTRAINTCOLS => {:type => ::Thrift::Types::LIST, :name => 
'defaultConstraintCols', :element => {:type => ::Thrift::Types::STRUCT, :class 
=> ::SQLDefaultConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field defaultConstraintCols is unset!') unless @defaultConstraintCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddCheckConstraintRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   CHECKCONSTRAINTCOLS = 1
+ 
+   FIELDS = {
+     CHECKCONSTRAINTCOLS => {:type => ::Thrift::Types::LIST, :name => 
'checkConstraintCols', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::SQLCheckConstraint}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field checkConstraintCols is unset!') unless @checkConstraintCols
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionsByExprResult
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONS = 1
+   HASUNKNOWNPARTITIONS = 2
+ 
+   FIELDS = {
+     PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
+     HASUNKNOWNPARTITIONS => {:type => ::Thrift::Types::BOOL, :name => 
'hasUnknownPartitions'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partitions is unset!') unless @partitions
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field hasUnknownPartitions is unset!') if @hasUnknownPartitions.nil?
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionsByExprRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   EXPR = 3
+   DEFAULTPARTITIONNAME = 4
+   MAXPARTS = 5
+   CATNAME = 6
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     EXPR => {:type => ::Thrift::Types::STRING, :name => 'expr', :binary => 
true},
+     DEFAULTPARTITIONNAME => {:type => ::Thrift::Types::STRING, :name => 
'defaultPartitionName', :optional => true},
+     MAXPARTS => {:type => ::Thrift::Types::I16, :name => 'maxParts', :default 
=> -1, :optional => true},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field expr is unset!') unless @expr
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class TableStatsResult
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   TABLESTATS = 1
++  ISSTATSCOMPLIANT = 2
+ 
+   FIELDS = {
 -    TABLESTATS => {:type => ::Thrift::Types::LIST, :name => 'tableStats', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::ColumnStatisticsObj}}
++    TABLESTATS => {:type => ::Thrift::Types::LIST, :name => 'tableStats', 
:element => {:type => ::Thrift::Types::STRUCT, :class => 
::ColumnStatisticsObj}},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tableStats is unset!') unless @tableStats
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionsStatsResult
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTSTATS = 1
++  ISSTATSCOMPLIANT = 2
+ 
+   FIELDS = {
 -    PARTSTATS => {:type => ::Thrift::Types::MAP, :name => 'partStats', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => 
::ColumnStatisticsObj}}}
++    PARTSTATS => {:type => ::Thrift::Types::MAP, :name => 'partStats', :key 
=> {:type => ::Thrift::Types::STRING}, :value => {:type => 
::Thrift::Types::LIST, :element => {:type => ::Thrift::Types::STRUCT, :class => 
::ColumnStatisticsObj}}},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partStats is unset!') unless @partStats
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class TableStatsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   COLNAMES = 3
+   CATNAME = 4
++  TXNID = 5
++  VALIDWRITEIDLIST = 6
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     COLNAMES => {:type => ::Thrift::Types::LIST, :name => 'colNames', 
:element => {:type => ::Thrift::Types::STRING}},
 -    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
++    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
++    TXNID => {:type => ::Thrift::Types::I64, :name => 'txnId', :default => 
-1, :optional => true},
++    VALIDWRITEIDLIST => {:type => ::Thrift::Types::STRING, :name => 
'validWriteIdList', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colNames is unset!') unless @colNames
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionsStatsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   COLNAMES = 3
+   PARTNAMES = 4
+   CATNAME = 5
++  TXNID = 6
++  VALIDWRITEIDLIST = 7
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     COLNAMES => {:type => ::Thrift::Types::LIST, :name => 'colNames', 
:element => {:type => ::Thrift::Types::STRING}},
+     PARTNAMES => {:type => ::Thrift::Types::LIST, :name => 'partNames', 
:element => {:type => ::Thrift::Types::STRING}},
 -    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
++    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
++    TXNID => {:type => ::Thrift::Types::I64, :name => 'txnId', :default => 
-1, :optional => true},
++    VALIDWRITEIDLIST => {:type => ::Thrift::Types::STRING, :name => 
'validWriteIdList', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field colNames is unset!') unless @colNames
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partNames is unset!') unless @partNames
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddPartitionsResult
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONS = 1
++  ISSTATSCOMPLIANT = 2
+ 
+   FIELDS = {
 -    PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}, 
:optional => true}
++    PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}, 
:optional => true},
++    ISSTATSCOMPLIANT => {:type => ::Thrift::Types::BOOL, :name => 
'isStatsCompliant', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class AddPartitionsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   PARTS = 3
+   IFNOTEXISTS = 4
+   NEEDRESULT = 5
+   CATNAME = 6
++  TXNID = 7
++  VALIDWRITEIDLIST = 8
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     PARTS => {:type => ::Thrift::Types::LIST, :name => 'parts', :element => 
{:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
+     IFNOTEXISTS => {:type => ::Thrift::Types::BOOL, :name => 'ifNotExists'},
+     NEEDRESULT => {:type => ::Thrift::Types::BOOL, :name => 'needResult', 
:default => true, :optional => true},
 -    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
++    CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true},
++    TXNID => {:type => ::Thrift::Types::I64, :name => 'txnId', :default => 
-1, :optional => true},
++    VALIDWRITEIDLIST => {:type => ::Thrift::Types::STRING, :name => 
'validWriteIdList', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field parts is unset!') unless @parts
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field ifNotExists is unset!') if @ifNotExists.nil?
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DropPartitionsResult
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONS = 1
+ 
+   FIELDS = {
+     PARTITIONS => {:type => ::Thrift::Types::LIST, :name => 'partitions', 
:element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}, 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class DropPartitionsExpr
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   EXPR = 1
+   PARTARCHIVELEVEL = 2
+ 
+   FIELDS = {
+     EXPR => {:type => ::Thrift::Types::STRING, :name => 'expr', :binary => 
true},
+     PARTARCHIVELEVEL => {:type => ::Thrift::Types::I32, :name => 
'partArchiveLevel', :optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field expr is unset!') unless @expr
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class RequestPartsSpec < ::Thrift::Union
+   include ::Thrift::Struct_Union
+   class << self
+     def names(val)
+       RequestPartsSpec.new(:names, val)
+     end
+ 
+     def exprs(val)
+       RequestPartsSpec.new(:exprs, val)
+     end
+   end
+ 
+   NAMES = 1
+   EXPRS = 2
+ 
+   FIELDS = {
+     NAMES => {:type => ::Thrift::Types::LIST, :name => 'names', :element => 
{:type => ::Thrift::Types::STRING}},
+     EXPRS => {:type => ::Thrift::Types::LIST, :name => 'exprs', :element => 
{:type => ::Thrift::Types::STRUCT, :class => ::DropPartitionsExpr}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise(StandardError, 'Union fields are not set.') if get_set_field.nil? 
|| get_value.nil?
+   end
+ 
+   ::Thrift::Union.generate_accessors self
+ end
+ 
+ class DropPartitionsRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   PARTS = 3
+   DELETEDATA = 4
+   IFEXISTS = 5
+   IGNOREPROTECTION = 6
+   ENVIRONMENTCONTEXT = 7
+   NEEDRESULT = 8
+   CATNAME = 9
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     PARTS => {:type => ::Thrift::Types::STRUCT, :name => 'parts', :class => 
::RequestPartsSpec},
+     DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData', 
:optional => true},
+     IFEXISTS => {:type => ::Thrift::Types::BOOL, :name => 'ifExists', 
:default => true, :optional => true},
+     IGNOREPROTECTION => {:type => ::Thrift::Types::BOOL, :name => 
'ignoreProtection', :optional => true},
+     ENVIRONMENTCONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 
'environmentContext', :class => ::EnvironmentContext, :optional => true},
+     NEEDRESULT => {:type => ::Thrift::Types::BOOL, :name => 'needResult', 
:default => true, :optional => true},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field parts is unset!') unless @parts
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionValuesRequest
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   DBNAME = 1
+   TBLNAME = 2
+   PARTITIONKEYS = 3
+   APPLYDISTINCT = 4
+   FILTER = 5
+   PARTITIONORDER = 6
+   ASCENDING = 7
+   MAXPARTS = 8
+   CATNAME = 9
+ 
+   FIELDS = {
+     DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
+     TBLNAME => {:type => ::Thrift::Types::STRING, :name => 'tblName'},
+     PARTITIONKEYS => {:type => ::Thrift::Types::LIST, :name => 
'partitionKeys', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::FieldSchema}},
+     APPLYDISTINCT => {:type => ::Thrift::Types::BOOL, :name => 
'applyDistinct', :default => true, :optional => true},
+     FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter', :optional 
=> true},
+     PARTITIONORDER => {:type => ::Thrift::Types::LIST, :name => 
'partitionOrder', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::FieldSchema}, :optional => true},
+     ASCENDING => {:type => ::Thrift::Types::BOOL, :name => 'ascending', 
:default => true, :optional => true},
+     MAXPARTS => {:type => ::Thrift::Types::I64, :name => 'maxParts', :default 
=> -1, :optional => true},
+     CATNAME => {:type => ::Thrift::Types::STRING, :name => 'catName', 
:optional => true}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field dbName is unset!') unless @dbName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field tblName is unset!') unless @tblName
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partitionKeys is unset!') unless @partitionKeys
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionValuesRow
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   ROW = 1
+ 
+   FIELDS = {
+     ROW => {:type => ::Thrift::Types::LIST, :name => 'row', :element => 
{:type => ::Thrift::Types::STRING}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field row is unset!') unless @row
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class PartitionValuesResponse
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   PARTITIONVALUES = 1
+ 
+   FIELDS = {
+     PARTITIONVALUES => {:type => ::Thrift::Types::LIST, :name => 
'partitionValues', :element => {:type => ::Thrift::Types::STRUCT, :class => 
::PartitionValuesRow}}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required 
field partitionValues is unset!') unless @partitionValues
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class ResourceUri
+   include ::Thrift::Struct, ::Thrift::Struct_Union
+   RESOURCETYPE = 1
+   URI = 2
+ 
+   FIELDS = {
+     RESOURCETYPE => {:type => ::Thrift::Types::I32, :name => 'resourceType', 
:enum_class => ::ResourceType},
+     URI => {:type => ::Thrift::Types::STRING, :name => 'uri'}
+   }
+ 
+   def struct_fields; FIELDS; end
+ 
+   def validate
+     unless @resourceType.nil? || 
::ResourceType::VALID_VALUES.include?(@resourceType)
+       raise 
::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid 
value of field resourceType!')
+     end
+   end
+ 
+   ::Thrift::Struct.generate_accessors self
+ end
+ 
+ class Function
+   include ::Thrift::Str

<TRUNCATED>

Reply via email to