From bd6dff99307d7b91b16135066bbe964a9cdba60e Mon Sep 17 00:00:00 2001 From: qiuyang19960521 Date: Thu, 31 Oct 2024 11:36:01 +0800 Subject: [PATCH 1/2] =?UTF-8?q?set=20global=20opt=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=E5=9B=9E=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage/tianchi/ctc_meta_data.cc | 7 +++++-- storage/tianchi/tse_ddl_rewriter_plugin.cc | 7 ++++++- storage/tianchi/tse_mysql_proxy.cc | 3 +-- storage/tianchi/tse_srv_mq_stub.cc | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/storage/tianchi/ctc_meta_data.cc b/storage/tianchi/ctc_meta_data.cc index 90a047d..12a2710 100644 --- a/storage/tianchi/ctc_meta_data.cc +++ b/storage/tianchi/ctc_meta_data.cc @@ -896,8 +896,9 @@ int ctc_set_sys_var(tse_ddl_broadcast_request *broadcast_req) { sysvar = intern_find_sys_var(var_name.c_str(), var_name.length()); int ret = -1; if (sysvar == nullptr) { + my_error(ER_UNKNOWN_SYSTEM_VARIABLE, MYF(0), var_name.c_str()); tse_log_error("[ctc_set_sys_var]:sysvar is nullptr and var_name : %s", var_name.c_str()); - return ret; + return ER_UNKNOWN_SYSTEM_VARIABLE; } ctc_get_set_var_item(new_thd, sysvar, &res, var_value, is_null_value, var_is_int); @@ -918,9 +919,11 @@ int ctc_set_sys_var(tse_ddl_broadcast_request *broadcast_req) { tmp_var_list.push_back(var); ret = sql_set_variables(new_thd, &tmp_var_list, false); if (ret != 0) { + uint error = new_thd->get_stmt_da()->mysql_errno(); + strncpy(broadcast_req->err_msg, new_thd->get_stmt_da()->message_text(), ERROR_MESSAGE_LEN); tse_log_error("[ctc_set_sys_var]:set global opt faili;var_name : %s, var_value: %s", var_name.c_str(), var_value.c_str()); - return ret; + return error; } tmp_var_list.clear(); diff --git a/storage/tianchi/tse_ddl_rewriter_plugin.cc b/storage/tianchi/tse_ddl_rewriter_plugin.cc index 6968284..1e3dacf 100644 --- a/storage/tianchi/tse_ddl_rewriter_plugin.cc +++ b/storage/tianchi/tse_ddl_rewriter_plugin.cc @@ -492,6 +492,11 @@ static int tse_set_var_meta(MYSQL_THD thd, uint32_t options, const char* base_na } broadcast_req.options |= options; int ret = tse_execute_mysql_ddl_sql(&tch, &broadcast_req, true); + if (ret != 0 && broadcast_req.err_code != 0) { + string err_msg = broadcast_req.err_msg; + my_printf_error(broadcast_req.err_code, "%s", MYF(0), err_msg.c_str()); + return broadcast_req.err_code; + } update_sess_ctx_by_tch(tch, hton, thd); return ret; } @@ -1298,7 +1303,7 @@ static int tse_ddl_rewrite(MYSQL_THD thd, mysql_event_class_t event_class, return 0; } - if (plugin_ddl_block(thd, it, query_str, need_forward)) { + if (plugin_ddl_block(thd, it, query_str, need_forward)) { return -1; } diff --git a/storage/tianchi/tse_mysql_proxy.cc b/storage/tianchi/tse_mysql_proxy.cc index 4695d5d..317c91e 100644 --- a/storage/tianchi/tse_mysql_proxy.cc +++ b/storage/tianchi/tse_mysql_proxy.cc @@ -360,7 +360,6 @@ __attribute__((visibility("default"))) int tse_execute_rewrite_open_conn(uint32_ mysql_free_result(mysql_store_result(curr_conn)); return 0; } - __attribute__((visibility("default"))) int tse_ddl_execute_update(uint32_t thd_id, tse_ddl_broadcast_request *broadcast_req, bool *allow_fail) { // 相同节点不用执行 if(broadcast_req->mysql_inst_id == ctc_instance_id) { @@ -372,7 +371,7 @@ __attribute__((visibility("default"))) int tse_ddl_execute_update(uint32_t thd_i if (is_meta_normalization && broadcast_req->sql_command != SQLCOM_SET_OPTION) { return 0; } else if (is_meta_normalization && broadcast_req->sql_command == SQLCOM_SET_OPTION - && (broadcast_req->options & TSE_SET_VARIABLE_WITH_SUBSELECT) == 0){ + && (broadcast_req->options & TSE_SET_VARIABLE_WITH_SUBSELECT) == 0){ return ctc_set_sys_var(broadcast_req); } diff --git a/storage/tianchi/tse_srv_mq_stub.cc b/storage/tianchi/tse_srv_mq_stub.cc index 2ffbbc8..4fedd53 100644 --- a/storage/tianchi/tse_srv_mq_stub.cc +++ b/storage/tianchi/tse_srv_mq_stub.cc @@ -1346,6 +1346,7 @@ int tse_execute_mysql_ddl_sql(tianchi_handler_t *tch, tse_ddl_broadcast_request int ret = tse_mq_deal_func(shm_inst, TSE_FUNC_TYPE_EXCUTE_MYSQL_DDL_SQL, req, tch->msg_buf); *tch = req->tch; broadcast_req->err_code = req->broadcast_req.err_code; + strncpy(broadcast_req->err_msg, req->broadcast_req.err_msg, ERROR_MESSAGE_LEN); if (ret == CT_SUCCESS) { result = req->result; } -- Gitee From 1da6d9041dca5aba253259a3a90dea386f57937d Mon Sep 17 00:00:00 2001 From: qiuyang19960521 Date: Thu, 31 Oct 2024 12:01:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?set=20global=20opt=20=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=A0=81=E5=9B=9E=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storage/tianchi/ctc_meta_data.cc | 3 ++- storage/tianchi/tse_ddl_rewriter_plugin.cc | 2 +- storage/tianchi/tse_mysql_proxy.cc | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/tianchi/ctc_meta_data.cc b/storage/tianchi/ctc_meta_data.cc index 12a2710..f1267dc 100644 --- a/storage/tianchi/ctc_meta_data.cc +++ b/storage/tianchi/ctc_meta_data.cc @@ -896,7 +896,8 @@ int ctc_set_sys_var(tse_ddl_broadcast_request *broadcast_req) { sysvar = intern_find_sys_var(var_name.c_str(), var_name.length()); int ret = -1; if (sysvar == nullptr) { - my_error(ER_UNKNOWN_SYSTEM_VARIABLE, MYF(0), var_name.c_str()); + my_error(ER_UNKNOWN_SYSTEM_VARIABLE, MYF(0), var_name.c_str()); + strncpy(broadcast_req->err_msg, new_thd->get_stmt_da()->message_text(), ERROR_MESSAGE_LEN); tse_log_error("[ctc_set_sys_var]:sysvar is nullptr and var_name : %s", var_name.c_str()); return ER_UNKNOWN_SYSTEM_VARIABLE; } diff --git a/storage/tianchi/tse_ddl_rewriter_plugin.cc b/storage/tianchi/tse_ddl_rewriter_plugin.cc index 1e3dacf..c62c24b 100644 --- a/storage/tianchi/tse_ddl_rewriter_plugin.cc +++ b/storage/tianchi/tse_ddl_rewriter_plugin.cc @@ -1303,7 +1303,7 @@ static int tse_ddl_rewrite(MYSQL_THD thd, mysql_event_class_t event_class, return 0; } - if (plugin_ddl_block(thd, it, query_str, need_forward)) { + if (plugin_ddl_block(thd, it, query_str, need_forward)) { return -1; } diff --git a/storage/tianchi/tse_mysql_proxy.cc b/storage/tianchi/tse_mysql_proxy.cc index 317c91e..4695d5d 100644 --- a/storage/tianchi/tse_mysql_proxy.cc +++ b/storage/tianchi/tse_mysql_proxy.cc @@ -360,6 +360,7 @@ __attribute__((visibility("default"))) int tse_execute_rewrite_open_conn(uint32_ mysql_free_result(mysql_store_result(curr_conn)); return 0; } + __attribute__((visibility("default"))) int tse_ddl_execute_update(uint32_t thd_id, tse_ddl_broadcast_request *broadcast_req, bool *allow_fail) { // 相同节点不用执行 if(broadcast_req->mysql_inst_id == ctc_instance_id) { @@ -371,7 +372,7 @@ __attribute__((visibility("default"))) int tse_ddl_execute_update(uint32_t thd_i if (is_meta_normalization && broadcast_req->sql_command != SQLCOM_SET_OPTION) { return 0; } else if (is_meta_normalization && broadcast_req->sql_command == SQLCOM_SET_OPTION - && (broadcast_req->options & TSE_SET_VARIABLE_WITH_SUBSELECT) == 0){ + && (broadcast_req->options & TSE_SET_VARIABLE_WITH_SUBSELECT) == 0){ return ctc_set_sys_var(broadcast_req); } -- Gitee