From afa81b5e10378a42f045e043b4cb058d0cbfe9cf Mon Sep 17 00:00:00 2001 From: qiuyang19960521 Date: Sun, 22 Dec 2024 14:57:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(compile):=20ha=5Fctc.so=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage/ctc/ctc_srv.h | 20 ++++++++++++++++++++ storage/ctc/mysql_cantian_plugin.cc | 27 +++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/storage/ctc/ctc_srv.h b/storage/ctc/ctc_srv.h index 82fcd40..3d2cbc9 100644 --- a/storage/ctc/ctc_srv.h +++ b/storage/ctc/ctc_srv.h @@ -606,6 +606,26 @@ typedef struct en_ctcpart_scan_range { uint64_t ssn; } ctcpart_scan_range_t; +typedef int (*ctc_execute_rewrite_open_conn_t)(uint32_t thd_id, ctc_ddl_broadcast_request *broadcast_req); +typedef int (*ctc_ddl_execute_update_t)(uint32_t thd_id, ctc_ddl_broadcast_request *broadcast_req, bool *allow_fail); +typedef int (*ctc_ddl_execute_set_opt_t)(uint32_t thd_id, ctc_set_opt_request *broadcast_req, bool allow_fail); +typedef int (*close_mysql_connection_t)(uint32_t thd_id, uint32_t mysql_inst_id); +typedef int (*ctc_ddl_execute_lock_tables_t)(ctc_handler_t *tch, char *db_name, ctc_lock_table_info *lock_info, int *err_code); +typedef int (*ctc_ddl_execute_unlock_tables_t)(ctc_handler_t *tch, uint32_t mysql_inst_id, ctc_lock_table_info *lock_info); +typedef int (*ctc_invalidate_mysql_dd_cache_t)(ctc_handler_t *tch, ctc_invalidate_broadcast_request *broadcast_req, int *err_code); +typedef int (*ctc_set_cluster_role_by_cantian_t)(bool is_slave); + +typedef struct mysql_engine_intf_t { + ctc_execute_rewrite_open_conn_t ctc_execute_rewrite_open_conn; + ctc_ddl_execute_update_t ctc_ddl_execute_update; + ctc_ddl_execute_set_opt_t ctc_ddl_execute_set_opt; + close_mysql_connection_t close_mysql_connection; + ctc_ddl_execute_lock_tables_t ctc_ddl_execute_lock_tables; + ctc_ddl_execute_unlock_tables_t ctc_ddl_execute_unlock_tables; + ctc_invalidate_mysql_dd_cache_t ctc_invalidate_mysql_dd_cache; + ctc_set_cluster_role_by_cantian_t ctc_set_cluster_role_by_cantian; +} sql_engine_intf; + /* General Control Interface */ int srv_wait_instance_startuped(void); int ctc_alloc_inst_id(uint32_t *inst_id); diff --git a/storage/ctc/mysql_cantian_plugin.cc b/storage/ctc/mysql_cantian_plugin.cc index 2eb2b15..ad3491b 100644 --- a/storage/ctc/mysql_cantian_plugin.cc +++ b/storage/ctc/mysql_cantian_plugin.cc @@ -53,6 +53,9 @@ const char *cantiand_get_dbversion() } extern "C" int cantiand_lib_main(int argc, char *argv[]); +#ifdef WITH_CANTIAN +extern "C" int register_sql_intf(sql_engine_intf *sql_intf); +#endif extern "C" void ct_singlep_shutdown(); static std::string get_cantiand_mode() { @@ -75,6 +78,23 @@ static std::string get_cantiand_home_dir() { return home_dir; } +#ifdef WITH_CANTIAN +static sql_engine_intf g_local_sql_intf; +sql_engine_intf *get_local_sql_intf() +{ + g_local_sql_intf.ctc_invalidate_mysql_dd_cache = ctc_invalidate_mysql_dd_cache; + g_local_sql_intf.ctc_execute_rewrite_open_conn = ctc_execute_rewrite_open_conn; + g_local_sql_intf.ctc_ddl_execute_update = ctc_ddl_execute_update; + g_local_sql_intf.ctc_ddl_execute_set_opt = ctc_ddl_execute_set_opt; + g_local_sql_intf.close_mysql_connection = close_mysql_connection; + g_local_sql_intf.ctc_ddl_execute_lock_tables = ctc_ddl_execute_lock_tables; + g_local_sql_intf.ctc_ddl_execute_unlock_tables = ctc_ddl_execute_unlock_tables; + g_local_sql_intf.ctc_set_cluster_role_by_cantian = ctc_set_cluster_role_by_cantian; + ctc_log_system("get local sql function success."); + return &g_local_sql_intf; +} +#endif + static void *mysql_cantian_startup_thread(void *p) { DBUG_TRACE; struct mysql_cantian_context *con = (struct mysql_cantian_context *)p; @@ -86,6 +106,13 @@ static void *mysql_cantian_startup_thread(void *p) { std::string mode = get_cantiand_mode(); std::string home_dir = get_cantiand_home_dir(); int ret; +#ifdef WITH_CANTIAN + ret = register_sql_intf(get_local_sql_intf()); + if (ret != CT_SUCCESS) { + ctc_log_error("register_sql_intf error"); + return nullptr; + } +#endif if (mode != "open") { char const *argv[] = {"/home/regress/install/bin/cantiand", mode.c_str(), "-D", home_dir.c_str()}; -- Gitee