Files
oceanbase/src/pl/ob_pl_interface_pragma.h
2023-01-12 19:02:33 +08:00

174 lines
10 KiB
C++

/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#include "lib/string/ob_string.h"
#include "lib/hash/ob_hashmap.h"
#include "sql/engine/ob_exec_context.h"
#include "pl/sys_package/ob_dbms_upgrade.h"
#include "pl/sys_package/ob_dbms_stats.h"
#include "pl/sys_package/ob_dbms_scheduler_mysql.h"
#include "pl/sys_package/ob_dbms_application.h"
#include "pl/sys_package/ob_dbms_session.h"
#include "pl/sys_package/ob_dbms_monitor.h"
#include "pl/sys_package/ob_dbms_sql.h"
#include "pl/sys_package/ob_dbms_user_define_rule.h"
#ifdef INTERFACE_DEF
INTERFACE_DEF(INTERFACE_START, "TEST", (void*)(ObPLInterfaceImpl::call))
/*************************.. add interface here ..*****************************/
// start of __dbms_upgrade
INTERFACE_DEF(INTERFACE_DBMS_UPGRADE_SINGLE, "UPGRADE_SINGLE", (void*)(ObDBMSUpgrade::upgrade_single))
INTERFACE_DEF(INTERFACE_DBMS_UPGRADE_ALL, "UPGRADE_ALL", (void*)(ObDBMSUpgrade::upgrade_all))
// end of __dbms_upgrade
// start of dbms_application_info
INTERFACE_DEF(INTERFACE_DBMS_READ_CLIENT_INFO, "READ_CLIENT_INFO", (void *)(ObDBMSAppInfo::read_client_info))
INTERFACE_DEF(INTERFACE_DBMS_READ_MODULE, "READ_MODULE", (void *)(ObDBMSAppInfo::read_module))
INTERFACE_DEF(INTERFACE_DBMS_SET_ACTION, "SET_ACTION", (void *)(ObDBMSAppInfo::set_action))
INTERFACE_DEF(INTERFACE_DBMS_SET_CLIENT_INFO, "SET_CLIENT_INFO", (void *)(ObDBMSAppInfo::set_client_info))
INTERFACE_DEF(INTERFACE_DBMS_SET_MODULE, "SET_MODULE", (void *)(ObDBMSAppInfo::set_module))
// end of dbms_application_info
// start of dbms_monitor
INTERFACE_DEF(INTERFACE_DBMS_SESSION_TRACE_ENABLE, "OB_SESSION_TRACE_ENABLE", (void*)(ObDBMSMonitor::session_trace_enable))
INTERFACE_DEF(INTERFACE_DBMS_SESSION_TRACE_DISABLE, "OB_SESSION_TRACE_DISABLE", (void*)(ObDBMSMonitor::session_trace_disable))
INTERFACE_DEF(INTERFACE_DBMS_CLIENT_ID_TRACE_ENABLE, "OB_CLIENT_ID_TRACE_ENABLE", (void*)(ObDBMSMonitor::client_id_trace_enable))
INTERFACE_DEF(INTERFACE_DBMS_CLIENT_ID_TRACE_DISABLE, "OB_CLIENT_ID_TRACE_DISABLE", (void*)(ObDBMSMonitor::client_id_trace_disable))
INTERFACE_DEF(INTERFACE_DBMS_MOD_ACT_TRACE_ENABLE, "OB_MOD_ACT_TRACE_ENABLE", (void*)(ObDBMSMonitor::mod_act_trace_enable))
INTERFACE_DEF(INTERFACE_DBMS_MOD_ACT_TRACE_DISABLE, "OB_MOD_ACT_TRACE_DISABLE", (void*)(ObDBMSMonitor::mod_act_trace_disable))
INTERFACE_DEF(INTERFACE_DBMS_TENANT_TRACE_ENABLE, "OB_TENANT_TRACE_ENABLE", (void*)(ObDBMSMonitor::tenant_trace_enable))
INTERFACE_DEF(INTERFACE_DBMS_TENANT_TRACE_DISABLE, "OB_TENANT_TRACE_DISABLE", (void*)(ObDBMSMonitor::tenant_trace_disable))
// end of dbms_monitor
//start of dbms_stat
INTERFACE_DEF(INTERFACE_DBMS_STATS_GATHER_TABLE_STATS, "GATHER_TABLE_STATS", (void*)(ObDbmsStats::gather_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_GATHER_SCHEMA_STATS, "GATHER_SCHEMA_STATS", (void*)(ObDbmsStats::gather_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_SET_TABLE_STATS, "SET_TABLE_STATS", (void*)(ObDbmsStats::set_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_SET_COLUMN_STATS, "SET_COLUMN_STATS", (void*)(ObDbmsStats::set_column_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_DELETE_TABLE_STATS, "DELETE_TABLE_STATS", (void*)(ObDbmsStats::delete_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_DELETE_COLUMN_STATS, "DELETE_COLUMN_STATS", (void*)(ObDbmsStats::delete_column_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_DELETE_SCHEMA_STATS, "DELETE_SCHEMA_STATS", (void*)(ObDbmsStats::delete_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_FLUSH_DATABASE_MONITORING_INFO, "FLUSH_DATABASE_MONITORING_INFO", (void*)(ObDbmsStats::flush_database_monitoring_info))
INTERFACE_DEF(INTERFACE_DBMS_STATS_CREATE_STAT_TABLE, "CREATE_STAT_TABLE", (void*)(ObDbmsStats::create_stat_table))
INTERFACE_DEF(INTERFACE_DBMS_STATS_DROP_STAT_TABLE, "DROP_STAT_TABLE", (void*)(ObDbmsStats::drop_stat_table))
INTERFACE_DEF(INTERFACE_DBMS_STATS_EXPORT_TABLE_STATS, "EXPORT_TABLE_STATS", (void*)(ObDbmsStats::export_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_EXPORT_COLUMN_STATS, "EXPORT_COLUMN_STATS", (void*)(ObDbmsStats::export_column_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_EXPORT_SCHEMA_STATS, "EXPORT_SCHEMA_STATS", (void*)(ObDbmsStats::export_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_IMPORT_TABLE_STATS, "IMPORT_TABLE_STATS", (void*)(ObDbmsStats::import_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_IMPORT_COLUMN_STATS, "IMPORT_COLUMN_STATS", (void*)(ObDbmsStats::import_column_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_IMPORT_SCHEMA_STATS, "IMPORT_SCHEMA_STATS", (void*)(ObDbmsStats::import_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_LOCK_TABLE_STATS, "LOCK_TABLE_STATS", (void*)(ObDbmsStats::lock_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_LOCK_PARTITION_STATS, "LOCK_PARTITION_STATS", (void*)(ObDbmsStats::lock_partition_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_LOCK_SCHEMA_STATS, "LOCK_SCHEMA_STATS", (void*)(ObDbmsStats::lock_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_UNLOCK_TABLE_STATS, "UNLOCK_TABLE_STATS", (void*)(ObDbmsStats::unlock_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_UNLOCK_PARTITION_STATS, "UNLOCK_PARTITION_STATS", (void*)(ObDbmsStats::unlock_partition_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_UNLOCK_SCHEMA_STATS, "UNLOCK_SCHEMA_STATS", (void*)(ObDbmsStats::unlock_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_GATHER_DATABASE_STATS_JOB_PROC, "GATHER_DATABASE_STATS_JOB_PROC", (void*)(ObDbmsStats::gather_database_stats_job_proc))
INTERFACE_DEF(INTERFACE_DBMS_STATS_RESTORE_TABLE_STATS, "RESTORE_TABLE_STATS", (void*)(ObDbmsStats::restore_table_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_RESTORE_SCHEMA_STATS, "RESTORE_SCHEMA_STATS", (void*)(ObDbmsStats::restore_schema_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_PURGE_STATS, "PURGE_STATS", (void*)(ObDbmsStats::purge_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_ALTER_STATS_HISTORY_RETENTION, "ALTER_STATS_HISTORY_RETENTION", (void*)(ObDbmsStats::alter_stats_history_retention))
INTERFACE_DEF(INTERFACE_DBMS_STATS_GET_STATS_HISTORY_AVAILABILITY, "GET_STATS_HISTORY_AVAILABILITY", (void*)(ObDbmsStats::get_stats_history_availability))
INTERFACE_DEF(INTERFACE_DBMS_STATS_GET_STATS_HISTORY_RETENTION, "GET_STATS_HISTORY_RETENTION", (void*)(ObDbmsStats::get_stats_history_retention))
INTERFACE_DEF(INTERFACE_DBMS_RESET_GLOBAL_PREF_DEFAULTS, "RESET_GLOBAL_PREF_DEFAULTS", (void*)(ObDbmsStats::reset_global_pref_defaults))
INTERFACE_DEF(INTERFACE_DBMS_SET_GLOBAL_PREFS, "SET_GLOBAL_PREFS", (void*)(ObDbmsStats::set_global_prefs))
INTERFACE_DEF(INTERFACE_DBMS_SET_SCHEMA_PREFS, "SET_SCHEMA_PREFS", (void*)(ObDbmsStats::set_schema_prefs))
INTERFACE_DEF(INTERFACE_DBMS_SET_TABLE_PREFS, "SET_TABLE_PREFS", (void*)(ObDbmsStats::set_table_prefs))
INTERFACE_DEF(INTERFACE_DBMS_GET_PREFS, "GET_PREFS", (void*)(ObDbmsStats::get_prefs))
INTERFACE_DEF(INTERFACE_DBMS_DELETE_SCHEMA_PREFS, "DELETE_SCHEMA_PREFS", (void*)(ObDbmsStats::delete_schema_prefs))
INTERFACE_DEF(INTERFACE_DBMS_DELETE_TABLE_PREFS, "DELETE_TABLE_PREFS", (void*)(ObDbmsStats::delete_table_prefs))
INTERFACE_DEF(INTERFACE_DBMS_STATS_GATHER_INDEX_STATS, "GATHER_INDEX_STATS", (void*)(ObDbmsStats::gather_index_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_DELETE_INDEX_STATS, "DELETE_INDEX_STATS", (void*)(ObDbmsStats::delete_index_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_SET_INDEX_STATS, "SET_INDEX_STATS", (void*)(ObDbmsStats::set_index_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_EXPORT_INDEX_STATS, "EXPORT_INDEX_STATS", (void*)(ObDbmsStats::export_index_stats))
INTERFACE_DEF(INTERFACE_DBMS_STATS_IMPORT_INDEX_STATS, "IMPORT_INDEX_STATS", (void*)(ObDbmsStats::import_index_stats))
//end of dbms_stat
//start of dbms_scheduler_mysql
#define DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE(symbol, func) \
INTERFACE_DEF(INTERFACE_##symbol, #symbol, (void*)(func))
DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE(DBMS_SCHEDULER_MYSQL_CREATE_JOB, ObDBMSSchedulerMysql::create_job)
DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE(DBMS_SCHEDULER_MYSQL_DISABLE, ObDBMSSchedulerMysql::disable)
DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE(DBMS_SCHEDULER_MYSQL_ENABLE, ObDBMSSchedulerMysql::enable)
DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE(DBMS_SCHEDULER_MYSQL_SET_ATTRIBUTE, ObDBMSSchedulerMysql::set_attribute)
#undef DEFINE_DBMS_SCHEDULER_MYSQL_INTERFACE
//end of dbms_scheduler_mysql
// start of dbms_udr
INTERFACE_DEF(INTERFACE_DBMS_UDR_CREATE_RULE, "CREATE_RULE", (void *)(ObDBMSUserDefineRule::create_rule))
INTERFACE_DEF(INTERFACE_DBMS_UDR_REMOVE_RULE, "REMOVE_RULE", (void *)(ObDBMSUserDefineRule::remove_rule))
INTERFACE_DEF(INTERFACE_DBMS_UDR_ENABLE_RULE, "ENABLE_RULE", (void *)(ObDBMSUserDefineRule::enable_rule))
INTERFACE_DEF(INTERFACE_DBMS_UDR_DISABLE_RULE, "DISABLE_RULE", (void *)(ObDBMSUserDefineRule::disable_rule))
// end of dbms_udr
/****************************************************************************/
INTERFACE_DEF(INTERFACE_END, "INVALID", (void*)(NULL))
#endif
#ifndef OCEANBASE_SRC_PL_OB_PL_INTERFACE_PRAGMA_H_
#define OCEANBASE_SRC_PL_OB_PL_INTERFACE_PRAGMA_H_
namespace oceanbase
{
namespace pl
{
enum ObPLInterfaceType
{
#define INTERFACE_DEF(type, name, entry) type,
#include "pl/ob_pl_interface_pragma.h"
#undef INTERFACE_DEF
};
class ObPLInterfaceService
{
public:
ObPLInterfaceService() {}
virtual ~ObPLInterfaceService() {}
void *get_entry(common::ObString &name) const;
int init();
private:
ObPLInterfaceType get_type(common::ObString &name) const;
private:
typedef common::hash::ObHashMap<common::ObString, ObPLInterfaceType,
common::hash::NoPthreadDefendMode> InterfaceMap;
InterfaceMap interface_map_;
};
class ObPLInterfaceImpl
{
public:
ObPLInterfaceImpl() {}
virtual ~ObPLInterfaceImpl() {}
public:
static int call(sql::ObExecContext &ctx, sql::ParamStore &params, common::ObObj &result);
virtual int check_params() = 0;
};
}
}
#endif /* OCEANBASE_SRC_PL_OB_PL_INTERFACE_PRAGMA_H_ */