diff --git a/storage/tianchi/ctc_meta_data.cc b/storage/tianchi/ctc_meta_data.cc index 90a047d92afb6f130723508e19cdd2267a95d081..f1267dc6f789e34c7107b75106d01311bd464197 100644 --- a/storage/tianchi/ctc_meta_data.cc +++ b/storage/tianchi/ctc_meta_data.cc @@ -896,8 +896,10 @@ 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()); + 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 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 +920,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 6968284e435e1d4d992bfd3cf9610a5ca59c0b8e..c62c24b6dfd64c62c57d5012a4016e5fefd7a79a 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_srv_mq_stub.cc b/storage/tianchi/tse_srv_mq_stub.cc index 2ffbbc804a5bf5fe04e8e9fcb67fe639faa08042..4fedd5304ce903496ea9d26d3a7adcd4de482fad 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; }