#
# Autogenerated by Thrift Compiler (0.9.3)
#
# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
#

require 'thrift'
require 'facebook_service'
require 'hive_metastore_types'

module ThriftHiveMetastore
  class Client < ::FacebookService::Client 
    include ::Thrift::Client

    def getMetaConf(key)
      send_getMetaConf(key)
      return recv_getMetaConf()
    end

    def send_getMetaConf(key)
      send_message('getMetaConf', GetMetaConf_args, :key => key)
    end

    def recv_getMetaConf()
      result = receive_message(GetMetaConf_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'getMetaConf failed: unknown result')
    end

    def setMetaConf(key, value)
      send_setMetaConf(key, value)
      recv_setMetaConf()
    end

    def send_setMetaConf(key, value)
      send_message('setMetaConf', SetMetaConf_args, :key => key, :value => value)
    end

    def recv_setMetaConf()
      result = receive_message(SetMetaConf_result)
      raise result.o1 unless result.o1.nil?
      return
    end

    def create_database(database)
      send_create_database(database)
      recv_create_database()
    end

    def send_create_database(database)
      send_message('create_database', Create_database_args, :database => database)
    end

    def recv_create_database()
      result = receive_message(Create_database_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def get_database(name)
      send_get_database(name)
      return recv_get_database()
    end

    def send_get_database(name)
      send_message('get_database', Get_database_args, :name => name)
    end

    def recv_get_database()
      result = receive_message(Get_database_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_database failed: unknown result')
    end

    def drop_database(name, deleteData, cascade)
      send_drop_database(name, deleteData, cascade)
      recv_drop_database()
    end

    def send_drop_database(name, deleteData, cascade)
      send_message('drop_database', Drop_database_args, :name => name, :deleteData => deleteData, :cascade => cascade)
    end

    def recv_drop_database()
      result = receive_message(Drop_database_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def get_databases(pattern)
      send_get_databases(pattern)
      return recv_get_databases()
    end

    def send_get_databases(pattern)
      send_message('get_databases', Get_databases_args, :pattern => pattern)
    end

    def recv_get_databases()
      result = receive_message(Get_databases_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_databases failed: unknown result')
    end

    def get_all_databases()
      send_get_all_databases()
      return recv_get_all_databases()
    end

    def send_get_all_databases()
      send_message('get_all_databases', Get_all_databases_args)
    end

    def recv_get_all_databases()
      result = receive_message(Get_all_databases_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_all_databases failed: unknown result')
    end

    def alter_database(dbname, db)
      send_alter_database(dbname, db)
      recv_alter_database()
    end

    def send_alter_database(dbname, db)
      send_message('alter_database', Alter_database_args, :dbname => dbname, :db => db)
    end

    def recv_alter_database()
      result = receive_message(Alter_database_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def get_type(name)
      send_get_type(name)
      return recv_get_type()
    end

    def send_get_type(name)
      send_message('get_type', Get_type_args, :name => name)
    end

    def recv_get_type()
      result = receive_message(Get_type_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_type failed: unknown result')
    end

    def create_type(type)
      send_create_type(type)
      return recv_create_type()
    end

    def send_create_type(type)
      send_message('create_type', Create_type_args, :type => type)
    end

    def recv_create_type()
      result = receive_message(Create_type_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'create_type failed: unknown result')
    end

    def drop_type(type)
      send_drop_type(type)
      return recv_drop_type()
    end

    def send_drop_type(type)
      send_message('drop_type', Drop_type_args, :type => type)
    end

    def recv_drop_type()
      result = receive_message(Drop_type_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_type failed: unknown result')
    end

    def get_type_all(name)
      send_get_type_all(name)
      return recv_get_type_all()
    end

    def send_get_type_all(name)
      send_message('get_type_all', Get_type_all_args, :name => name)
    end

    def recv_get_type_all()
      result = receive_message(Get_type_all_result)
      return result.success unless result.success.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_type_all failed: unknown result')
    end

    def get_fields(db_name, table_name)
      send_get_fields(db_name, table_name)
      return recv_get_fields()
    end

    def send_get_fields(db_name, table_name)
      send_message('get_fields', Get_fields_args, :db_name => db_name, :table_name => table_name)
    end

    def recv_get_fields()
      result = receive_message(Get_fields_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_fields failed: unknown result')
    end

    def get_fields_with_environment_context(db_name, table_name, environment_context)
      send_get_fields_with_environment_context(db_name, table_name, environment_context)
      return recv_get_fields_with_environment_context()
    end

    def send_get_fields_with_environment_context(db_name, table_name, environment_context)
      send_message('get_fields_with_environment_context', Get_fields_with_environment_context_args, :db_name => db_name, :table_name => table_name, :environment_context => environment_context)
    end

    def recv_get_fields_with_environment_context()
      result = receive_message(Get_fields_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_fields_with_environment_context failed: unknown result')
    end

    def get_schema(db_name, table_name)
      send_get_schema(db_name, table_name)
      return recv_get_schema()
    end

    def send_get_schema(db_name, table_name)
      send_message('get_schema', Get_schema_args, :db_name => db_name, :table_name => table_name)
    end

    def recv_get_schema()
      result = receive_message(Get_schema_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_schema failed: unknown result')
    end

    def get_schema_with_environment_context(db_name, table_name, environment_context)
      send_get_schema_with_environment_context(db_name, table_name, environment_context)
      return recv_get_schema_with_environment_context()
    end

    def send_get_schema_with_environment_context(db_name, table_name, environment_context)
      send_message('get_schema_with_environment_context', Get_schema_with_environment_context_args, :db_name => db_name, :table_name => table_name, :environment_context => environment_context)
    end

    def recv_get_schema_with_environment_context()
      result = receive_message(Get_schema_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_schema_with_environment_context failed: unknown result')
    end

    def create_table(tbl)
      send_create_table(tbl)
      recv_create_table()
    end

    def send_create_table(tbl)
      send_message('create_table', Create_table_args, :tbl => tbl)
    end

    def recv_create_table()
      result = receive_message(Create_table_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      return
    end

    def create_table_with_environment_context(tbl, environment_context)
      send_create_table_with_environment_context(tbl, environment_context)
      recv_create_table_with_environment_context()
    end

    def send_create_table_with_environment_context(tbl, environment_context)
      send_message('create_table_with_environment_context', Create_table_with_environment_context_args, :tbl => tbl, :environment_context => environment_context)
    end

    def recv_create_table_with_environment_context()
      result = receive_message(Create_table_with_environment_context_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      return
    end

    def create_table_with_constraints(tbl, primaryKeys, foreignKeys)
      send_create_table_with_constraints(tbl, primaryKeys, foreignKeys)
      recv_create_table_with_constraints()
    end

    def send_create_table_with_constraints(tbl, primaryKeys, foreignKeys)
      send_message('create_table_with_constraints', Create_table_with_constraints_args, :tbl => tbl, :primaryKeys => primaryKeys, :foreignKeys => foreignKeys)
    end

    def recv_create_table_with_constraints()
      result = receive_message(Create_table_with_constraints_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      return
    end

    def drop_constraint(req)
      send_drop_constraint(req)
      recv_drop_constraint()
    end

    def send_drop_constraint(req)
      send_message('drop_constraint', Drop_constraint_args, :req => req)
    end

    def recv_drop_constraint()
      result = receive_message(Drop_constraint_result)
      raise result.o1 unless result.o1.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def add_primary_key(req)
      send_add_primary_key(req)
      recv_add_primary_key()
    end

    def send_add_primary_key(req)
      send_message('add_primary_key', Add_primary_key_args, :req => req)
    end

    def recv_add_primary_key()
      result = receive_message(Add_primary_key_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def add_foreign_key(req)
      send_add_foreign_key(req)
      recv_add_foreign_key()
    end

    def send_add_foreign_key(req)
      send_message('add_foreign_key', Add_foreign_key_args, :req => req)
    end

    def recv_add_foreign_key()
      result = receive_message(Add_foreign_key_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def drop_table(dbname, name, deleteData)
      send_drop_table(dbname, name, deleteData)
      recv_drop_table()
    end

    def send_drop_table(dbname, name, deleteData)
      send_message('drop_table', Drop_table_args, :dbname => dbname, :name => name, :deleteData => deleteData)
    end

    def recv_drop_table()
      result = receive_message(Drop_table_result)
      raise result.o1 unless result.o1.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def drop_table_with_environment_context(dbname, name, deleteData, environment_context)
      send_drop_table_with_environment_context(dbname, name, deleteData, environment_context)
      recv_drop_table_with_environment_context()
    end

    def send_drop_table_with_environment_context(dbname, name, deleteData, environment_context)
      send_message('drop_table_with_environment_context', Drop_table_with_environment_context_args, :dbname => dbname, :name => name, :deleteData => deleteData, :environment_context => environment_context)
    end

    def recv_drop_table_with_environment_context()
      result = receive_message(Drop_table_with_environment_context_result)
      raise result.o1 unless result.o1.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def get_tables(db_name, pattern)
      send_get_tables(db_name, pattern)
      return recv_get_tables()
    end

    def send_get_tables(db_name, pattern)
      send_message('get_tables', Get_tables_args, :db_name => db_name, :pattern => pattern)
    end

    def recv_get_tables()
      result = receive_message(Get_tables_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_tables failed: unknown result')
    end

    def get_tables_by_type(db_name, pattern, tableType)
      send_get_tables_by_type(db_name, pattern, tableType)
      return recv_get_tables_by_type()
    end

    def send_get_tables_by_type(db_name, pattern, tableType)
      send_message('get_tables_by_type', Get_tables_by_type_args, :db_name => db_name, :pattern => pattern, :tableType => tableType)
    end

    def recv_get_tables_by_type()
      result = receive_message(Get_tables_by_type_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_tables_by_type failed: unknown result')
    end

    def get_table_meta(db_patterns, tbl_patterns, tbl_types)
      send_get_table_meta(db_patterns, tbl_patterns, tbl_types)
      return recv_get_table_meta()
    end

    def send_get_table_meta(db_patterns, tbl_patterns, tbl_types)
      send_message('get_table_meta', Get_table_meta_args, :db_patterns => db_patterns, :tbl_patterns => tbl_patterns, :tbl_types => tbl_types)
    end

    def recv_get_table_meta()
      result = receive_message(Get_table_meta_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_meta failed: unknown result')
    end

    def get_all_tables(db_name)
      send_get_all_tables(db_name)
      return recv_get_all_tables()
    end

    def send_get_all_tables(db_name)
      send_message('get_all_tables', Get_all_tables_args, :db_name => db_name)
    end

    def recv_get_all_tables()
      result = receive_message(Get_all_tables_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_all_tables failed: unknown result')
    end

    def get_table(dbname, tbl_name)
      send_get_table(dbname, tbl_name)
      return recv_get_table()
    end

    def send_get_table(dbname, tbl_name)
      send_message('get_table', Get_table_args, :dbname => dbname, :tbl_name => tbl_name)
    end

    def recv_get_table()
      result = receive_message(Get_table_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table failed: unknown result')
    end

    def get_table_objects_by_name(dbname, tbl_names)
      send_get_table_objects_by_name(dbname, tbl_names)
      return recv_get_table_objects_by_name()
    end

    def send_get_table_objects_by_name(dbname, tbl_names)
      send_message('get_table_objects_by_name', Get_table_objects_by_name_args, :dbname => dbname, :tbl_names => tbl_names)
    end

    def recv_get_table_objects_by_name()
      result = receive_message(Get_table_objects_by_name_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_objects_by_name failed: unknown result')
    end

    def get_table_req(req)
      send_get_table_req(req)
      return recv_get_table_req()
    end

    def send_get_table_req(req)
      send_message('get_table_req', Get_table_req_args, :req => req)
    end

    def recv_get_table_req()
      result = receive_message(Get_table_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_req failed: unknown result')
    end

    def get_table_objects_by_name_req(req)
      send_get_table_objects_by_name_req(req)
      return recv_get_table_objects_by_name_req()
    end

    def send_get_table_objects_by_name_req(req)
      send_message('get_table_objects_by_name_req', Get_table_objects_by_name_req_args, :req => req)
    end

    def recv_get_table_objects_by_name_req()
      result = receive_message(Get_table_objects_by_name_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_objects_by_name_req failed: unknown result')
    end

    def get_table_names_by_filter(dbname, filter, max_tables)
      send_get_table_names_by_filter(dbname, filter, max_tables)
      return recv_get_table_names_by_filter()
    end

    def send_get_table_names_by_filter(dbname, filter, max_tables)
      send_message('get_table_names_by_filter', Get_table_names_by_filter_args, :dbname => dbname, :filter => filter, :max_tables => max_tables)
    end

    def recv_get_table_names_by_filter()
      result = receive_message(Get_table_names_by_filter_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_names_by_filter failed: unknown result')
    end

    def alter_table(dbname, tbl_name, new_tbl)
      send_alter_table(dbname, tbl_name, new_tbl)
      recv_alter_table()
    end

    def send_alter_table(dbname, tbl_name, new_tbl)
      send_message('alter_table', Alter_table_args, :dbname => dbname, :tbl_name => tbl_name, :new_tbl => new_tbl)
    end

    def recv_alter_table()
      result = receive_message(Alter_table_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def alter_table_with_environment_context(dbname, tbl_name, new_tbl, environment_context)
      send_alter_table_with_environment_context(dbname, tbl_name, new_tbl, environment_context)
      recv_alter_table_with_environment_context()
    end

    def send_alter_table_with_environment_context(dbname, tbl_name, new_tbl, environment_context)
      send_message('alter_table_with_environment_context', Alter_table_with_environment_context_args, :dbname => dbname, :tbl_name => tbl_name, :new_tbl => new_tbl, :environment_context => environment_context)
    end

    def recv_alter_table_with_environment_context()
      result = receive_message(Alter_table_with_environment_context_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def alter_table_with_cascade(dbname, tbl_name, new_tbl, cascade)
      send_alter_table_with_cascade(dbname, tbl_name, new_tbl, cascade)
      recv_alter_table_with_cascade()
    end

    def send_alter_table_with_cascade(dbname, tbl_name, new_tbl, cascade)
      send_message('alter_table_with_cascade', Alter_table_with_cascade_args, :dbname => dbname, :tbl_name => tbl_name, :new_tbl => new_tbl, :cascade => cascade)
    end

    def recv_alter_table_with_cascade()
      result = receive_message(Alter_table_with_cascade_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def add_partition(new_part)
      send_add_partition(new_part)
      return recv_add_partition()
    end

    def send_add_partition(new_part)
      send_message('add_partition', Add_partition_args, :new_part => new_part)
    end

    def recv_add_partition()
      result = receive_message(Add_partition_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_partition failed: unknown result')
    end

    def add_partition_with_environment_context(new_part, environment_context)
      send_add_partition_with_environment_context(new_part, environment_context)
      return recv_add_partition_with_environment_context()
    end

    def send_add_partition_with_environment_context(new_part, environment_context)
      send_message('add_partition_with_environment_context', Add_partition_with_environment_context_args, :new_part => new_part, :environment_context => environment_context)
    end

    def recv_add_partition_with_environment_context()
      result = receive_message(Add_partition_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_partition_with_environment_context failed: unknown result')
    end

    def add_partitions(new_parts)
      send_add_partitions(new_parts)
      return recv_add_partitions()
    end

    def send_add_partitions(new_parts)
      send_message('add_partitions', Add_partitions_args, :new_parts => new_parts)
    end

    def recv_add_partitions()
      result = receive_message(Add_partitions_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_partitions failed: unknown result')
    end

    def add_partitions_pspec(new_parts)
      send_add_partitions_pspec(new_parts)
      return recv_add_partitions_pspec()
    end

    def send_add_partitions_pspec(new_parts)
      send_message('add_partitions_pspec', Add_partitions_pspec_args, :new_parts => new_parts)
    end

    def recv_add_partitions_pspec()
      result = receive_message(Add_partitions_pspec_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_partitions_pspec failed: unknown result')
    end

    def append_partition(db_name, tbl_name, part_vals)
      send_append_partition(db_name, tbl_name, part_vals)
      return recv_append_partition()
    end

    def send_append_partition(db_name, tbl_name, part_vals)
      send_message('append_partition', Append_partition_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals)
    end

    def recv_append_partition()
      result = receive_message(Append_partition_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'append_partition failed: unknown result')
    end

    def add_partitions_req(request)
      send_add_partitions_req(request)
      return recv_add_partitions_req()
    end

    def send_add_partitions_req(request)
      send_message('add_partitions_req', Add_partitions_req_args, :request => request)
    end

    def recv_add_partitions_req()
      result = receive_message(Add_partitions_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_partitions_req failed: unknown result')
    end

    def append_partition_with_environment_context(db_name, tbl_name, part_vals, environment_context)
      send_append_partition_with_environment_context(db_name, tbl_name, part_vals, environment_context)
      return recv_append_partition_with_environment_context()
    end

    def send_append_partition_with_environment_context(db_name, tbl_name, part_vals, environment_context)
      send_message('append_partition_with_environment_context', Append_partition_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :environment_context => environment_context)
    end

    def recv_append_partition_with_environment_context()
      result = receive_message(Append_partition_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'append_partition_with_environment_context failed: unknown result')
    end

    def append_partition_by_name(db_name, tbl_name, part_name)
      send_append_partition_by_name(db_name, tbl_name, part_name)
      return recv_append_partition_by_name()
    end

    def send_append_partition_by_name(db_name, tbl_name, part_name)
      send_message('append_partition_by_name', Append_partition_by_name_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name)
    end

    def recv_append_partition_by_name()
      result = receive_message(Append_partition_by_name_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'append_partition_by_name failed: unknown result')
    end

    def append_partition_by_name_with_environment_context(db_name, tbl_name, part_name, environment_context)
      send_append_partition_by_name_with_environment_context(db_name, tbl_name, part_name, environment_context)
      return recv_append_partition_by_name_with_environment_context()
    end

    def send_append_partition_by_name_with_environment_context(db_name, tbl_name, part_name, environment_context)
      send_message('append_partition_by_name_with_environment_context', Append_partition_by_name_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name, :environment_context => environment_context)
    end

    def recv_append_partition_by_name_with_environment_context()
      result = receive_message(Append_partition_by_name_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'append_partition_by_name_with_environment_context failed: unknown result')
    end

    def drop_partition(db_name, tbl_name, part_vals, deleteData)
      send_drop_partition(db_name, tbl_name, part_vals, deleteData)
      return recv_drop_partition()
    end

    def send_drop_partition(db_name, tbl_name, part_vals, deleteData)
      send_message('drop_partition', Drop_partition_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :deleteData => deleteData)
    end

    def recv_drop_partition()
      result = receive_message(Drop_partition_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_partition failed: unknown result')
    end

    def drop_partition_with_environment_context(db_name, tbl_name, part_vals, deleteData, environment_context)
      send_drop_partition_with_environment_context(db_name, tbl_name, part_vals, deleteData, environment_context)
      return recv_drop_partition_with_environment_context()
    end

    def send_drop_partition_with_environment_context(db_name, tbl_name, part_vals, deleteData, environment_context)
      send_message('drop_partition_with_environment_context', Drop_partition_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :deleteData => deleteData, :environment_context => environment_context)
    end

    def recv_drop_partition_with_environment_context()
      result = receive_message(Drop_partition_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_partition_with_environment_context failed: unknown result')
    end

    def drop_partition_by_name(db_name, tbl_name, part_name, deleteData)
      send_drop_partition_by_name(db_name, tbl_name, part_name, deleteData)
      return recv_drop_partition_by_name()
    end

    def send_drop_partition_by_name(db_name, tbl_name, part_name, deleteData)
      send_message('drop_partition_by_name', Drop_partition_by_name_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name, :deleteData => deleteData)
    end

    def recv_drop_partition_by_name()
      result = receive_message(Drop_partition_by_name_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_partition_by_name failed: unknown result')
    end

    def drop_partition_by_name_with_environment_context(db_name, tbl_name, part_name, deleteData, environment_context)
      send_drop_partition_by_name_with_environment_context(db_name, tbl_name, part_name, deleteData, environment_context)
      return recv_drop_partition_by_name_with_environment_context()
    end

    def send_drop_partition_by_name_with_environment_context(db_name, tbl_name, part_name, deleteData, environment_context)
      send_message('drop_partition_by_name_with_environment_context', Drop_partition_by_name_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name, :deleteData => deleteData, :environment_context => environment_context)
    end

    def recv_drop_partition_by_name_with_environment_context()
      result = receive_message(Drop_partition_by_name_with_environment_context_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_partition_by_name_with_environment_context failed: unknown result')
    end

    def drop_partitions_req(req)
      send_drop_partitions_req(req)
      return recv_drop_partitions_req()
    end

    def send_drop_partitions_req(req)
      send_message('drop_partitions_req', Drop_partitions_req_args, :req => req)
    end

    def recv_drop_partitions_req()
      result = receive_message(Drop_partitions_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_partitions_req failed: unknown result')
    end

    def get_partition(db_name, tbl_name, part_vals)
      send_get_partition(db_name, tbl_name, part_vals)
      return recv_get_partition()
    end

    def send_get_partition(db_name, tbl_name, part_vals)
      send_message('get_partition', Get_partition_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals)
    end

    def recv_get_partition()
      result = receive_message(Get_partition_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition failed: unknown result')
    end

    def exchange_partition(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      send_exchange_partition(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      return recv_exchange_partition()
    end

    def send_exchange_partition(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      send_message('exchange_partition', Exchange_partition_args, :partitionSpecs => partitionSpecs, :source_db => source_db, :source_table_name => source_table_name, :dest_db => dest_db, :dest_table_name => dest_table_name)
    end

    def recv_exchange_partition()
      result = receive_message(Exchange_partition_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'exchange_partition failed: unknown result')
    end

    def exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      send_exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      return recv_exchange_partitions()
    end

    def send_exchange_partitions(partitionSpecs, source_db, source_table_name, dest_db, dest_table_name)
      send_message('exchange_partitions', Exchange_partitions_args, :partitionSpecs => partitionSpecs, :source_db => source_db, :source_table_name => source_table_name, :dest_db => dest_db, :dest_table_name => dest_table_name)
    end

    def recv_exchange_partitions()
      result = receive_message(Exchange_partitions_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'exchange_partitions failed: unknown result')
    end

    def get_partition_with_auth(db_name, tbl_name, part_vals, user_name, group_names)
      send_get_partition_with_auth(db_name, tbl_name, part_vals, user_name, group_names)
      return recv_get_partition_with_auth()
    end

    def send_get_partition_with_auth(db_name, tbl_name, part_vals, user_name, group_names)
      send_message('get_partition_with_auth', Get_partition_with_auth_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :user_name => user_name, :group_names => group_names)
    end

    def recv_get_partition_with_auth()
      result = receive_message(Get_partition_with_auth_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition_with_auth failed: unknown result')
    end

    def get_partition_by_name(db_name, tbl_name, part_name)
      send_get_partition_by_name(db_name, tbl_name, part_name)
      return recv_get_partition_by_name()
    end

    def send_get_partition_by_name(db_name, tbl_name, part_name)
      send_message('get_partition_by_name', Get_partition_by_name_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name)
    end

    def recv_get_partition_by_name()
      result = receive_message(Get_partition_by_name_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition_by_name failed: unknown result')
    end

    def get_partitions(db_name, tbl_name, max_parts)
      send_get_partitions(db_name, tbl_name, max_parts)
      return recv_get_partitions()
    end

    def send_get_partitions(db_name, tbl_name, max_parts)
      send_message('get_partitions', Get_partitions_args, :db_name => db_name, :tbl_name => tbl_name, :max_parts => max_parts)
    end

    def recv_get_partitions()
      result = receive_message(Get_partitions_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions failed: unknown result')
    end

    def get_partitions_with_auth(db_name, tbl_name, max_parts, user_name, group_names)
      send_get_partitions_with_auth(db_name, tbl_name, max_parts, user_name, group_names)
      return recv_get_partitions_with_auth()
    end

    def send_get_partitions_with_auth(db_name, tbl_name, max_parts, user_name, group_names)
      send_message('get_partitions_with_auth', Get_partitions_with_auth_args, :db_name => db_name, :tbl_name => tbl_name, :max_parts => max_parts, :user_name => user_name, :group_names => group_names)
    end

    def recv_get_partitions_with_auth()
      result = receive_message(Get_partitions_with_auth_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_with_auth failed: unknown result')
    end

    def get_partitions_pspec(db_name, tbl_name, max_parts)
      send_get_partitions_pspec(db_name, tbl_name, max_parts)
      return recv_get_partitions_pspec()
    end

    def send_get_partitions_pspec(db_name, tbl_name, max_parts)
      send_message('get_partitions_pspec', Get_partitions_pspec_args, :db_name => db_name, :tbl_name => tbl_name, :max_parts => max_parts)
    end

    def recv_get_partitions_pspec()
      result = receive_message(Get_partitions_pspec_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_pspec failed: unknown result')
    end

    def get_partition_names(db_name, tbl_name, max_parts)
      send_get_partition_names(db_name, tbl_name, max_parts)
      return recv_get_partition_names()
    end

    def send_get_partition_names(db_name, tbl_name, max_parts)
      send_message('get_partition_names', Get_partition_names_args, :db_name => db_name, :tbl_name => tbl_name, :max_parts => max_parts)
    end

    def recv_get_partition_names()
      result = receive_message(Get_partition_names_result)
      return result.success unless result.success.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition_names failed: unknown result')
    end

    def get_partitions_ps(db_name, tbl_name, part_vals, max_parts)
      send_get_partitions_ps(db_name, tbl_name, part_vals, max_parts)
      return recv_get_partitions_ps()
    end

    def send_get_partitions_ps(db_name, tbl_name, part_vals, max_parts)
      send_message('get_partitions_ps', Get_partitions_ps_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :max_parts => max_parts)
    end

    def recv_get_partitions_ps()
      result = receive_message(Get_partitions_ps_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_ps failed: unknown result')
    end

    def get_partitions_ps_with_auth(db_name, tbl_name, part_vals, max_parts, user_name, group_names)
      send_get_partitions_ps_with_auth(db_name, tbl_name, part_vals, max_parts, user_name, group_names)
      return recv_get_partitions_ps_with_auth()
    end

    def send_get_partitions_ps_with_auth(db_name, tbl_name, part_vals, max_parts, user_name, group_names)
      send_message('get_partitions_ps_with_auth', Get_partitions_ps_with_auth_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :max_parts => max_parts, :user_name => user_name, :group_names => group_names)
    end

    def recv_get_partitions_ps_with_auth()
      result = receive_message(Get_partitions_ps_with_auth_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_ps_with_auth failed: unknown result')
    end

    def get_partition_names_ps(db_name, tbl_name, part_vals, max_parts)
      send_get_partition_names_ps(db_name, tbl_name, part_vals, max_parts)
      return recv_get_partition_names_ps()
    end

    def send_get_partition_names_ps(db_name, tbl_name, part_vals, max_parts)
      send_message('get_partition_names_ps', Get_partition_names_ps_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :max_parts => max_parts)
    end

    def recv_get_partition_names_ps()
      result = receive_message(Get_partition_names_ps_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition_names_ps failed: unknown result')
    end

    def get_partitions_by_filter(db_name, tbl_name, filter, max_parts)
      send_get_partitions_by_filter(db_name, tbl_name, filter, max_parts)
      return recv_get_partitions_by_filter()
    end

    def send_get_partitions_by_filter(db_name, tbl_name, filter, max_parts)
      send_message('get_partitions_by_filter', Get_partitions_by_filter_args, :db_name => db_name, :tbl_name => tbl_name, :filter => filter, :max_parts => max_parts)
    end

    def recv_get_partitions_by_filter()
      result = receive_message(Get_partitions_by_filter_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_by_filter failed: unknown result')
    end

    def get_part_specs_by_filter(db_name, tbl_name, filter, max_parts)
      send_get_part_specs_by_filter(db_name, tbl_name, filter, max_parts)
      return recv_get_part_specs_by_filter()
    end

    def send_get_part_specs_by_filter(db_name, tbl_name, filter, max_parts)
      send_message('get_part_specs_by_filter', Get_part_specs_by_filter_args, :db_name => db_name, :tbl_name => tbl_name, :filter => filter, :max_parts => max_parts)
    end

    def recv_get_part_specs_by_filter()
      result = receive_message(Get_part_specs_by_filter_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_part_specs_by_filter failed: unknown result')
    end

    def get_partitions_by_expr(req)
      send_get_partitions_by_expr(req)
      return recv_get_partitions_by_expr()
    end

    def send_get_partitions_by_expr(req)
      send_message('get_partitions_by_expr', Get_partitions_by_expr_args, :req => req)
    end

    def recv_get_partitions_by_expr()
      result = receive_message(Get_partitions_by_expr_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_by_expr failed: unknown result')
    end

    def get_num_partitions_by_filter(db_name, tbl_name, filter)
      send_get_num_partitions_by_filter(db_name, tbl_name, filter)
      return recv_get_num_partitions_by_filter()
    end

    def send_get_num_partitions_by_filter(db_name, tbl_name, filter)
      send_message('get_num_partitions_by_filter', Get_num_partitions_by_filter_args, :db_name => db_name, :tbl_name => tbl_name, :filter => filter)
    end

    def recv_get_num_partitions_by_filter()
      result = receive_message(Get_num_partitions_by_filter_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_num_partitions_by_filter failed: unknown result')
    end

    def get_partitions_by_names(db_name, tbl_name, names)
      send_get_partitions_by_names(db_name, tbl_name, names)
      return recv_get_partitions_by_names()
    end

    def send_get_partitions_by_names(db_name, tbl_name, names)
      send_message('get_partitions_by_names', Get_partitions_by_names_args, :db_name => db_name, :tbl_name => tbl_name, :names => names)
    end

    def recv_get_partitions_by_names()
      result = receive_message(Get_partitions_by_names_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_by_names failed: unknown result')
    end

    def alter_partition(db_name, tbl_name, new_part)
      send_alter_partition(db_name, tbl_name, new_part)
      recv_alter_partition()
    end

    def send_alter_partition(db_name, tbl_name, new_part)
      send_message('alter_partition', Alter_partition_args, :db_name => db_name, :tbl_name => tbl_name, :new_part => new_part)
    end

    def recv_alter_partition()
      result = receive_message(Alter_partition_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def alter_partitions(db_name, tbl_name, new_parts)
      send_alter_partitions(db_name, tbl_name, new_parts)
      recv_alter_partitions()
    end

    def send_alter_partitions(db_name, tbl_name, new_parts)
      send_message('alter_partitions', Alter_partitions_args, :db_name => db_name, :tbl_name => tbl_name, :new_parts => new_parts)
    end

    def recv_alter_partitions()
      result = receive_message(Alter_partitions_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def alter_partitions_with_environment_context(db_name, tbl_name, new_parts, environment_context)
      send_alter_partitions_with_environment_context(db_name, tbl_name, new_parts, environment_context)
      recv_alter_partitions_with_environment_context()
    end

    def send_alter_partitions_with_environment_context(db_name, tbl_name, new_parts, environment_context)
      send_message('alter_partitions_with_environment_context', Alter_partitions_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :new_parts => new_parts, :environment_context => environment_context)
    end

    def recv_alter_partitions_with_environment_context()
      result = receive_message(Alter_partitions_with_environment_context_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def alter_partition_with_environment_context(db_name, tbl_name, new_part, environment_context)
      send_alter_partition_with_environment_context(db_name, tbl_name, new_part, environment_context)
      recv_alter_partition_with_environment_context()
    end

    def send_alter_partition_with_environment_context(db_name, tbl_name, new_part, environment_context)
      send_message('alter_partition_with_environment_context', Alter_partition_with_environment_context_args, :db_name => db_name, :tbl_name => tbl_name, :new_part => new_part, :environment_context => environment_context)
    end

    def recv_alter_partition_with_environment_context()
      result = receive_message(Alter_partition_with_environment_context_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def rename_partition(db_name, tbl_name, part_vals, new_part)
      send_rename_partition(db_name, tbl_name, part_vals, new_part)
      recv_rename_partition()
    end

    def send_rename_partition(db_name, tbl_name, part_vals, new_part)
      send_message('rename_partition', Rename_partition_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :new_part => new_part)
    end

    def recv_rename_partition()
      result = receive_message(Rename_partition_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def partition_name_has_valid_characters(part_vals, throw_exception)
      send_partition_name_has_valid_characters(part_vals, throw_exception)
      return recv_partition_name_has_valid_characters()
    end

    def send_partition_name_has_valid_characters(part_vals, throw_exception)
      send_message('partition_name_has_valid_characters', Partition_name_has_valid_characters_args, :part_vals => part_vals, :throw_exception => throw_exception)
    end

    def recv_partition_name_has_valid_characters()
      result = receive_message(Partition_name_has_valid_characters_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'partition_name_has_valid_characters failed: unknown result')
    end

    def get_config_value(name, defaultValue)
      send_get_config_value(name, defaultValue)
      return recv_get_config_value()
    end

    def send_get_config_value(name, defaultValue)
      send_message('get_config_value', Get_config_value_args, :name => name, :defaultValue => defaultValue)
    end

    def recv_get_config_value()
      result = receive_message(Get_config_value_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_config_value failed: unknown result')
    end

    def partition_name_to_vals(part_name)
      send_partition_name_to_vals(part_name)
      return recv_partition_name_to_vals()
    end

    def send_partition_name_to_vals(part_name)
      send_message('partition_name_to_vals', Partition_name_to_vals_args, :part_name => part_name)
    end

    def recv_partition_name_to_vals()
      result = receive_message(Partition_name_to_vals_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'partition_name_to_vals failed: unknown result')
    end

    def partition_name_to_spec(part_name)
      send_partition_name_to_spec(part_name)
      return recv_partition_name_to_spec()
    end

    def send_partition_name_to_spec(part_name)
      send_message('partition_name_to_spec', Partition_name_to_spec_args, :part_name => part_name)
    end

    def recv_partition_name_to_spec()
      result = receive_message(Partition_name_to_spec_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'partition_name_to_spec failed: unknown result')
    end

    def markPartitionForEvent(db_name, tbl_name, part_vals, eventType)
      send_markPartitionForEvent(db_name, tbl_name, part_vals, eventType)
      recv_markPartitionForEvent()
    end

    def send_markPartitionForEvent(db_name, tbl_name, part_vals, eventType)
      send_message('markPartitionForEvent', MarkPartitionForEvent_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :eventType => eventType)
    end

    def recv_markPartitionForEvent()
      result = receive_message(MarkPartitionForEvent_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise result.o5 unless result.o5.nil?
      raise result.o6 unless result.o6.nil?
      return
    end

    def isPartitionMarkedForEvent(db_name, tbl_name, part_vals, eventType)
      send_isPartitionMarkedForEvent(db_name, tbl_name, part_vals, eventType)
      return recv_isPartitionMarkedForEvent()
    end

    def send_isPartitionMarkedForEvent(db_name, tbl_name, part_vals, eventType)
      send_message('isPartitionMarkedForEvent', IsPartitionMarkedForEvent_args, :db_name => db_name, :tbl_name => tbl_name, :part_vals => part_vals, :eventType => eventType)
    end

    def recv_isPartitionMarkedForEvent()
      result = receive_message(IsPartitionMarkedForEvent_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise result.o5 unless result.o5.nil?
      raise result.o6 unless result.o6.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'isPartitionMarkedForEvent failed: unknown result')
    end

    def add_index(new_index, index_table)
      send_add_index(new_index, index_table)
      return recv_add_index()
    end

    def send_add_index(new_index, index_table)
      send_message('add_index', Add_index_args, :new_index => new_index, :index_table => index_table)
    end

    def recv_add_index()
      result = receive_message(Add_index_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_index failed: unknown result')
    end

    def alter_index(dbname, base_tbl_name, idx_name, new_idx)
      send_alter_index(dbname, base_tbl_name, idx_name, new_idx)
      recv_alter_index()
    end

    def send_alter_index(dbname, base_tbl_name, idx_name, new_idx)
      send_message('alter_index', Alter_index_args, :dbname => dbname, :base_tbl_name => base_tbl_name, :idx_name => idx_name, :new_idx => new_idx)
    end

    def recv_alter_index()
      result = receive_message(Alter_index_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def drop_index_by_name(db_name, tbl_name, index_name, deleteData)
      send_drop_index_by_name(db_name, tbl_name, index_name, deleteData)
      return recv_drop_index_by_name()
    end

    def send_drop_index_by_name(db_name, tbl_name, index_name, deleteData)
      send_message('drop_index_by_name', Drop_index_by_name_args, :db_name => db_name, :tbl_name => tbl_name, :index_name => index_name, :deleteData => deleteData)
    end

    def recv_drop_index_by_name()
      result = receive_message(Drop_index_by_name_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_index_by_name failed: unknown result')
    end

    def get_index_by_name(db_name, tbl_name, index_name)
      send_get_index_by_name(db_name, tbl_name, index_name)
      return recv_get_index_by_name()
    end

    def send_get_index_by_name(db_name, tbl_name, index_name)
      send_message('get_index_by_name', Get_index_by_name_args, :db_name => db_name, :tbl_name => tbl_name, :index_name => index_name)
    end

    def recv_get_index_by_name()
      result = receive_message(Get_index_by_name_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_index_by_name failed: unknown result')
    end

    def get_indexes(db_name, tbl_name, max_indexes)
      send_get_indexes(db_name, tbl_name, max_indexes)
      return recv_get_indexes()
    end

    def send_get_indexes(db_name, tbl_name, max_indexes)
      send_message('get_indexes', Get_indexes_args, :db_name => db_name, :tbl_name => tbl_name, :max_indexes => max_indexes)
    end

    def recv_get_indexes()
      result = receive_message(Get_indexes_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_indexes failed: unknown result')
    end

    def get_index_names(db_name, tbl_name, max_indexes)
      send_get_index_names(db_name, tbl_name, max_indexes)
      return recv_get_index_names()
    end

    def send_get_index_names(db_name, tbl_name, max_indexes)
      send_message('get_index_names', Get_index_names_args, :db_name => db_name, :tbl_name => tbl_name, :max_indexes => max_indexes)
    end

    def recv_get_index_names()
      result = receive_message(Get_index_names_result)
      return result.success unless result.success.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_index_names failed: unknown result')
    end

    def get_primary_keys(request)
      send_get_primary_keys(request)
      return recv_get_primary_keys()
    end

    def send_get_primary_keys(request)
      send_message('get_primary_keys', Get_primary_keys_args, :request => request)
    end

    def recv_get_primary_keys()
      result = receive_message(Get_primary_keys_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_primary_keys failed: unknown result')
    end

    def get_foreign_keys(request)
      send_get_foreign_keys(request)
      return recv_get_foreign_keys()
    end

    def send_get_foreign_keys(request)
      send_message('get_foreign_keys', Get_foreign_keys_args, :request => request)
    end

    def recv_get_foreign_keys()
      result = receive_message(Get_foreign_keys_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_foreign_keys failed: unknown result')
    end

    def update_table_column_statistics(stats_obj)
      send_update_table_column_statistics(stats_obj)
      return recv_update_table_column_statistics()
    end

    def send_update_table_column_statistics(stats_obj)
      send_message('update_table_column_statistics', Update_table_column_statistics_args, :stats_obj => stats_obj)
    end

    def recv_update_table_column_statistics()
      result = receive_message(Update_table_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'update_table_column_statistics failed: unknown result')
    end

    def update_partition_column_statistics(stats_obj)
      send_update_partition_column_statistics(stats_obj)
      return recv_update_partition_column_statistics()
    end

    def send_update_partition_column_statistics(stats_obj)
      send_message('update_partition_column_statistics', Update_partition_column_statistics_args, :stats_obj => stats_obj)
    end

    def recv_update_partition_column_statistics()
      result = receive_message(Update_partition_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'update_partition_column_statistics failed: unknown result')
    end

    def get_table_column_statistics(db_name, tbl_name, col_name)
      send_get_table_column_statistics(db_name, tbl_name, col_name)
      return recv_get_table_column_statistics()
    end

    def send_get_table_column_statistics(db_name, tbl_name, col_name)
      send_message('get_table_column_statistics', Get_table_column_statistics_args, :db_name => db_name, :tbl_name => tbl_name, :col_name => col_name)
    end

    def recv_get_table_column_statistics()
      result = receive_message(Get_table_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_column_statistics failed: unknown result')
    end

    def get_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      send_get_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      return recv_get_partition_column_statistics()
    end

    def send_get_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      send_message('get_partition_column_statistics', Get_partition_column_statistics_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name, :col_name => col_name)
    end

    def recv_get_partition_column_statistics()
      result = receive_message(Get_partition_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partition_column_statistics failed: unknown result')
    end

    def get_table_statistics_req(request)
      send_get_table_statistics_req(request)
      return recv_get_table_statistics_req()
    end

    def send_get_table_statistics_req(request)
      send_message('get_table_statistics_req', Get_table_statistics_req_args, :request => request)
    end

    def recv_get_table_statistics_req()
      result = receive_message(Get_table_statistics_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_table_statistics_req failed: unknown result')
    end

    def get_partitions_statistics_req(request)
      send_get_partitions_statistics_req(request)
      return recv_get_partitions_statistics_req()
    end

    def send_get_partitions_statistics_req(request)
      send_message('get_partitions_statistics_req', Get_partitions_statistics_req_args, :request => request)
    end

    def recv_get_partitions_statistics_req()
      result = receive_message(Get_partitions_statistics_req_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_partitions_statistics_req failed: unknown result')
    end

    def get_aggr_stats_for(request)
      send_get_aggr_stats_for(request)
      return recv_get_aggr_stats_for()
    end

    def send_get_aggr_stats_for(request)
      send_message('get_aggr_stats_for', Get_aggr_stats_for_args, :request => request)
    end

    def recv_get_aggr_stats_for()
      result = receive_message(Get_aggr_stats_for_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_aggr_stats_for failed: unknown result')
    end

    def set_aggr_stats_for(request)
      send_set_aggr_stats_for(request)
      return recv_set_aggr_stats_for()
    end

    def send_set_aggr_stats_for(request)
      send_message('set_aggr_stats_for', Set_aggr_stats_for_args, :request => request)
    end

    def recv_set_aggr_stats_for()
      result = receive_message(Set_aggr_stats_for_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'set_aggr_stats_for failed: unknown result')
    end

    def delete_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      send_delete_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      return recv_delete_partition_column_statistics()
    end

    def send_delete_partition_column_statistics(db_name, tbl_name, part_name, col_name)
      send_message('delete_partition_column_statistics', Delete_partition_column_statistics_args, :db_name => db_name, :tbl_name => tbl_name, :part_name => part_name, :col_name => col_name)
    end

    def recv_delete_partition_column_statistics()
      result = receive_message(Delete_partition_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'delete_partition_column_statistics failed: unknown result')
    end

    def delete_table_column_statistics(db_name, tbl_name, col_name)
      send_delete_table_column_statistics(db_name, tbl_name, col_name)
      return recv_delete_table_column_statistics()
    end

    def send_delete_table_column_statistics(db_name, tbl_name, col_name)
      send_message('delete_table_column_statistics', Delete_table_column_statistics_args, :db_name => db_name, :tbl_name => tbl_name, :col_name => col_name)
    end

    def recv_delete_table_column_statistics()
      result = receive_message(Delete_table_column_statistics_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'delete_table_column_statistics failed: unknown result')
    end

    def create_function(func)
      send_create_function(func)
      recv_create_function()
    end

    def send_create_function(func)
      send_message('create_function', Create_function_args, :func => func)
    end

    def recv_create_function()
      result = receive_message(Create_function_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise result.o4 unless result.o4.nil?
      return
    end

    def drop_function(dbName, funcName)
      send_drop_function(dbName, funcName)
      recv_drop_function()
    end

    def send_drop_function(dbName, funcName)
      send_message('drop_function', Drop_function_args, :dbName => dbName, :funcName => funcName)
    end

    def recv_drop_function()
      result = receive_message(Drop_function_result)
      raise result.o1 unless result.o1.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def alter_function(dbName, funcName, newFunc)
      send_alter_function(dbName, funcName, newFunc)
      recv_alter_function()
    end

    def send_alter_function(dbName, funcName, newFunc)
      send_message('alter_function', Alter_function_args, :dbName => dbName, :funcName => funcName, :newFunc => newFunc)
    end

    def recv_alter_function()
      result = receive_message(Alter_function_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def get_functions(dbName, pattern)
      send_get_functions(dbName, pattern)
      return recv_get_functions()
    end

    def send_get_functions(dbName, pattern)
      send_message('get_functions', Get_functions_args, :dbName => dbName, :pattern => pattern)
    end

    def recv_get_functions()
      result = receive_message(Get_functions_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_functions failed: unknown result')
    end

    def get_function(dbName, funcName)
      send_get_function(dbName, funcName)
      return recv_get_function()
    end

    def send_get_function(dbName, funcName)
      send_message('get_function', Get_function_args, :dbName => dbName, :funcName => funcName)
    end

    def recv_get_function()
      result = receive_message(Get_function_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_function failed: unknown result')
    end

    def get_all_functions()
      send_get_all_functions()
      return recv_get_all_functions()
    end

    def send_get_all_functions()
      send_message('get_all_functions', Get_all_functions_args)
    end

    def recv_get_all_functions()
      result = receive_message(Get_all_functions_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_all_functions failed: unknown result')
    end

    def create_role(role)
      send_create_role(role)
      return recv_create_role()
    end

    def send_create_role(role)
      send_message('create_role', Create_role_args, :role => role)
    end

    def recv_create_role()
      result = receive_message(Create_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'create_role failed: unknown result')
    end

    def drop_role(role_name)
      send_drop_role(role_name)
      return recv_drop_role()
    end

    def send_drop_role(role_name)
      send_message('drop_role', Drop_role_args, :role_name => role_name)
    end

    def recv_drop_role()
      result = receive_message(Drop_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'drop_role failed: unknown result')
    end

    def get_role_names()
      send_get_role_names()
      return recv_get_role_names()
    end

    def send_get_role_names()
      send_message('get_role_names', Get_role_names_args)
    end

    def recv_get_role_names()
      result = receive_message(Get_role_names_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_role_names failed: unknown result')
    end

    def grant_role(role_name, principal_name, principal_type, grantor, grantorType, grant_option)
      send_grant_role(role_name, principal_name, principal_type, grantor, grantorType, grant_option)
      return recv_grant_role()
    end

    def send_grant_role(role_name, principal_name, principal_type, grantor, grantorType, grant_option)
      send_message('grant_role', Grant_role_args, :role_name => role_name, :principal_name => principal_name, :principal_type => principal_type, :grantor => grantor, :grantorType => grantorType, :grant_option => grant_option)
    end

    def recv_grant_role()
      result = receive_message(Grant_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'grant_role failed: unknown result')
    end

    def revoke_role(role_name, principal_name, principal_type)
      send_revoke_role(role_name, principal_name, principal_type)
      return recv_revoke_role()
    end

    def send_revoke_role(role_name, principal_name, principal_type)
      send_message('revoke_role', Revoke_role_args, :role_name => role_name, :principal_name => principal_name, :principal_type => principal_type)
    end

    def recv_revoke_role()
      result = receive_message(Revoke_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'revoke_role failed: unknown result')
    end

    def list_roles(principal_name, principal_type)
      send_list_roles(principal_name, principal_type)
      return recv_list_roles()
    end

    def send_list_roles(principal_name, principal_type)
      send_message('list_roles', List_roles_args, :principal_name => principal_name, :principal_type => principal_type)
    end

    def recv_list_roles()
      result = receive_message(List_roles_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'list_roles failed: unknown result')
    end

    def grant_revoke_role(request)
      send_grant_revoke_role(request)
      return recv_grant_revoke_role()
    end

    def send_grant_revoke_role(request)
      send_message('grant_revoke_role', Grant_revoke_role_args, :request => request)
    end

    def recv_grant_revoke_role()
      result = receive_message(Grant_revoke_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'grant_revoke_role failed: unknown result')
    end

    def get_principals_in_role(request)
      send_get_principals_in_role(request)
      return recv_get_principals_in_role()
    end

    def send_get_principals_in_role(request)
      send_message('get_principals_in_role', Get_principals_in_role_args, :request => request)
    end

    def recv_get_principals_in_role()
      result = receive_message(Get_principals_in_role_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_principals_in_role failed: unknown result')
    end

    def get_role_grants_for_principal(request)
      send_get_role_grants_for_principal(request)
      return recv_get_role_grants_for_principal()
    end

    def send_get_role_grants_for_principal(request)
      send_message('get_role_grants_for_principal', Get_role_grants_for_principal_args, :request => request)
    end

    def recv_get_role_grants_for_principal()
      result = receive_message(Get_role_grants_for_principal_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_role_grants_for_principal failed: unknown result')
    end

    def get_privilege_set(hiveObject, user_name, group_names)
      send_get_privilege_set(hiveObject, user_name, group_names)
      return recv_get_privilege_set()
    end

    def send_get_privilege_set(hiveObject, user_name, group_names)
      send_message('get_privilege_set', Get_privilege_set_args, :hiveObject => hiveObject, :user_name => user_name, :group_names => group_names)
    end

    def recv_get_privilege_set()
      result = receive_message(Get_privilege_set_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_privilege_set failed: unknown result')
    end

    def list_privileges(principal_name, principal_type, hiveObject)
      send_list_privileges(principal_name, principal_type, hiveObject)
      return recv_list_privileges()
    end

    def send_list_privileges(principal_name, principal_type, hiveObject)
      send_message('list_privileges', List_privileges_args, :principal_name => principal_name, :principal_type => principal_type, :hiveObject => hiveObject)
    end

    def recv_list_privileges()
      result = receive_message(List_privileges_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'list_privileges failed: unknown result')
    end

    def grant_privileges(privileges)
      send_grant_privileges(privileges)
      return recv_grant_privileges()
    end

    def send_grant_privileges(privileges)
      send_message('grant_privileges', Grant_privileges_args, :privileges => privileges)
    end

    def recv_grant_privileges()
      result = receive_message(Grant_privileges_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'grant_privileges failed: unknown result')
    end

    def revoke_privileges(privileges)
      send_revoke_privileges(privileges)
      return recv_revoke_privileges()
    end

    def send_revoke_privileges(privileges)
      send_message('revoke_privileges', Revoke_privileges_args, :privileges => privileges)
    end

    def recv_revoke_privileges()
      result = receive_message(Revoke_privileges_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'revoke_privileges failed: unknown result')
    end

    def grant_revoke_privileges(request)
      send_grant_revoke_privileges(request)
      return recv_grant_revoke_privileges()
    end

    def send_grant_revoke_privileges(request)
      send_message('grant_revoke_privileges', Grant_revoke_privileges_args, :request => request)
    end

    def recv_grant_revoke_privileges()
      result = receive_message(Grant_revoke_privileges_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'grant_revoke_privileges failed: unknown result')
    end

    def set_ugi(user_name, group_names)
      send_set_ugi(user_name, group_names)
      return recv_set_ugi()
    end

    def send_set_ugi(user_name, group_names)
      send_message('set_ugi', Set_ugi_args, :user_name => user_name, :group_names => group_names)
    end

    def recv_set_ugi()
      result = receive_message(Set_ugi_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'set_ugi failed: unknown result')
    end

    def get_delegation_token(token_owner, renewer_kerberos_principal_name)
      send_get_delegation_token(token_owner, renewer_kerberos_principal_name)
      return recv_get_delegation_token()
    end

    def send_get_delegation_token(token_owner, renewer_kerberos_principal_name)
      send_message('get_delegation_token', Get_delegation_token_args, :token_owner => token_owner, :renewer_kerberos_principal_name => renewer_kerberos_principal_name)
    end

    def recv_get_delegation_token()
      result = receive_message(Get_delegation_token_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_delegation_token failed: unknown result')
    end

    def renew_delegation_token(token_str_form)
      send_renew_delegation_token(token_str_form)
      return recv_renew_delegation_token()
    end

    def send_renew_delegation_token(token_str_form)
      send_message('renew_delegation_token', Renew_delegation_token_args, :token_str_form => token_str_form)
    end

    def recv_renew_delegation_token()
      result = receive_message(Renew_delegation_token_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'renew_delegation_token failed: unknown result')
    end

    def cancel_delegation_token(token_str_form)
      send_cancel_delegation_token(token_str_form)
      recv_cancel_delegation_token()
    end

    def send_cancel_delegation_token(token_str_form)
      send_message('cancel_delegation_token', Cancel_delegation_token_args, :token_str_form => token_str_form)
    end

    def recv_cancel_delegation_token()
      result = receive_message(Cancel_delegation_token_result)
      raise result.o1 unless result.o1.nil?
      return
    end

    def add_token(token_identifier, delegation_token)
      send_add_token(token_identifier, delegation_token)
      return recv_add_token()
    end

    def send_add_token(token_identifier, delegation_token)
      send_message('add_token', Add_token_args, :token_identifier => token_identifier, :delegation_token => delegation_token)
    end

    def recv_add_token()
      result = receive_message(Add_token_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_token failed: unknown result')
    end

    def remove_token(token_identifier)
      send_remove_token(token_identifier)
      return recv_remove_token()
    end

    def send_remove_token(token_identifier)
      send_message('remove_token', Remove_token_args, :token_identifier => token_identifier)
    end

    def recv_remove_token()
      result = receive_message(Remove_token_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'remove_token failed: unknown result')
    end

    def get_token(token_identifier)
      send_get_token(token_identifier)
      return recv_get_token()
    end

    def send_get_token(token_identifier)
      send_message('get_token', Get_token_args, :token_identifier => token_identifier)
    end

    def recv_get_token()
      result = receive_message(Get_token_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_token failed: unknown result')
    end

    def get_all_token_identifiers()
      send_get_all_token_identifiers()
      return recv_get_all_token_identifiers()
    end

    def send_get_all_token_identifiers()
      send_message('get_all_token_identifiers', Get_all_token_identifiers_args)
    end

    def recv_get_all_token_identifiers()
      result = receive_message(Get_all_token_identifiers_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_all_token_identifiers failed: unknown result')
    end

    def add_master_key(key)
      send_add_master_key(key)
      return recv_add_master_key()
    end

    def send_add_master_key(key)
      send_message('add_master_key', Add_master_key_args, :key => key)
    end

    def recv_add_master_key()
      result = receive_message(Add_master_key_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add_master_key failed: unknown result')
    end

    def update_master_key(seq_number, key)
      send_update_master_key(seq_number, key)
      recv_update_master_key()
    end

    def send_update_master_key(seq_number, key)
      send_message('update_master_key', Update_master_key_args, :seq_number => seq_number, :key => key)
    end

    def recv_update_master_key()
      result = receive_message(Update_master_key_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def remove_master_key(key_seq)
      send_remove_master_key(key_seq)
      return recv_remove_master_key()
    end

    def send_remove_master_key(key_seq)
      send_message('remove_master_key', Remove_master_key_args, :key_seq => key_seq)
    end

    def recv_remove_master_key()
      result = receive_message(Remove_master_key_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'remove_master_key failed: unknown result')
    end

    def get_master_keys()
      send_get_master_keys()
      return recv_get_master_keys()
    end

    def send_get_master_keys()
      send_message('get_master_keys', Get_master_keys_args)
    end

    def recv_get_master_keys()
      result = receive_message(Get_master_keys_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_master_keys failed: unknown result')
    end

    def get_open_txns()
      send_get_open_txns()
      return recv_get_open_txns()
    end

    def send_get_open_txns()
      send_message('get_open_txns', Get_open_txns_args)
    end

    def recv_get_open_txns()
      result = receive_message(Get_open_txns_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_open_txns failed: unknown result')
    end

    def get_open_txns_info()
      send_get_open_txns_info()
      return recv_get_open_txns_info()
    end

    def send_get_open_txns_info()
      send_message('get_open_txns_info', Get_open_txns_info_args)
    end

    def recv_get_open_txns_info()
      result = receive_message(Get_open_txns_info_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_open_txns_info failed: unknown result')
    end

    def open_txns(rqst)
      send_open_txns(rqst)
      return recv_open_txns()
    end

    def send_open_txns(rqst)
      send_message('open_txns', Open_txns_args, :rqst => rqst)
    end

    def recv_open_txns()
      result = receive_message(Open_txns_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'open_txns failed: unknown result')
    end

    def abort_txn(rqst)
      send_abort_txn(rqst)
      recv_abort_txn()
    end

    def send_abort_txn(rqst)
      send_message('abort_txn', Abort_txn_args, :rqst => rqst)
    end

    def recv_abort_txn()
      result = receive_message(Abort_txn_result)
      raise result.o1 unless result.o1.nil?
      return
    end

    def abort_txns(rqst)
      send_abort_txns(rqst)
      recv_abort_txns()
    end

    def send_abort_txns(rqst)
      send_message('abort_txns', Abort_txns_args, :rqst => rqst)
    end

    def recv_abort_txns()
      result = receive_message(Abort_txns_result)
      raise result.o1 unless result.o1.nil?
      return
    end

    def commit_txn(rqst)
      send_commit_txn(rqst)
      recv_commit_txn()
    end

    def send_commit_txn(rqst)
      send_message('commit_txn', Commit_txn_args, :rqst => rqst)
    end

    def recv_commit_txn()
      result = receive_message(Commit_txn_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def lock(rqst)
      send_lock(rqst)
      return recv_lock()
    end

    def send_lock(rqst)
      send_message('lock', Lock_args, :rqst => rqst)
    end

    def recv_lock()
      result = receive_message(Lock_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'lock failed: unknown result')
    end

    def check_lock(rqst)
      send_check_lock(rqst)
      return recv_check_lock()
    end

    def send_check_lock(rqst)
      send_message('check_lock', Check_lock_args, :rqst => rqst)
    end

    def recv_check_lock()
      result = receive_message(Check_lock_result)
      return result.success unless result.success.nil?
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'check_lock failed: unknown result')
    end

    def unlock(rqst)
      send_unlock(rqst)
      recv_unlock()
    end

    def send_unlock(rqst)
      send_message('unlock', Unlock_args, :rqst => rqst)
    end

    def recv_unlock()
      result = receive_message(Unlock_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def show_locks(rqst)
      send_show_locks(rqst)
      return recv_show_locks()
    end

    def send_show_locks(rqst)
      send_message('show_locks', Show_locks_args, :rqst => rqst)
    end

    def recv_show_locks()
      result = receive_message(Show_locks_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'show_locks failed: unknown result')
    end

    def heartbeat(ids)
      send_heartbeat(ids)
      recv_heartbeat()
    end

    def send_heartbeat(ids)
      send_message('heartbeat', Heartbeat_args, :ids => ids)
    end

    def recv_heartbeat()
      result = receive_message(Heartbeat_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      raise result.o3 unless result.o3.nil?
      return
    end

    def heartbeat_txn_range(txns)
      send_heartbeat_txn_range(txns)
      return recv_heartbeat_txn_range()
    end

    def send_heartbeat_txn_range(txns)
      send_message('heartbeat_txn_range', Heartbeat_txn_range_args, :txns => txns)
    end

    def recv_heartbeat_txn_range()
      result = receive_message(Heartbeat_txn_range_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'heartbeat_txn_range failed: unknown result')
    end

    def compact(rqst)
      send_compact(rqst)
      recv_compact()
    end

    def send_compact(rqst)
      send_message('compact', Compact_args, :rqst => rqst)
    end

    def recv_compact()
      result = receive_message(Compact_result)
      return
    end

    def compact2(rqst)
      send_compact2(rqst)
      return recv_compact2()
    end

    def send_compact2(rqst)
      send_message('compact2', Compact2_args, :rqst => rqst)
    end

    def recv_compact2()
      result = receive_message(Compact2_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'compact2 failed: unknown result')
    end

    def show_compact(rqst)
      send_show_compact(rqst)
      return recv_show_compact()
    end

    def send_show_compact(rqst)
      send_message('show_compact', Show_compact_args, :rqst => rqst)
    end

    def recv_show_compact()
      result = receive_message(Show_compact_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'show_compact failed: unknown result')
    end

    def add_dynamic_partitions(rqst)
      send_add_dynamic_partitions(rqst)
      recv_add_dynamic_partitions()
    end

    def send_add_dynamic_partitions(rqst)
      send_message('add_dynamic_partitions', Add_dynamic_partitions_args, :rqst => rqst)
    end

    def recv_add_dynamic_partitions()
      result = receive_message(Add_dynamic_partitions_result)
      raise result.o1 unless result.o1.nil?
      raise result.o2 unless result.o2.nil?
      return
    end

    def get_next_notification(rqst)
      send_get_next_notification(rqst)
      return recv_get_next_notification()
    end

    def send_get_next_notification(rqst)
      send_message('get_next_notification', Get_next_notification_args, :rqst => rqst)
    end

    def recv_get_next_notification()
      result = receive_message(Get_next_notification_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_next_notification failed: unknown result')
    end

    def get_current_notificationEventId()
      send_get_current_notificationEventId()
      return recv_get_current_notificationEventId()
    end

    def send_get_current_notificationEventId()
      send_message('get_current_notificationEventId', Get_current_notificationEventId_args)
    end

    def recv_get_current_notificationEventId()
      result = receive_message(Get_current_notificationEventId_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_current_notificationEventId failed: unknown result')
    end

    def fire_listener_event(rqst)
      send_fire_listener_event(rqst)
      return recv_fire_listener_event()
    end

    def send_fire_listener_event(rqst)
      send_message('fire_listener_event', Fire_listener_event_args, :rqst => rqst)
    end

    def recv_fire_listener_event()
      result = receive_message(Fire_listener_event_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'fire_listener_event failed: unknown result')
    end

    def flushCache()
      send_flushCache()
      recv_flushCache()
    end

    def send_flushCache()
      send_message('flushCache', FlushCache_args)
    end

    def recv_flushCache()
      result = receive_message(FlushCache_result)
      return
    end

    def get_file_metadata_by_expr(req)
      send_get_file_metadata_by_expr(req)
      return recv_get_file_metadata_by_expr()
    end

    def send_get_file_metadata_by_expr(req)
      send_message('get_file_metadata_by_expr', Get_file_metadata_by_expr_args, :req => req)
    end

    def recv_get_file_metadata_by_expr()
      result = receive_message(Get_file_metadata_by_expr_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_file_metadata_by_expr failed: unknown result')
    end

    def get_file_metadata(req)
      send_get_file_metadata(req)
      return recv_get_file_metadata()
    end

    def send_get_file_metadata(req)
      send_message('get_file_metadata', Get_file_metadata_args, :req => req)
    end

    def recv_get_file_metadata()
      result = receive_message(Get_file_metadata_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'get_file_metadata failed: unknown result')
    end

    def put_file_metadata(req)
      send_put_file_metadata(req)
      return recv_put_file_metadata()
    end

    def send_put_file_metadata(req)
      send_message('put_file_metadata', Put_file_metadata_args, :req => req)
    end

    def recv_put_file_metadata()
      result = receive_message(Put_file_metadata_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'put_file_metadata failed: unknown result')
    end

    def clear_file_metadata(req)
      send_clear_file_metadata(req)
      return recv_clear_file_metadata()
    end

    def send_clear_file_metadata(req)
      send_message('clear_file_metadata', Clear_file_metadata_args, :req => req)
    end

    def recv_clear_file_metadata()
      result = receive_message(Clear_file_metadata_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'clear_file_metadata failed: unknown result')
    end

    def cache_file_metadata(req)
      send_cache_file_metadata(req)
      return recv_cache_file_metadata()
    end

    def send_cache_file_metadata(req)
      send_message('cache_file_metadata', Cache_file_metadata_args, :req => req)
    end

    def recv_cache_file_metadata()
      result = receive_message(Cache_file_metadata_result)
      return result.success unless result.success.nil?
      raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'cache_file_metadata failed: unknown result')
    end

  end

  class Processor < ::FacebookService::Processor 
    include ::Thrift::Processor

    def process_getMetaConf(seqid, iprot, oprot)
      args = read_args(iprot, GetMetaConf_args)
      result = GetMetaConf_result.new()
      begin
        result.success = @handler.getMetaConf(args.key)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'getMetaConf', seqid)
    end

    def process_setMetaConf(seqid, iprot, oprot)
      args = read_args(iprot, SetMetaConf_args)
      result = SetMetaConf_result.new()
      begin
        @handler.setMetaConf(args.key, args.value)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'setMetaConf', seqid)
    end

    def process_create_database(seqid, iprot, oprot)
      args = read_args(iprot, Create_database_args)
      result = Create_database_result.new()
      begin
        @handler.create_database(args.database)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'create_database', seqid)
    end

    def process_get_database(seqid, iprot, oprot)
      args = read_args(iprot, Get_database_args)
      result = Get_database_result.new()
      begin
        result.success = @handler.get_database(args.name)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_database', seqid)
    end

    def process_drop_database(seqid, iprot, oprot)
      args = read_args(iprot, Drop_database_args)
      result = Drop_database_result.new()
      begin
        @handler.drop_database(args.name, args.deleteData, args.cascade)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::InvalidOperationException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'drop_database', seqid)
    end

    def process_get_databases(seqid, iprot, oprot)
      args = read_args(iprot, Get_databases_args)
      result = Get_databases_result.new()
      begin
        result.success = @handler.get_databases(args.pattern)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_databases', seqid)
    end

    def process_get_all_databases(seqid, iprot, oprot)
      args = read_args(iprot, Get_all_databases_args)
      result = Get_all_databases_result.new()
      begin
        result.success = @handler.get_all_databases()
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_all_databases', seqid)
    end

    def process_alter_database(seqid, iprot, oprot)
      args = read_args(iprot, Alter_database_args)
      result = Alter_database_result.new()
      begin
        @handler.alter_database(args.dbname, args.db)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_database', seqid)
    end

    def process_get_type(seqid, iprot, oprot)
      args = read_args(iprot, Get_type_args)
      result = Get_type_result.new()
      begin
        result.success = @handler.get_type(args.name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_type', seqid)
    end

    def process_create_type(seqid, iprot, oprot)
      args = read_args(iprot, Create_type_args)
      result = Create_type_result.new()
      begin
        result.success = @handler.create_type(args.type)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'create_type', seqid)
    end

    def process_drop_type(seqid, iprot, oprot)
      args = read_args(iprot, Drop_type_args)
      result = Drop_type_result.new()
      begin
        result.success = @handler.drop_type(args.type)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_type', seqid)
    end

    def process_get_type_all(seqid, iprot, oprot)
      args = read_args(iprot, Get_type_all_args)
      result = Get_type_all_result.new()
      begin
        result.success = @handler.get_type_all(args.name)
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_type_all', seqid)
    end

    def process_get_fields(seqid, iprot, oprot)
      args = read_args(iprot, Get_fields_args)
      result = Get_fields_result.new()
      begin
        result.success = @handler.get_fields(args.db_name, args.table_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::UnknownTableException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_fields', seqid)
    end

    def process_get_fields_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Get_fields_with_environment_context_args)
      result = Get_fields_with_environment_context_result.new()
      begin
        result.success = @handler.get_fields_with_environment_context(args.db_name, args.table_name, args.environment_context)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::UnknownTableException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_fields_with_environment_context', seqid)
    end

    def process_get_schema(seqid, iprot, oprot)
      args = read_args(iprot, Get_schema_args)
      result = Get_schema_result.new()
      begin
        result.success = @handler.get_schema(args.db_name, args.table_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::UnknownTableException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_schema', seqid)
    end

    def process_get_schema_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Get_schema_with_environment_context_args)
      result = Get_schema_with_environment_context_result.new()
      begin
        result.success = @handler.get_schema_with_environment_context(args.db_name, args.table_name, args.environment_context)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::UnknownTableException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_schema_with_environment_context', seqid)
    end

    def process_create_table(seqid, iprot, oprot)
      args = read_args(iprot, Create_table_args)
      result = Create_table_result.new()
      begin
        @handler.create_table(args.tbl)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::NoSuchObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'create_table', seqid)
    end

    def process_create_table_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Create_table_with_environment_context_args)
      result = Create_table_with_environment_context_result.new()
      begin
        @handler.create_table_with_environment_context(args.tbl, args.environment_context)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::NoSuchObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'create_table_with_environment_context', seqid)
    end

    def process_create_table_with_constraints(seqid, iprot, oprot)
      args = read_args(iprot, Create_table_with_constraints_args)
      result = Create_table_with_constraints_result.new()
      begin
        @handler.create_table_with_constraints(args.tbl, args.primaryKeys, args.foreignKeys)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::NoSuchObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'create_table_with_constraints', seqid)
    end

    def process_drop_constraint(seqid, iprot, oprot)
      args = read_args(iprot, Drop_constraint_args)
      result = Drop_constraint_result.new()
      begin
        @handler.drop_constraint(args.req)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'drop_constraint', seqid)
    end

    def process_add_primary_key(seqid, iprot, oprot)
      args = read_args(iprot, Add_primary_key_args)
      result = Add_primary_key_result.new()
      begin
        @handler.add_primary_key(args.req)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'add_primary_key', seqid)
    end

    def process_add_foreign_key(seqid, iprot, oprot)
      args = read_args(iprot, Add_foreign_key_args)
      result = Add_foreign_key_result.new()
      begin
        @handler.add_foreign_key(args.req)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'add_foreign_key', seqid)
    end

    def process_drop_table(seqid, iprot, oprot)
      args = read_args(iprot, Drop_table_args)
      result = Drop_table_result.new()
      begin
        @handler.drop_table(args.dbname, args.name, args.deleteData)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'drop_table', seqid)
    end

    def process_drop_table_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Drop_table_with_environment_context_args)
      result = Drop_table_with_environment_context_result.new()
      begin
        @handler.drop_table_with_environment_context(args.dbname, args.name, args.deleteData, args.environment_context)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'drop_table_with_environment_context', seqid)
    end

    def process_get_tables(seqid, iprot, oprot)
      args = read_args(iprot, Get_tables_args)
      result = Get_tables_result.new()
      begin
        result.success = @handler.get_tables(args.db_name, args.pattern)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_tables', seqid)
    end

    def process_get_tables_by_type(seqid, iprot, oprot)
      args = read_args(iprot, Get_tables_by_type_args)
      result = Get_tables_by_type_result.new()
      begin
        result.success = @handler.get_tables_by_type(args.db_name, args.pattern, args.tableType)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_tables_by_type', seqid)
    end

    def process_get_table_meta(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_meta_args)
      result = Get_table_meta_result.new()
      begin
        result.success = @handler.get_table_meta(args.db_patterns, args.tbl_patterns, args.tbl_types)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_table_meta', seqid)
    end

    def process_get_all_tables(seqid, iprot, oprot)
      args = read_args(iprot, Get_all_tables_args)
      result = Get_all_tables_result.new()
      begin
        result.success = @handler.get_all_tables(args.db_name)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_all_tables', seqid)
    end

    def process_get_table(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_args)
      result = Get_table_result.new()
      begin
        result.success = @handler.get_table(args.dbname, args.tbl_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_table', seqid)
    end

    def process_get_table_objects_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_objects_by_name_args)
      result = Get_table_objects_by_name_result.new()
      result.success = @handler.get_table_objects_by_name(args.dbname, args.tbl_names)
      write_result(result, oprot, 'get_table_objects_by_name', seqid)
    end

    def process_get_table_req(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_req_args)
      result = Get_table_req_result.new()
      begin
        result.success = @handler.get_table_req(args.req)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_table_req', seqid)
    end

    def process_get_table_objects_by_name_req(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_objects_by_name_req_args)
      result = Get_table_objects_by_name_req_result.new()
      begin
        result.success = @handler.get_table_objects_by_name_req(args.req)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::InvalidOperationException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_table_objects_by_name_req', seqid)
    end

    def process_get_table_names_by_filter(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_names_by_filter_args)
      result = Get_table_names_by_filter_result.new()
      begin
        result.success = @handler.get_table_names_by_filter(args.dbname, args.filter, args.max_tables)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::InvalidOperationException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'get_table_names_by_filter', seqid)
    end

    def process_alter_table(seqid, iprot, oprot)
      args = read_args(iprot, Alter_table_args)
      result = Alter_table_result.new()
      begin
        @handler.alter_table(args.dbname, args.tbl_name, args.new_tbl)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_table', seqid)
    end

    def process_alter_table_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Alter_table_with_environment_context_args)
      result = Alter_table_with_environment_context_result.new()
      begin
        @handler.alter_table_with_environment_context(args.dbname, args.tbl_name, args.new_tbl, args.environment_context)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_table_with_environment_context', seqid)
    end

    def process_alter_table_with_cascade(seqid, iprot, oprot)
      args = read_args(iprot, Alter_table_with_cascade_args)
      result = Alter_table_with_cascade_result.new()
      begin
        @handler.alter_table_with_cascade(args.dbname, args.tbl_name, args.new_tbl, args.cascade)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_table_with_cascade', seqid)
    end

    def process_add_partition(seqid, iprot, oprot)
      args = read_args(iprot, Add_partition_args)
      result = Add_partition_result.new()
      begin
        result.success = @handler.add_partition(args.new_part)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_partition', seqid)
    end

    def process_add_partition_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Add_partition_with_environment_context_args)
      result = Add_partition_with_environment_context_result.new()
      begin
        result.success = @handler.add_partition_with_environment_context(args.new_part, args.environment_context)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_partition_with_environment_context', seqid)
    end

    def process_add_partitions(seqid, iprot, oprot)
      args = read_args(iprot, Add_partitions_args)
      result = Add_partitions_result.new()
      begin
        result.success = @handler.add_partitions(args.new_parts)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_partitions', seqid)
    end

    def process_add_partitions_pspec(seqid, iprot, oprot)
      args = read_args(iprot, Add_partitions_pspec_args)
      result = Add_partitions_pspec_result.new()
      begin
        result.success = @handler.add_partitions_pspec(args.new_parts)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_partitions_pspec', seqid)
    end

    def process_append_partition(seqid, iprot, oprot)
      args = read_args(iprot, Append_partition_args)
      result = Append_partition_result.new()
      begin
        result.success = @handler.append_partition(args.db_name, args.tbl_name, args.part_vals)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'append_partition', seqid)
    end

    def process_add_partitions_req(seqid, iprot, oprot)
      args = read_args(iprot, Add_partitions_req_args)
      result = Add_partitions_req_result.new()
      begin
        result.success = @handler.add_partitions_req(args.request)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_partitions_req', seqid)
    end

    def process_append_partition_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Append_partition_with_environment_context_args)
      result = Append_partition_with_environment_context_result.new()
      begin
        result.success = @handler.append_partition_with_environment_context(args.db_name, args.tbl_name, args.part_vals, args.environment_context)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'append_partition_with_environment_context', seqid)
    end

    def process_append_partition_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Append_partition_by_name_args)
      result = Append_partition_by_name_result.new()
      begin
        result.success = @handler.append_partition_by_name(args.db_name, args.tbl_name, args.part_name)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'append_partition_by_name', seqid)
    end

    def process_append_partition_by_name_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Append_partition_by_name_with_environment_context_args)
      result = Append_partition_by_name_with_environment_context_result.new()
      begin
        result.success = @handler.append_partition_by_name_with_environment_context(args.db_name, args.tbl_name, args.part_name, args.environment_context)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'append_partition_by_name_with_environment_context', seqid)
    end

    def process_drop_partition(seqid, iprot, oprot)
      args = read_args(iprot, Drop_partition_args)
      result = Drop_partition_result.new()
      begin
        result.success = @handler.drop_partition(args.db_name, args.tbl_name, args.part_vals, args.deleteData)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_partition', seqid)
    end

    def process_drop_partition_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Drop_partition_with_environment_context_args)
      result = Drop_partition_with_environment_context_result.new()
      begin
        result.success = @handler.drop_partition_with_environment_context(args.db_name, args.tbl_name, args.part_vals, args.deleteData, args.environment_context)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_partition_with_environment_context', seqid)
    end

    def process_drop_partition_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Drop_partition_by_name_args)
      result = Drop_partition_by_name_result.new()
      begin
        result.success = @handler.drop_partition_by_name(args.db_name, args.tbl_name, args.part_name, args.deleteData)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_partition_by_name', seqid)
    end

    def process_drop_partition_by_name_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Drop_partition_by_name_with_environment_context_args)
      result = Drop_partition_by_name_with_environment_context_result.new()
      begin
        result.success = @handler.drop_partition_by_name_with_environment_context(args.db_name, args.tbl_name, args.part_name, args.deleteData, args.environment_context)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_partition_by_name_with_environment_context', seqid)
    end

    def process_drop_partitions_req(seqid, iprot, oprot)
      args = read_args(iprot, Drop_partitions_req_args)
      result = Drop_partitions_req_result.new()
      begin
        result.success = @handler.drop_partitions_req(args.req)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_partitions_req', seqid)
    end

    def process_get_partition(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_args)
      result = Get_partition_result.new()
      begin
        result.success = @handler.get_partition(args.db_name, args.tbl_name, args.part_vals)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partition', seqid)
    end

    def process_exchange_partition(seqid, iprot, oprot)
      args = read_args(iprot, Exchange_partition_args)
      result = Exchange_partition_result.new()
      begin
        result.success = @handler.exchange_partition(args.partitionSpecs, args.source_db, args.source_table_name, args.dest_db, args.dest_table_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      rescue ::InvalidObjectException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'exchange_partition', seqid)
    end

    def process_exchange_partitions(seqid, iprot, oprot)
      args = read_args(iprot, Exchange_partitions_args)
      result = Exchange_partitions_result.new()
      begin
        result.success = @handler.exchange_partitions(args.partitionSpecs, args.source_db, args.source_table_name, args.dest_db, args.dest_table_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      rescue ::InvalidObjectException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'exchange_partitions', seqid)
    end

    def process_get_partition_with_auth(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_with_auth_args)
      result = Get_partition_with_auth_result.new()
      begin
        result.success = @handler.get_partition_with_auth(args.db_name, args.tbl_name, args.part_vals, args.user_name, args.group_names)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partition_with_auth', seqid)
    end

    def process_get_partition_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_by_name_args)
      result = Get_partition_by_name_result.new()
      begin
        result.success = @handler.get_partition_by_name(args.db_name, args.tbl_name, args.part_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partition_by_name', seqid)
    end

    def process_get_partitions(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_args)
      result = Get_partitions_result.new()
      begin
        result.success = @handler.get_partitions(args.db_name, args.tbl_name, args.max_parts)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions', seqid)
    end

    def process_get_partitions_with_auth(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_with_auth_args)
      result = Get_partitions_with_auth_result.new()
      begin
        result.success = @handler.get_partitions_with_auth(args.db_name, args.tbl_name, args.max_parts, args.user_name, args.group_names)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_with_auth', seqid)
    end

    def process_get_partitions_pspec(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_pspec_args)
      result = Get_partitions_pspec_result.new()
      begin
        result.success = @handler.get_partitions_pspec(args.db_name, args.tbl_name, args.max_parts)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_pspec', seqid)
    end

    def process_get_partition_names(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_names_args)
      result = Get_partition_names_result.new()
      begin
        result.success = @handler.get_partition_names(args.db_name, args.tbl_name, args.max_parts)
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partition_names', seqid)
    end

    def process_get_partitions_ps(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_ps_args)
      result = Get_partitions_ps_result.new()
      begin
        result.success = @handler.get_partitions_ps(args.db_name, args.tbl_name, args.part_vals, args.max_parts)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_ps', seqid)
    end

    def process_get_partitions_ps_with_auth(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_ps_with_auth_args)
      result = Get_partitions_ps_with_auth_result.new()
      begin
        result.success = @handler.get_partitions_ps_with_auth(args.db_name, args.tbl_name, args.part_vals, args.max_parts, args.user_name, args.group_names)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_ps_with_auth', seqid)
    end

    def process_get_partition_names_ps(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_names_ps_args)
      result = Get_partition_names_ps_result.new()
      begin
        result.success = @handler.get_partition_names_ps(args.db_name, args.tbl_name, args.part_vals, args.max_parts)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partition_names_ps', seqid)
    end

    def process_get_partitions_by_filter(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_by_filter_args)
      result = Get_partitions_by_filter_result.new()
      begin
        result.success = @handler.get_partitions_by_filter(args.db_name, args.tbl_name, args.filter, args.max_parts)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_by_filter', seqid)
    end

    def process_get_part_specs_by_filter(seqid, iprot, oprot)
      args = read_args(iprot, Get_part_specs_by_filter_args)
      result = Get_part_specs_by_filter_result.new()
      begin
        result.success = @handler.get_part_specs_by_filter(args.db_name, args.tbl_name, args.filter, args.max_parts)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_part_specs_by_filter', seqid)
    end

    def process_get_partitions_by_expr(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_by_expr_args)
      result = Get_partitions_by_expr_result.new()
      begin
        result.success = @handler.get_partitions_by_expr(args.req)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_by_expr', seqid)
    end

    def process_get_num_partitions_by_filter(seqid, iprot, oprot)
      args = read_args(iprot, Get_num_partitions_by_filter_args)
      result = Get_num_partitions_by_filter_result.new()
      begin
        result.success = @handler.get_num_partitions_by_filter(args.db_name, args.tbl_name, args.filter)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_num_partitions_by_filter', seqid)
    end

    def process_get_partitions_by_names(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_by_names_args)
      result = Get_partitions_by_names_result.new()
      begin
        result.success = @handler.get_partitions_by_names(args.db_name, args.tbl_name, args.names)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_by_names', seqid)
    end

    def process_alter_partition(seqid, iprot, oprot)
      args = read_args(iprot, Alter_partition_args)
      result = Alter_partition_result.new()
      begin
        @handler.alter_partition(args.db_name, args.tbl_name, args.new_part)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_partition', seqid)
    end

    def process_alter_partitions(seqid, iprot, oprot)
      args = read_args(iprot, Alter_partitions_args)
      result = Alter_partitions_result.new()
      begin
        @handler.alter_partitions(args.db_name, args.tbl_name, args.new_parts)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_partitions', seqid)
    end

    def process_alter_partitions_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Alter_partitions_with_environment_context_args)
      result = Alter_partitions_with_environment_context_result.new()
      begin
        @handler.alter_partitions_with_environment_context(args.db_name, args.tbl_name, args.new_parts, args.environment_context)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_partitions_with_environment_context', seqid)
    end

    def process_alter_partition_with_environment_context(seqid, iprot, oprot)
      args = read_args(iprot, Alter_partition_with_environment_context_args)
      result = Alter_partition_with_environment_context_result.new()
      begin
        @handler.alter_partition_with_environment_context(args.db_name, args.tbl_name, args.new_part, args.environment_context)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_partition_with_environment_context', seqid)
    end

    def process_rename_partition(seqid, iprot, oprot)
      args = read_args(iprot, Rename_partition_args)
      result = Rename_partition_result.new()
      begin
        @handler.rename_partition(args.db_name, args.tbl_name, args.part_vals, args.new_part)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'rename_partition', seqid)
    end

    def process_partition_name_has_valid_characters(seqid, iprot, oprot)
      args = read_args(iprot, Partition_name_has_valid_characters_args)
      result = Partition_name_has_valid_characters_result.new()
      begin
        result.success = @handler.partition_name_has_valid_characters(args.part_vals, args.throw_exception)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'partition_name_has_valid_characters', seqid)
    end

    def process_get_config_value(seqid, iprot, oprot)
      args = read_args(iprot, Get_config_value_args)
      result = Get_config_value_result.new()
      begin
        result.success = @handler.get_config_value(args.name, args.defaultValue)
      rescue ::ConfigValSecurityException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_config_value', seqid)
    end

    def process_partition_name_to_vals(seqid, iprot, oprot)
      args = read_args(iprot, Partition_name_to_vals_args)
      result = Partition_name_to_vals_result.new()
      begin
        result.success = @handler.partition_name_to_vals(args.part_name)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'partition_name_to_vals', seqid)
    end

    def process_partition_name_to_spec(seqid, iprot, oprot)
      args = read_args(iprot, Partition_name_to_spec_args)
      result = Partition_name_to_spec_result.new()
      begin
        result.success = @handler.partition_name_to_spec(args.part_name)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'partition_name_to_spec', seqid)
    end

    def process_markPartitionForEvent(seqid, iprot, oprot)
      args = read_args(iprot, MarkPartitionForEvent_args)
      result = MarkPartitionForEvent_result.new()
      begin
        @handler.markPartitionForEvent(args.db_name, args.tbl_name, args.part_vals, args.eventType)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      rescue ::UnknownTableException => o4
        result.o4 = o4
      rescue ::UnknownPartitionException => o5
        result.o5 = o5
      rescue ::InvalidPartitionException => o6
        result.o6 = o6
      end
      write_result(result, oprot, 'markPartitionForEvent', seqid)
    end

    def process_isPartitionMarkedForEvent(seqid, iprot, oprot)
      args = read_args(iprot, IsPartitionMarkedForEvent_args)
      result = IsPartitionMarkedForEvent_result.new()
      begin
        result.success = @handler.isPartitionMarkedForEvent(args.db_name, args.tbl_name, args.part_vals, args.eventType)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      rescue ::UnknownDBException => o3
        result.o3 = o3
      rescue ::UnknownTableException => o4
        result.o4 = o4
      rescue ::UnknownPartitionException => o5
        result.o5 = o5
      rescue ::InvalidPartitionException => o6
        result.o6 = o6
      end
      write_result(result, oprot, 'isPartitionMarkedForEvent', seqid)
    end

    def process_add_index(seqid, iprot, oprot)
      args = read_args(iprot, Add_index_args)
      result = Add_index_result.new()
      begin
        result.success = @handler.add_index(args.new_index, args.index_table)
      rescue ::InvalidObjectException => o1
        result.o1 = o1
      rescue ::AlreadyExistsException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'add_index', seqid)
    end

    def process_alter_index(seqid, iprot, oprot)
      args = read_args(iprot, Alter_index_args)
      result = Alter_index_result.new()
      begin
        @handler.alter_index(args.dbname, args.base_tbl_name, args.idx_name, args.new_idx)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_index', seqid)
    end

    def process_drop_index_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Drop_index_by_name_args)
      result = Drop_index_by_name_result.new()
      begin
        result.success = @handler.drop_index_by_name(args.db_name, args.tbl_name, args.index_name, args.deleteData)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'drop_index_by_name', seqid)
    end

    def process_get_index_by_name(seqid, iprot, oprot)
      args = read_args(iprot, Get_index_by_name_args)
      result = Get_index_by_name_result.new()
      begin
        result.success = @handler.get_index_by_name(args.db_name, args.tbl_name, args.index_name)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_index_by_name', seqid)
    end

    def process_get_indexes(seqid, iprot, oprot)
      args = read_args(iprot, Get_indexes_args)
      result = Get_indexes_result.new()
      begin
        result.success = @handler.get_indexes(args.db_name, args.tbl_name, args.max_indexes)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_indexes', seqid)
    end

    def process_get_index_names(seqid, iprot, oprot)
      args = read_args(iprot, Get_index_names_args)
      result = Get_index_names_result.new()
      begin
        result.success = @handler.get_index_names(args.db_name, args.tbl_name, args.max_indexes)
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_index_names', seqid)
    end

    def process_get_primary_keys(seqid, iprot, oprot)
      args = read_args(iprot, Get_primary_keys_args)
      result = Get_primary_keys_result.new()
      begin
        result.success = @handler.get_primary_keys(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_primary_keys', seqid)
    end

    def process_get_foreign_keys(seqid, iprot, oprot)
      args = read_args(iprot, Get_foreign_keys_args)
      result = Get_foreign_keys_result.new()
      begin
        result.success = @handler.get_foreign_keys(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_foreign_keys', seqid)
    end

    def process_update_table_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Update_table_column_statistics_args)
      result = Update_table_column_statistics_result.new()
      begin
        result.success = @handler.update_table_column_statistics(args.stats_obj)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'update_table_column_statistics', seqid)
    end

    def process_update_partition_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Update_partition_column_statistics_args)
      result = Update_partition_column_statistics_result.new()
      begin
        result.success = @handler.update_partition_column_statistics(args.stats_obj)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'update_partition_column_statistics', seqid)
    end

    def process_get_table_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_column_statistics_args)
      result = Get_table_column_statistics_result.new()
      begin
        result.success = @handler.get_table_column_statistics(args.db_name, args.tbl_name, args.col_name)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      rescue ::InvalidInputException => o3
        result.o3 = o3
      rescue ::InvalidObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'get_table_column_statistics', seqid)
    end

    def process_get_partition_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Get_partition_column_statistics_args)
      result = Get_partition_column_statistics_result.new()
      begin
        result.success = @handler.get_partition_column_statistics(args.db_name, args.tbl_name, args.part_name, args.col_name)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      rescue ::InvalidInputException => o3
        result.o3 = o3
      rescue ::InvalidObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'get_partition_column_statistics', seqid)
    end

    def process_get_table_statistics_req(seqid, iprot, oprot)
      args = read_args(iprot, Get_table_statistics_req_args)
      result = Get_table_statistics_req_result.new()
      begin
        result.success = @handler.get_table_statistics_req(args.request)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_table_statistics_req', seqid)
    end

    def process_get_partitions_statistics_req(seqid, iprot, oprot)
      args = read_args(iprot, Get_partitions_statistics_req_args)
      result = Get_partitions_statistics_req_result.new()
      begin
        result.success = @handler.get_partitions_statistics_req(args.request)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_partitions_statistics_req', seqid)
    end

    def process_get_aggr_stats_for(seqid, iprot, oprot)
      args = read_args(iprot, Get_aggr_stats_for_args)
      result = Get_aggr_stats_for_result.new()
      begin
        result.success = @handler.get_aggr_stats_for(args.request)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_aggr_stats_for', seqid)
    end

    def process_set_aggr_stats_for(seqid, iprot, oprot)
      args = read_args(iprot, Set_aggr_stats_for_args)
      result = Set_aggr_stats_for_result.new()
      begin
        result.success = @handler.set_aggr_stats_for(args.request)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'set_aggr_stats_for', seqid)
    end

    def process_delete_partition_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Delete_partition_column_statistics_args)
      result = Delete_partition_column_statistics_result.new()
      begin
        result.success = @handler.delete_partition_column_statistics(args.db_name, args.tbl_name, args.part_name, args.col_name)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      rescue ::InvalidObjectException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'delete_partition_column_statistics', seqid)
    end

    def process_delete_table_column_statistics(seqid, iprot, oprot)
      args = read_args(iprot, Delete_table_column_statistics_args)
      result = Delete_table_column_statistics_result.new()
      begin
        result.success = @handler.delete_table_column_statistics(args.db_name, args.tbl_name, args.col_name)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      rescue ::InvalidObjectException => o3
        result.o3 = o3
      rescue ::InvalidInputException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'delete_table_column_statistics', seqid)
    end

    def process_create_function(seqid, iprot, oprot)
      args = read_args(iprot, Create_function_args)
      result = Create_function_result.new()
      begin
        @handler.create_function(args.func)
      rescue ::AlreadyExistsException => o1
        result.o1 = o1
      rescue ::InvalidObjectException => o2
        result.o2 = o2
      rescue ::MetaException => o3
        result.o3 = o3
      rescue ::NoSuchObjectException => o4
        result.o4 = o4
      end
      write_result(result, oprot, 'create_function', seqid)
    end

    def process_drop_function(seqid, iprot, oprot)
      args = read_args(iprot, Drop_function_args)
      result = Drop_function_result.new()
      begin
        @handler.drop_function(args.dbName, args.funcName)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'drop_function', seqid)
    end

    def process_alter_function(seqid, iprot, oprot)
      args = read_args(iprot, Alter_function_args)
      result = Alter_function_result.new()
      begin
        @handler.alter_function(args.dbName, args.funcName, args.newFunc)
      rescue ::InvalidOperationException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'alter_function', seqid)
    end

    def process_get_functions(seqid, iprot, oprot)
      args = read_args(iprot, Get_functions_args)
      result = Get_functions_result.new()
      begin
        result.success = @handler.get_functions(args.dbName, args.pattern)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_functions', seqid)
    end

    def process_get_function(seqid, iprot, oprot)
      args = read_args(iprot, Get_function_args)
      result = Get_function_result.new()
      begin
        result.success = @handler.get_function(args.dbName, args.funcName)
      rescue ::MetaException => o1
        result.o1 = o1
      rescue ::NoSuchObjectException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'get_function', seqid)
    end

    def process_get_all_functions(seqid, iprot, oprot)
      args = read_args(iprot, Get_all_functions_args)
      result = Get_all_functions_result.new()
      begin
        result.success = @handler.get_all_functions()
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_all_functions', seqid)
    end

    def process_create_role(seqid, iprot, oprot)
      args = read_args(iprot, Create_role_args)
      result = Create_role_result.new()
      begin
        result.success = @handler.create_role(args.role)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'create_role', seqid)
    end

    def process_drop_role(seqid, iprot, oprot)
      args = read_args(iprot, Drop_role_args)
      result = Drop_role_result.new()
      begin
        result.success = @handler.drop_role(args.role_name)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'drop_role', seqid)
    end

    def process_get_role_names(seqid, iprot, oprot)
      args = read_args(iprot, Get_role_names_args)
      result = Get_role_names_result.new()
      begin
        result.success = @handler.get_role_names()
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_role_names', seqid)
    end

    def process_grant_role(seqid, iprot, oprot)
      args = read_args(iprot, Grant_role_args)
      result = Grant_role_result.new()
      begin
        result.success = @handler.grant_role(args.role_name, args.principal_name, args.principal_type, args.grantor, args.grantorType, args.grant_option)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'grant_role', seqid)
    end

    def process_revoke_role(seqid, iprot, oprot)
      args = read_args(iprot, Revoke_role_args)
      result = Revoke_role_result.new()
      begin
        result.success = @handler.revoke_role(args.role_name, args.principal_name, args.principal_type)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'revoke_role', seqid)
    end

    def process_list_roles(seqid, iprot, oprot)
      args = read_args(iprot, List_roles_args)
      result = List_roles_result.new()
      begin
        result.success = @handler.list_roles(args.principal_name, args.principal_type)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'list_roles', seqid)
    end

    def process_grant_revoke_role(seqid, iprot, oprot)
      args = read_args(iprot, Grant_revoke_role_args)
      result = Grant_revoke_role_result.new()
      begin
        result.success = @handler.grant_revoke_role(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'grant_revoke_role', seqid)
    end

    def process_get_principals_in_role(seqid, iprot, oprot)
      args = read_args(iprot, Get_principals_in_role_args)
      result = Get_principals_in_role_result.new()
      begin
        result.success = @handler.get_principals_in_role(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_principals_in_role', seqid)
    end

    def process_get_role_grants_for_principal(seqid, iprot, oprot)
      args = read_args(iprot, Get_role_grants_for_principal_args)
      result = Get_role_grants_for_principal_result.new()
      begin
        result.success = @handler.get_role_grants_for_principal(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_role_grants_for_principal', seqid)
    end

    def process_get_privilege_set(seqid, iprot, oprot)
      args = read_args(iprot, Get_privilege_set_args)
      result = Get_privilege_set_result.new()
      begin
        result.success = @handler.get_privilege_set(args.hiveObject, args.user_name, args.group_names)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_privilege_set', seqid)
    end

    def process_list_privileges(seqid, iprot, oprot)
      args = read_args(iprot, List_privileges_args)
      result = List_privileges_result.new()
      begin
        result.success = @handler.list_privileges(args.principal_name, args.principal_type, args.hiveObject)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'list_privileges', seqid)
    end

    def process_grant_privileges(seqid, iprot, oprot)
      args = read_args(iprot, Grant_privileges_args)
      result = Grant_privileges_result.new()
      begin
        result.success = @handler.grant_privileges(args.privileges)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'grant_privileges', seqid)
    end

    def process_revoke_privileges(seqid, iprot, oprot)
      args = read_args(iprot, Revoke_privileges_args)
      result = Revoke_privileges_result.new()
      begin
        result.success = @handler.revoke_privileges(args.privileges)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'revoke_privileges', seqid)
    end

    def process_grant_revoke_privileges(seqid, iprot, oprot)
      args = read_args(iprot, Grant_revoke_privileges_args)
      result = Grant_revoke_privileges_result.new()
      begin
        result.success = @handler.grant_revoke_privileges(args.request)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'grant_revoke_privileges', seqid)
    end

    def process_set_ugi(seqid, iprot, oprot)
      args = read_args(iprot, Set_ugi_args)
      result = Set_ugi_result.new()
      begin
        result.success = @handler.set_ugi(args.user_name, args.group_names)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'set_ugi', seqid)
    end

    def process_get_delegation_token(seqid, iprot, oprot)
      args = read_args(iprot, Get_delegation_token_args)
      result = Get_delegation_token_result.new()
      begin
        result.success = @handler.get_delegation_token(args.token_owner, args.renewer_kerberos_principal_name)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'get_delegation_token', seqid)
    end

    def process_renew_delegation_token(seqid, iprot, oprot)
      args = read_args(iprot, Renew_delegation_token_args)
      result = Renew_delegation_token_result.new()
      begin
        result.success = @handler.renew_delegation_token(args.token_str_form)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'renew_delegation_token', seqid)
    end

    def process_cancel_delegation_token(seqid, iprot, oprot)
      args = read_args(iprot, Cancel_delegation_token_args)
      result = Cancel_delegation_token_result.new()
      begin
        @handler.cancel_delegation_token(args.token_str_form)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'cancel_delegation_token', seqid)
    end

    def process_add_token(seqid, iprot, oprot)
      args = read_args(iprot, Add_token_args)
      result = Add_token_result.new()
      result.success = @handler.add_token(args.token_identifier, args.delegation_token)
      write_result(result, oprot, 'add_token', seqid)
    end

    def process_remove_token(seqid, iprot, oprot)
      args = read_args(iprot, Remove_token_args)
      result = Remove_token_result.new()
      result.success = @handler.remove_token(args.token_identifier)
      write_result(result, oprot, 'remove_token', seqid)
    end

    def process_get_token(seqid, iprot, oprot)
      args = read_args(iprot, Get_token_args)
      result = Get_token_result.new()
      result.success = @handler.get_token(args.token_identifier)
      write_result(result, oprot, 'get_token', seqid)
    end

    def process_get_all_token_identifiers(seqid, iprot, oprot)
      args = read_args(iprot, Get_all_token_identifiers_args)
      result = Get_all_token_identifiers_result.new()
      result.success = @handler.get_all_token_identifiers()
      write_result(result, oprot, 'get_all_token_identifiers', seqid)
    end

    def process_add_master_key(seqid, iprot, oprot)
      args = read_args(iprot, Add_master_key_args)
      result = Add_master_key_result.new()
      begin
        result.success = @handler.add_master_key(args.key)
      rescue ::MetaException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'add_master_key', seqid)
    end

    def process_update_master_key(seqid, iprot, oprot)
      args = read_args(iprot, Update_master_key_args)
      result = Update_master_key_result.new()
      begin
        @handler.update_master_key(args.seq_number, args.key)
      rescue ::NoSuchObjectException => o1
        result.o1 = o1
      rescue ::MetaException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'update_master_key', seqid)
    end

    def process_remove_master_key(seqid, iprot, oprot)
      args = read_args(iprot, Remove_master_key_args)
      result = Remove_master_key_result.new()
      result.success = @handler.remove_master_key(args.key_seq)
      write_result(result, oprot, 'remove_master_key', seqid)
    end

    def process_get_master_keys(seqid, iprot, oprot)
      args = read_args(iprot, Get_master_keys_args)
      result = Get_master_keys_result.new()
      result.success = @handler.get_master_keys()
      write_result(result, oprot, 'get_master_keys', seqid)
    end

    def process_get_open_txns(seqid, iprot, oprot)
      args = read_args(iprot, Get_open_txns_args)
      result = Get_open_txns_result.new()
      result.success = @handler.get_open_txns()
      write_result(result, oprot, 'get_open_txns', seqid)
    end

    def process_get_open_txns_info(seqid, iprot, oprot)
      args = read_args(iprot, Get_open_txns_info_args)
      result = Get_open_txns_info_result.new()
      result.success = @handler.get_open_txns_info()
      write_result(result, oprot, 'get_open_txns_info', seqid)
    end

    def process_open_txns(seqid, iprot, oprot)
      args = read_args(iprot, Open_txns_args)
      result = Open_txns_result.new()
      result.success = @handler.open_txns(args.rqst)
      write_result(result, oprot, 'open_txns', seqid)
    end

    def process_abort_txn(seqid, iprot, oprot)
      args = read_args(iprot, Abort_txn_args)
      result = Abort_txn_result.new()
      begin
        @handler.abort_txn(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'abort_txn', seqid)
    end

    def process_abort_txns(seqid, iprot, oprot)
      args = read_args(iprot, Abort_txns_args)
      result = Abort_txns_result.new()
      begin
        @handler.abort_txns(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      end
      write_result(result, oprot, 'abort_txns', seqid)
    end

    def process_commit_txn(seqid, iprot, oprot)
      args = read_args(iprot, Commit_txn_args)
      result = Commit_txn_result.new()
      begin
        @handler.commit_txn(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      rescue ::TxnAbortedException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'commit_txn', seqid)
    end

    def process_lock(seqid, iprot, oprot)
      args = read_args(iprot, Lock_args)
      result = Lock_result.new()
      begin
        result.success = @handler.lock(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      rescue ::TxnAbortedException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'lock', seqid)
    end

    def process_check_lock(seqid, iprot, oprot)
      args = read_args(iprot, Check_lock_args)
      result = Check_lock_result.new()
      begin
        result.success = @handler.check_lock(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      rescue ::TxnAbortedException => o2
        result.o2 = o2
      rescue ::NoSuchLockException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'check_lock', seqid)
    end

    def process_unlock(seqid, iprot, oprot)
      args = read_args(iprot, Unlock_args)
      result = Unlock_result.new()
      begin
        @handler.unlock(args.rqst)
      rescue ::NoSuchLockException => o1
        result.o1 = o1
      rescue ::TxnOpenException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'unlock', seqid)
    end

    def process_show_locks(seqid, iprot, oprot)
      args = read_args(iprot, Show_locks_args)
      result = Show_locks_result.new()
      result.success = @handler.show_locks(args.rqst)
      write_result(result, oprot, 'show_locks', seqid)
    end

    def process_heartbeat(seqid, iprot, oprot)
      args = read_args(iprot, Heartbeat_args)
      result = Heartbeat_result.new()
      begin
        @handler.heartbeat(args.ids)
      rescue ::NoSuchLockException => o1
        result.o1 = o1
      rescue ::NoSuchTxnException => o2
        result.o2 = o2
      rescue ::TxnAbortedException => o3
        result.o3 = o3
      end
      write_result(result, oprot, 'heartbeat', seqid)
    end

    def process_heartbeat_txn_range(seqid, iprot, oprot)
      args = read_args(iprot, Heartbeat_txn_range_args)
      result = Heartbeat_txn_range_result.new()
      result.success = @handler.heartbeat_txn_range(args.txns)
      write_result(result, oprot, 'heartbeat_txn_range', seqid)
    end

    def process_compact(seqid, iprot, oprot)
      args = read_args(iprot, Compact_args)
      result = Compact_result.new()
      @handler.compact(args.rqst)
      write_result(result, oprot, 'compact', seqid)
    end

    def process_compact2(seqid, iprot, oprot)
      args = read_args(iprot, Compact2_args)
      result = Compact2_result.new()
      result.success = @handler.compact2(args.rqst)
      write_result(result, oprot, 'compact2', seqid)
    end

    def process_show_compact(seqid, iprot, oprot)
      args = read_args(iprot, Show_compact_args)
      result = Show_compact_result.new()
      result.success = @handler.show_compact(args.rqst)
      write_result(result, oprot, 'show_compact', seqid)
    end

    def process_add_dynamic_partitions(seqid, iprot, oprot)
      args = read_args(iprot, Add_dynamic_partitions_args)
      result = Add_dynamic_partitions_result.new()
      begin
        @handler.add_dynamic_partitions(args.rqst)
      rescue ::NoSuchTxnException => o1
        result.o1 = o1
      rescue ::TxnAbortedException => o2
        result.o2 = o2
      end
      write_result(result, oprot, 'add_dynamic_partitions', seqid)
    end

    def process_get_next_notification(seqid, iprot, oprot)
      args = read_args(iprot, Get_next_notification_args)
      result = Get_next_notification_result.new()
      result.success = @handler.get_next_notification(args.rqst)
      write_result(result, oprot, 'get_next_notification', seqid)
    end

    def process_get_current_notificationEventId(seqid, iprot, oprot)
      args = read_args(iprot, Get_current_notificationEventId_args)
      result = Get_current_notificationEventId_result.new()
      result.success = @handler.get_current_notificationEventId()
      write_result(result, oprot, 'get_current_notificationEventId', seqid)
    end

    def process_fire_listener_event(seqid, iprot, oprot)
      args = read_args(iprot, Fire_listener_event_args)
      result = Fire_listener_event_result.new()
      result.success = @handler.fire_listener_event(args.rqst)
      write_result(result, oprot, 'fire_listener_event', seqid)
    end

    def process_flushCache(seqid, iprot, oprot)
      args = read_args(iprot, FlushCache_args)
      result = FlushCache_result.new()
      @handler.flushCache()
      write_result(result, oprot, 'flushCache', seqid)
    end

    def process_get_file_metadata_by_expr(seqid, iprot, oprot)
      args = read_args(iprot, Get_file_metadata_by_expr_args)
      result = Get_file_metadata_by_expr_result.new()
      result.success = @handler.get_file_metadata_by_expr(args.req)
      write_result(result, oprot, 'get_file_metadata_by_expr', seqid)
    end

    def process_get_file_metadata(seqid, iprot, oprot)
      args = read_args(iprot, Get_file_metadata_args)
      result = Get_file_metadata_result.new()
      result.success = @handler.get_file_metadata(args.req)
      write_result(result, oprot, 'get_file_metadata', seqid)
    end

    def process_put_file_metadata(seqid, iprot, oprot)
      args = read_args(iprot, Put_file_metadata_args)
      result = Put_file_metadata_result.new()
      result.success = @handler.put_file_metadata(args.req)
      write_result(result, oprot, 'put_file_metadata', seqid)
    end

    def process_clear_file_metadata(seqid, iprot, oprot)
      args = read_args(iprot, Clear_file_metadata_args)
      result = Clear_file_metadata_result.new()
      result.success = @handler.clear_file_metadata(args.req)
      write_result(result, oprot, 'clear_file_metadata', seqid)
    end

    def process_cache_file_metadata(seqid, iprot, oprot)
      args = read_args(iprot, Cache_file_metadata_args)
      result = Cache_file_metadata_result.new()
      result.success = @handler.cache_file_metadata(args.req)
      write_result(result, oprot, 'cache_file_metadata', seqid)
    end

  end

  # HELPER FUNCTIONS AND STRUCTURES

  class GetMetaConf_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    KEY = 1

    FIELDS = {
      KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class GetMetaConf_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class SetMetaConf_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    KEY = 1
    VALUE = 2

    FIELDS = {
      KEY => {:type => ::Thrift::Types::STRING, :name => 'key'},
      VALUE => {:type => ::Thrift::Types::STRING, :name => 'value'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class SetMetaConf_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_database_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DATABASE = 1

    FIELDS = {
      DATABASE => {:type => ::Thrift::Types::STRUCT, :name => 'database', :class => ::Database}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_database_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_database_args
    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 Get_database_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Database},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_database_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NAME = 1
    DELETEDATA = 2
    CASCADE = 3

    FIELDS = {
      NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'},
      CASCADE => {:type => ::Thrift::Types::BOOL, :name => 'cascade'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_database_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidOperationException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_databases_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PATTERN = 1

    FIELDS = {
      PATTERN => {:type => ::Thrift::Types::STRING, :name => 'pattern'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_databases_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_databases_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_databases_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_database_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    DB = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      DB => {:type => ::Thrift::Types::STRUCT, :name => 'db', :class => ::Database}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_database_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_type_args
    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 Get_type_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Type},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_type_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TYPE = 1

    FIELDS = {
      TYPE => {:type => ::Thrift::Types::STRUCT, :name => 'type', :class => ::Type}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_type_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_type_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TYPE = 1

    FIELDS = {
      TYPE => {:type => ::Thrift::Types::STRING, :name => 'type'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_type_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_type_all_args
    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 Get_type_all_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O2 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => ::Type}},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_fields_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TABLE_NAME = 2

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_fields_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::UnknownTableException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_fields_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TABLE_NAME = 2
    ENVIRONMENT_CONTEXT = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_fields_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::UnknownTableException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_schema_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TABLE_NAME = 2

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_schema_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::UnknownTableException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_schema_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TABLE_NAME = 2
    ENVIRONMENT_CONTEXT = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'table_name'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_schema_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::FieldSchema}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::UnknownTableException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TBL = 1

    FIELDS = {
      TBL => {:type => ::Thrift::Types::STRUCT, :name => 'tbl', :class => ::Table}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TBL = 1
    ENVIRONMENT_CONTEXT = 2

    FIELDS = {
      TBL => {:type => ::Thrift::Types::STRUCT, :name => 'tbl', :class => ::Table},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_with_constraints_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TBL = 1
    PRIMARYKEYS = 2
    FOREIGNKEYS = 3

    FIELDS = {
      TBL => {:type => ::Thrift::Types::STRUCT, :name => 'tbl', :class => ::Table},
      PRIMARYKEYS => {:type => ::Thrift::Types::LIST, :name => 'primaryKeys', :element => {:type => ::Thrift::Types::STRUCT, :class => ::SQLPrimaryKey}},
      FOREIGNKEYS => {:type => ::Thrift::Types::LIST, :name => 'foreignKeys', :element => {:type => ::Thrift::Types::STRUCT, :class => ::SQLForeignKey}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_table_with_constraints_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_constraint_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::DropConstraintRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_constraint_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O3 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_primary_key_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::AddPrimaryKeyRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_primary_key_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_foreign_key_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::AddForeignKeyRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_foreign_key_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_table_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    NAME = 2
    DELETEDATA = 3

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_table_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O3 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_table_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    NAME = 2
    DELETEDATA = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_table_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O3 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_tables_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    PATTERN = 2

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      PATTERN => {:type => ::Thrift::Types::STRING, :name => 'pattern'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_tables_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_tables_by_type_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    PATTERN = 2
    TABLETYPE = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      PATTERN => {:type => ::Thrift::Types::STRING, :name => 'pattern'},
      TABLETYPE => {:type => ::Thrift::Types::STRING, :name => 'tableType'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_tables_by_type_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_meta_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_PATTERNS = 1
    TBL_PATTERNS = 2
    TBL_TYPES = 3

    FIELDS = {
      DB_PATTERNS => {:type => ::Thrift::Types::STRING, :name => 'db_patterns'},
      TBL_PATTERNS => {:type => ::Thrift::Types::STRING, :name => 'tbl_patterns'},
      TBL_TYPES => {:type => ::Thrift::Types::LIST, :name => 'tbl_types', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_meta_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::TableMeta}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_tables_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_tables_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    TBL_NAME = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Table},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_objects_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    TBL_NAMES = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      TBL_NAMES => {:type => ::Thrift::Types::LIST, :name => 'tbl_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_objects_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Table}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::GetTableRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetTableResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_objects_by_name_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::GetTablesRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_objects_by_name_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetTablesResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidOperationException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_names_by_filter_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    FILTER = 2
    MAX_TABLES = 3

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter'},
      MAX_TABLES => {:type => ::Thrift::Types::I16, :name => 'max_tables', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_names_by_filter_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidOperationException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    TBL_NAME = 2
    NEW_TBL = 3

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_TBL => {:type => ::Thrift::Types::STRUCT, :name => 'new_tbl', :class => ::Table}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    TBL_NAME = 2
    NEW_TBL = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_TBL => {:type => ::Thrift::Types::STRUCT, :name => 'new_tbl', :class => ::Table},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_with_cascade_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    TBL_NAME = 2
    NEW_TBL = 3
    CASCADE = 4

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_TBL => {:type => ::Thrift::Types::STRUCT, :name => 'new_tbl', :class => ::Table},
      CASCADE => {:type => ::Thrift::Types::BOOL, :name => 'cascade'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_table_with_cascade_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NEW_PART = 1

    FIELDS = {
      NEW_PART => {:type => ::Thrift::Types::STRUCT, :name => 'new_part', :class => ::Partition}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partition_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NEW_PART = 1
    ENVIRONMENT_CONTEXT = 2

    FIELDS = {
      NEW_PART => {:type => ::Thrift::Types::STRUCT, :name => 'new_part', :class => ::Partition},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partition_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NEW_PARTS = 1

    FIELDS = {
      NEW_PARTS => {:type => ::Thrift::Types::LIST, :name => 'new_parts', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_pspec_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NEW_PARTS = 1

    FIELDS = {
      NEW_PARTS => {:type => ::Thrift::Types::LIST, :name => 'new_parts', :element => {:type => ::Thrift::Types::STRUCT, :class => ::PartitionSpec}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_pspec_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::AddPartitionsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_partitions_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::AddPartitionsResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_by_name_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Append_partition_by_name_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    DELETEDATA = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    DELETEDATA = 4
    ENVIRONMENT_CONTEXT = 5

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3
    DELETEDATA = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_by_name_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3
    DELETEDATA = 4
    ENVIRONMENT_CONTEXT = 5

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partition_by_name_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partitions_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::DropPartitionsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_partitions_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::DropPartitionsResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Exchange_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PARTITIONSPECS = 1
    SOURCE_DB = 2
    SOURCE_TABLE_NAME = 3
    DEST_DB = 4
    DEST_TABLE_NAME = 5

    FIELDS = {
      PARTITIONSPECS => {:type => ::Thrift::Types::MAP, :name => 'partitionSpecs', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
      SOURCE_DB => {:type => ::Thrift::Types::STRING, :name => 'source_db'},
      SOURCE_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'source_table_name'},
      DEST_DB => {:type => ::Thrift::Types::STRING, :name => 'dest_db'},
      DEST_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'dest_table_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Exchange_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidObjectException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Exchange_partitions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PARTITIONSPECS = 1
    SOURCE_DB = 2
    SOURCE_TABLE_NAME = 3
    DEST_DB = 4
    DEST_TABLE_NAME = 5

    FIELDS = {
      PARTITIONSPECS => {:type => ::Thrift::Types::MAP, :name => 'partitionSpecs', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
      SOURCE_DB => {:type => ::Thrift::Types::STRING, :name => 'source_db'},
      SOURCE_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'source_table_name'},
      DEST_DB => {:type => ::Thrift::Types::STRING, :name => 'dest_db'},
      DEST_TABLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'dest_table_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Exchange_partitions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidObjectException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_with_auth_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    USER_NAME = 4
    GROUP_NAMES = 5

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      USER_NAME => {:type => ::Thrift::Types::STRING, :name => 'user_name'},
      GROUP_NAMES => {:type => ::Thrift::Types::LIST, :name => 'group_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_with_auth_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Partition},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_PARTS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_with_auth_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_PARTS = 3
    USER_NAME = 4
    GROUP_NAMES = 5

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1},
      USER_NAME => {:type => ::Thrift::Types::STRING, :name => 'user_name'},
      GROUP_NAMES => {:type => ::Thrift::Types::LIST, :name => 'group_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_with_auth_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_pspec_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_PARTS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_PARTS => {:type => ::Thrift::Types::I32, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_pspec_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::PartitionSpec}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_names_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_PARTS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_names_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O2 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_ps_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    MAX_PARTS = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_ps_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_ps_with_auth_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    MAX_PARTS = 4
    USER_NAME = 5
    GROUP_NAMES = 6

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1},
      USER_NAME => {:type => ::Thrift::Types::STRING, :name => 'user_name'},
      GROUP_NAMES => {:type => ::Thrift::Types::LIST, :name => 'group_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_ps_with_auth_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_names_ps_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    MAX_PARTS = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_names_ps_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_by_filter_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    FILTER = 3
    MAX_PARTS = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter'},
      MAX_PARTS => {:type => ::Thrift::Types::I16, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_by_filter_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_part_specs_by_filter_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    FILTER = 3
    MAX_PARTS = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter'},
      MAX_PARTS => {:type => ::Thrift::Types::I32, :name => 'max_parts', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_part_specs_by_filter_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::PartitionSpec}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_by_expr_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::PartitionsByExprRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_by_expr_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::PartitionsByExprResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_num_partitions_by_filter_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    FILTER = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      FILTER => {:type => ::Thrift::Types::STRING, :name => 'filter'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_num_partitions_by_filter_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_by_names_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    NAMES = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      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 Get_partitions_by_names_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    NEW_PART = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_PART => {:type => ::Thrift::Types::STRUCT, :name => 'new_part', :class => ::Partition}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partitions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    NEW_PARTS = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_PARTS => {:type => ::Thrift::Types::LIST, :name => 'new_parts', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partitions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partitions_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    NEW_PARTS = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_PARTS => {:type => ::Thrift::Types::LIST, :name => 'new_parts', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Partition}},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partitions_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partition_with_environment_context_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    NEW_PART = 3
    ENVIRONMENT_CONTEXT = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      NEW_PART => {:type => ::Thrift::Types::STRUCT, :name => 'new_part', :class => ::Partition},
      ENVIRONMENT_CONTEXT => {:type => ::Thrift::Types::STRUCT, :name => 'environment_context', :class => ::EnvironmentContext}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_partition_with_environment_context_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Rename_partition_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    NEW_PART = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      NEW_PART => {:type => ::Thrift::Types::STRUCT, :name => 'new_part', :class => ::Partition}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Rename_partition_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_has_valid_characters_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PART_VALS = 1
    THROW_EXCEPTION = 2

    FIELDS = {
      PART_VALS => {:type => ::Thrift::Types::LIST, :name => 'part_vals', :element => {:type => ::Thrift::Types::STRING}},
      THROW_EXCEPTION => {:type => ::Thrift::Types::BOOL, :name => 'throw_exception'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_has_valid_characters_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_config_value_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NAME = 1
    DEFAULTVALUE = 2

    FIELDS = {
      NAME => {:type => ::Thrift::Types::STRING, :name => 'name'},
      DEFAULTVALUE => {:type => ::Thrift::Types::STRING, :name => 'defaultValue'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_config_value_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::ConfigValSecurityException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_to_vals_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PART_NAME = 1

    FIELDS = {
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_to_vals_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_to_spec_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PART_NAME = 1

    FIELDS = {
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Partition_name_to_spec_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::MAP, :name => 'success', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class MarkPartitionForEvent_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    EVENTTYPE = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::MAP, :name => 'part_vals', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
      EVENTTYPE => {:type => ::Thrift::Types::I32, :name => 'eventType', :enum_class => ::PartitionEventType}
    }

    def struct_fields; FIELDS; end

    def validate
      unless @eventType.nil? || ::PartitionEventType::VALID_VALUES.include?(@eventType)
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field eventType!')
      end
    end

    ::Thrift::Struct.generate_accessors self
  end

  class MarkPartitionForEvent_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4
    O5 = 5
    O6 = 6

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::UnknownTableException},
      O5 => {:type => ::Thrift::Types::STRUCT, :name => 'o5', :class => ::UnknownPartitionException},
      O6 => {:type => ::Thrift::Types::STRUCT, :name => 'o6', :class => ::InvalidPartitionException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class IsPartitionMarkedForEvent_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_VALS = 3
    EVENTTYPE = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_VALS => {:type => ::Thrift::Types::MAP, :name => 'part_vals', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRING}},
      EVENTTYPE => {:type => ::Thrift::Types::I32, :name => 'eventType', :enum_class => ::PartitionEventType}
    }

    def struct_fields; FIELDS; end

    def validate
      unless @eventType.nil? || ::PartitionEventType::VALID_VALUES.include?(@eventType)
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field eventType!')
      end
    end

    ::Thrift::Struct.generate_accessors self
  end

  class IsPartitionMarkedForEvent_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4
    O5 = 5
    O6 = 6

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::UnknownDBException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::UnknownTableException},
      O5 => {:type => ::Thrift::Types::STRUCT, :name => 'o5', :class => ::UnknownPartitionException},
      O6 => {:type => ::Thrift::Types::STRUCT, :name => 'o6', :class => ::InvalidPartitionException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_index_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    NEW_INDEX = 1
    INDEX_TABLE = 2

    FIELDS = {
      NEW_INDEX => {:type => ::Thrift::Types::STRUCT, :name => 'new_index', :class => ::Index},
      INDEX_TABLE => {:type => ::Thrift::Types::STRUCT, :name => 'index_table', :class => ::Table}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_index_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Index},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::AlreadyExistsException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_index_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    BASE_TBL_NAME = 2
    IDX_NAME = 3
    NEW_IDX = 4

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbname'},
      BASE_TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'base_tbl_name'},
      IDX_NAME => {:type => ::Thrift::Types::STRING, :name => 'idx_name'},
      NEW_IDX => {:type => ::Thrift::Types::STRUCT, :name => 'new_idx', :class => ::Index}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_index_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_index_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    INDEX_NAME = 3
    DELETEDATA = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      INDEX_NAME => {:type => ::Thrift::Types::STRING, :name => 'index_name'},
      DELETEDATA => {:type => ::Thrift::Types::BOOL, :name => 'deleteData'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_index_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_index_by_name_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    INDEX_NAME = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      INDEX_NAME => {:type => ::Thrift::Types::STRING, :name => 'index_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_index_by_name_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Index},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_indexes_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_INDEXES = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_INDEXES => {:type => ::Thrift::Types::I16, :name => 'max_indexes', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_indexes_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Index}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_index_names_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    MAX_INDEXES = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      MAX_INDEXES => {:type => ::Thrift::Types::I16, :name => 'max_indexes', :default => -1}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_index_names_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O2 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_primary_keys_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::PrimaryKeysRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_primary_keys_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::PrimaryKeysResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_foreign_keys_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::ForeignKeysRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_foreign_keys_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ForeignKeysResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_table_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    STATS_OBJ = 1

    FIELDS = {
      STATS_OBJ => {:type => ::Thrift::Types::STRUCT, :name => 'stats_obj', :class => ::ColumnStatistics}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_table_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_partition_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    STATS_OBJ = 1

    FIELDS = {
      STATS_OBJ => {:type => ::Thrift::Types::STRUCT, :name => 'stats_obj', :class => ::ColumnStatistics}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_partition_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    COL_NAME = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      COL_NAME => {:type => ::Thrift::Types::STRING, :name => 'col_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ColumnStatistics},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidInputException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3
    COL_NAME = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'},
      COL_NAME => {:type => ::Thrift::Types::STRING, :name => 'col_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partition_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ColumnStatistics},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidInputException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_statistics_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::TableStatsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_table_statistics_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::TableStatsResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_statistics_req_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::PartitionsStatsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_partitions_statistics_req_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::PartitionsStatsResult},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_aggr_stats_for_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::PartitionsStatsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_aggr_stats_for_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::AggrStats},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Set_aggr_stats_for_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::SetPartitionsStatsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Set_aggr_stats_for_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Delete_partition_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    PART_NAME = 3
    COL_NAME = 4

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      PART_NAME => {:type => ::Thrift::Types::STRING, :name => 'part_name'},
      COL_NAME => {:type => ::Thrift::Types::STRING, :name => 'col_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Delete_partition_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidObjectException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Delete_table_column_statistics_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DB_NAME = 1
    TBL_NAME = 2
    COL_NAME = 3

    FIELDS = {
      DB_NAME => {:type => ::Thrift::Types::STRING, :name => 'db_name'},
      TBL_NAME => {:type => ::Thrift::Types::STRING, :name => 'tbl_name'},
      COL_NAME => {:type => ::Thrift::Types::STRING, :name => 'col_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Delete_table_column_statistics_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::InvalidObjectException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::InvalidInputException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_function_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    FUNC = 1

    FIELDS = {
      FUNC => {:type => ::Thrift::Types::STRUCT, :name => 'func', :class => ::Function}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_function_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3
    O4 = 4

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::AlreadyExistsException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::InvalidObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException},
      O4 => {:type => ::Thrift::Types::STRUCT, :name => 'o4', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_function_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    FUNCNAME = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
      FUNCNAME => {:type => ::Thrift::Types::STRING, :name => 'funcName'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_function_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O3 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_function_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    FUNCNAME = 2
    NEWFUNC = 3

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
      FUNCNAME => {:type => ::Thrift::Types::STRING, :name => 'funcName'},
      NEWFUNC => {:type => ::Thrift::Types::STRUCT, :name => 'newFunc', :class => ::Function}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Alter_function_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::InvalidOperationException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_functions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    PATTERN = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
      PATTERN => {:type => ::Thrift::Types::STRING, :name => 'pattern'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_functions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_function_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    DBNAME = 1
    FUNCNAME = 2

    FIELDS = {
      DBNAME => {:type => ::Thrift::Types::STRING, :name => 'dbName'},
      FUNCNAME => {:type => ::Thrift::Types::STRING, :name => 'funcName'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_function_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::Function},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchObjectException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_functions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_functions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetAllFunctionsResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    ROLE = 1

    FIELDS = {
      ROLE => {:type => ::Thrift::Types::STRUCT, :name => 'role', :class => ::Role}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Create_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    ROLE_NAME = 1

    FIELDS = {
      ROLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'role_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Drop_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_role_names_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_role_names_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    ROLE_NAME = 1
    PRINCIPAL_NAME = 2
    PRINCIPAL_TYPE = 3
    GRANTOR = 4
    GRANTORTYPE = 5
    GRANT_OPTION = 6

    FIELDS = {
      ROLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'role_name'},
      PRINCIPAL_NAME => {:type => ::Thrift::Types::STRING, :name => 'principal_name'},
      PRINCIPAL_TYPE => {:type => ::Thrift::Types::I32, :name => 'principal_type', :enum_class => ::PrincipalType},
      GRANTOR => {:type => ::Thrift::Types::STRING, :name => 'grantor'},
      GRANTORTYPE => {:type => ::Thrift::Types::I32, :name => 'grantorType', :enum_class => ::PrincipalType},
      GRANT_OPTION => {:type => ::Thrift::Types::BOOL, :name => 'grant_option'}
    }

    def struct_fields; FIELDS; end

    def validate
      unless @principal_type.nil? || ::PrincipalType::VALID_VALUES.include?(@principal_type)
        raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field principal_type!')
      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 Grant_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Revoke_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    ROLE_NAME = 1
    PRINCIPAL_NAME = 2
    PRINCIPAL_TYPE = 3

    FIELDS = {
      ROLE_NAME => {:type => ::Thrift::Types::STRING, :name => 'role_name'},
      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
      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 Revoke_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class List_roles_args
    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
      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 List_roles_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Role}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_revoke_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::GrantRevokeRoleRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_revoke_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GrantRevokeRoleResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_principals_in_role_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::GetPrincipalsInRoleRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_principals_in_role_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetPrincipalsInRoleResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_role_grants_for_principal_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::GetRoleGrantsForPrincipalRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_role_grants_for_principal_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetRoleGrantsForPrincipalResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_privilege_set_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    HIVEOBJECT = 1
    USER_NAME = 2
    GROUP_NAMES = 3

    FIELDS = {
      HIVEOBJECT => {:type => ::Thrift::Types::STRUCT, :name => 'hiveObject', :class => ::HiveObjectRef},
      USER_NAME => {:type => ::Thrift::Types::STRING, :name => 'user_name'},
      GROUP_NAMES => {:type => ::Thrift::Types::LIST, :name => 'group_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_privilege_set_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::PrincipalPrivilegeSet},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class List_privileges_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PRINCIPAL_NAME = 1
    PRINCIPAL_TYPE = 2
    HIVEOBJECT = 3

    FIELDS = {
      PRINCIPAL_NAME => {:type => ::Thrift::Types::STRING, :name => 'principal_name'},
      PRINCIPAL_TYPE => {:type => ::Thrift::Types::I32, :name => 'principal_type', :enum_class => ::PrincipalType},
      HIVEOBJECT => {:type => ::Thrift::Types::STRUCT, :name => 'hiveObject', :class => ::HiveObjectRef}
    }

    def struct_fields; FIELDS; end

    def validate
      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 List_privileges_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRUCT, :class => ::HiveObjectPrivilege}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_privileges_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PRIVILEGES = 1

    FIELDS = {
      PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', :class => ::PrivilegeBag}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_privileges_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Revoke_privileges_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    PRIVILEGES = 1

    FIELDS = {
      PRIVILEGES => {:type => ::Thrift::Types::STRUCT, :name => 'privileges', :class => ::PrivilegeBag}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Revoke_privileges_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_revoke_privileges_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQUEST = 1

    FIELDS = {
      REQUEST => {:type => ::Thrift::Types::STRUCT, :name => 'request', :class => ::GrantRevokePrivilegeRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Grant_revoke_privileges_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GrantRevokePrivilegeResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Set_ugi_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    USER_NAME = 1
    GROUP_NAMES = 2

    FIELDS = {
      USER_NAME => {:type => ::Thrift::Types::STRING, :name => 'user_name'},
      GROUP_NAMES => {:type => ::Thrift::Types::LIST, :name => 'group_names', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Set_ugi_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_delegation_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_OWNER = 1
    RENEWER_KERBEROS_PRINCIPAL_NAME = 2

    FIELDS = {
      TOKEN_OWNER => {:type => ::Thrift::Types::STRING, :name => 'token_owner'},
      RENEWER_KERBEROS_PRINCIPAL_NAME => {:type => ::Thrift::Types::STRING, :name => 'renewer_kerberos_principal_name'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_delegation_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Renew_delegation_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_STR_FORM = 1

    FIELDS = {
      TOKEN_STR_FORM => {:type => ::Thrift::Types::STRING, :name => 'token_str_form'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Renew_delegation_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::I64, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Cancel_delegation_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_STR_FORM = 1

    FIELDS = {
      TOKEN_STR_FORM => {:type => ::Thrift::Types::STRING, :name => 'token_str_form'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Cancel_delegation_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_IDENTIFIER = 1
    DELEGATION_TOKEN = 2

    FIELDS = {
      TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'},
      DELEGATION_TOKEN => {:type => ::Thrift::Types::STRING, :name => 'delegation_token'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Remove_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_IDENTIFIER = 1

    FIELDS = {
      TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Remove_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_token_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TOKEN_IDENTIFIER = 1

    FIELDS = {
      TOKEN_IDENTIFIER => {:type => ::Thrift::Types::STRING, :name => 'token_identifier'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_token_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRING, :name => 'success'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_token_identifiers_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_all_token_identifiers_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_master_key_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    KEY = 1

    FIELDS = {
      KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_master_key_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::I32, :name => 'success'},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_master_key_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SEQ_NUMBER = 1
    KEY = 2

    FIELDS = {
      SEQ_NUMBER => {:type => ::Thrift::Types::I32, :name => 'seq_number'},
      KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Update_master_key_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchObjectException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::MetaException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Remove_master_key_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    KEY_SEQ = 1

    FIELDS = {
      KEY_SEQ => {:type => ::Thrift::Types::I32, :name => 'key_seq'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Remove_master_key_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::BOOL, :name => 'success'}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_master_keys_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_master_keys_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::LIST, :name => 'success', :element => {:type => ::Thrift::Types::STRING}}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_open_txns_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_open_txns_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetOpenTxnsResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_open_txns_info_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_open_txns_info_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetOpenTxnsInfoResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Open_txns_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::OpenTxnRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Open_txns_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::OpenTxnsResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Abort_txn_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::AbortTxnRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Abort_txn_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Abort_txns_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::AbortTxnsRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Abort_txns_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Commit_txn_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::CommitTxnRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Commit_txn_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::TxnAbortedException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Lock_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::LockRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Lock_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::LockResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::TxnAbortedException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Check_lock_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::CheckLockRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Check_lock_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::LockResponse},
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::TxnAbortedException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::NoSuchLockException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Unlock_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::UnlockRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Unlock_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchLockException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::TxnOpenException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Show_locks_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::ShowLocksRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Show_locks_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ShowLocksResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Heartbeat_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    IDS = 1

    FIELDS = {
      IDS => {:type => ::Thrift::Types::STRUCT, :name => 'ids', :class => ::HeartbeatRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Heartbeat_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2
    O3 = 3

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchLockException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::NoSuchTxnException},
      O3 => {:type => ::Thrift::Types::STRUCT, :name => 'o3', :class => ::TxnAbortedException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Heartbeat_txn_range_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    TXNS = 1

    FIELDS = {
      TXNS => {:type => ::Thrift::Types::STRUCT, :name => 'txns', :class => ::HeartbeatTxnRangeRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Heartbeat_txn_range_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::HeartbeatTxnRangeResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Compact_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::CompactionRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Compact_result
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Compact2_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::CompactionRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Compact2_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::CompactionResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Show_compact_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::ShowCompactRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Show_compact_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ShowCompactResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_dynamic_partitions_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::AddDynamicPartitions}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Add_dynamic_partitions_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    O1 = 1
    O2 = 2

    FIELDS = {
      O1 => {:type => ::Thrift::Types::STRUCT, :name => 'o1', :class => ::NoSuchTxnException},
      O2 => {:type => ::Thrift::Types::STRUCT, :name => 'o2', :class => ::TxnAbortedException}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_next_notification_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::NotificationEventRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_next_notification_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::NotificationEventResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_current_notificationEventId_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_current_notificationEventId_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::CurrentNotificationEventId}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Fire_listener_event_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    RQST = 1

    FIELDS = {
      RQST => {:type => ::Thrift::Types::STRUCT, :name => 'rqst', :class => ::FireEventRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Fire_listener_event_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::FireEventResponse}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class FlushCache_args
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class FlushCache_result
    include ::Thrift::Struct, ::Thrift::Struct_Union

    FIELDS = {

    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_file_metadata_by_expr_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::GetFileMetadataByExprRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_file_metadata_by_expr_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetFileMetadataByExprResult}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_file_metadata_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::GetFileMetadataRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Get_file_metadata_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::GetFileMetadataResult}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Put_file_metadata_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::PutFileMetadataRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Put_file_metadata_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::PutFileMetadataResult}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Clear_file_metadata_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::ClearFileMetadataRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Clear_file_metadata_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::ClearFileMetadataResult}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Cache_file_metadata_args
    include ::Thrift::Struct, ::Thrift::Struct_Union
    REQ = 1

    FIELDS = {
      REQ => {:type => ::Thrift::Types::STRUCT, :name => 'req', :class => ::CacheFileMetadataRequest}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

  class Cache_file_metadata_result
    include ::Thrift::Struct, ::Thrift::Struct_Union
    SUCCESS = 0

    FIELDS = {
      SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => ::CacheFileMetadataResult}
    }

    def struct_fields; FIELDS; end

    def validate
    end

    ::Thrift::Struct.generate_accessors self
  end

end

