File schema_system_catalog.cpp¶
File List > cubrid > src > object > schema_system_catalog.cpp
Go to the documentation of this file
/*
*
* Copyright 2016 CUBRID Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include "schema_system_catalog.hpp"
#include "db.h"
#include "dbtype_function.h"
#include "identifier_store.hpp"
#include "oid.h"
#include "schema_system_catalog_constants.h"
// XXX: SHOULD BE THE LAST INCLUDE HEADER
#include "memory_wrapper.hpp"
using namespace cubbase;
namespace cubschema
{
static const std::vector <std::string> sm_system_class_names =
{
ROOTCLASS_NAME, // "Rootclass"
CT_DUAL_NAME, // "dual"
/*
* authorization classes
*
* AU_ROOT_CLASS_NAME = CT_ROOT_NAME
* AU_USER_CLASS_NAME = CT_USER_NAME
* AU_PASSWORD_CLASS_NAME = CT_PASSWORD_NAME
* AU_AUTH_CLASS_NAME = CT_AUTHORIZATION_NAME
* AU_GRANT_CLASS_NAME
*/
CT_ROOT_NAME, // "db_root"
CT_USER_NAME, // "db_user"
CT_PASSWORD_NAME, // "db_password"
CT_AUTHORIZATION_NAME, // "db_authorization"
/* currently, not implemented */
// AU_GRANT_CLASS_NAME, // "db_grant"
/*
* catalog classes
*/
CT_CLASS_NAME, // "_db_class"
CT_ATTRIBUTE_NAME, // "_db_attribute"
CT_DOMAIN_NAME, // "_db_domain"
CT_METHOD_NAME, // "_db_method"
CT_METHSIG_NAME, // "_db_meth_sig"
CT_METHARG_NAME, // "_db_meth_arg"
CT_METHFILE_NAME, // "_db_meth_file"
CT_QUERYSPEC_NAME, // "_db_query_spec"
CT_INDEX_NAME, // "_db_index"
CT_INDEXKEY_NAME, // "_db_index_key"
CT_DATATYPE_NAME, // "_db_data_type"
CT_CLASSAUTH_NAME, // "_db_auth"
CT_PARTITION_NAME, // "_db_partition"
CT_STORED_PROC_NAME, // "_db_stored_procedure"
CT_STORED_PROC_ARGS_NAME, // "_db_stored_procedure_args"
CT_STORED_PROC_CODE_NAME, // "_db_stored_procedure_code"
CT_SERIAL_NAME, // "_db_serial"
CT_HA_APPLY_INFO_NAME, // "_db_ha_apply_info"
CT_COLLATION_NAME, // "_db_collation"
CT_CHARSET_NAME, // "_db_charset"
CT_SERVER_NAME, // "_db_server"
CT_SYNONYM_NAME, // "_db_synonym"
CT_TRIGGER_NAME, // "_db_trigger"
/* currently, not implemented */
CT_RESOLUTION_NAME // "_db_resolution"
};
static const std::vector <std::string> sm_system_vclass_names =
{
/*
* catalog vclasses
*/
CTV_CLASS_NAME, // "db_class"
CTV_SUPER_CLASS_NAME, // "db_direct_super_class"
CTV_VCLASS_NAME, // "db_vclass"
CTV_ATTRIBUTE_NAME, // "db_attribute"
CTV_ATTR_SD_NAME, // "db_attr_setdomain_elm"
CTV_METHOD_NAME, // "db_method"
CTV_METHARG_NAME, // "db_meth_arg"
CTV_METHARG_SD_NAME, // "db_meth_arg_setdomain_elm"
CTV_METHFILE_NAME, // "db_meth_file"
CTV_INDEX_NAME, // "db_index"
CTV_INDEXKEY_NAME, // "db_index_key"
CTV_AUTH_NAME, // "db_auth"
CTV_TRIGGER_NAME, // "db_trigger"
CTV_PARTITION_NAME, // "db_partition"
CTV_STORED_PROC_NAME, // "db_stored_procedure"
CTV_STORED_PROC_ARGS_NAME, // "db_stored_procedure_args"
CTV_SERIAL_NAME, // "db_serial"
CTV_HA_APPLY_INFO_NAME, // "db_ha_apply_info"
CTV_COLLATION_NAME, // "db_collation"
CTV_CHARSET_NAME, // "db_charset"
CTV_SERVER_NAME, // "db_server"
CTV_SYNONYM_NAME // "db_synonym"
};
static const identifier_store sm_catalog_class_names (sm_system_class_names, false);
static const identifier_store sm_catalog_vclass_names (sm_system_vclass_names, false);
}
bool sm_check_system_class_by_name (const std::string_view name)
{
// TODO: bool is_enclosed = identifier_store::is_enclosed (name);
return identifier_store::check_identifier_is_valid (name, false)
&& (sm_is_system_class (name) || sm_is_system_vclass (name));
}
bool sm_is_system_class (const std::string_view name)
{
return cubschema::sm_catalog_class_names.is_exists (name);
}
bool sm_is_system_vclass (const std::string_view name)
{
return cubschema::sm_catalog_vclass_names.is_exists (name);
}