mirror of
https://github.com/MariaDB/server.git
synced 2026-04-28 03:05:33 +02:00
mdl_sync now works.
mysql-test/r/mdl_sync.result: Full merge with 5.6 mysql-test/t/mdl_sync.test: Full merge with 5.6 sql/debug_sync.cc: Full merge with 5.6 sql/debug_sync.h: Full merge with 5.6 sql/mdl.cc: Full merge with 5.6 sql/sql_base.cc: Removed code not in 5.6 anymore
This commit is contained in:
parent
b7b2a7ce81
commit
99aae21ed2
13 changed files with 529 additions and 119 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2009, 2010, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2009, 2011, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -10,8 +10,8 @@
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
along with this program; if not, write to the Free Software Foundation,
|
||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA */
|
||||
|
||||
/* see include/mysql/service_debug_sync.h for debug sync documentation */
|
||||
|
||||
|
|
@ -82,8 +82,6 @@ struct st_debug_sync_globals
|
|||
};
|
||||
static st_debug_sync_globals debug_sync_global; /* All globals in one object */
|
||||
|
||||
extern uint opt_debug_sync_timeout;
|
||||
|
||||
/**
|
||||
Callbacks from C files.
|
||||
*/
|
||||
|
|
@ -112,14 +110,11 @@ static void init_debug_sync_psi_keys(void)
|
|||
const char* category= "sql";
|
||||
int count;
|
||||
|
||||
if (PSI_server == NULL)
|
||||
return;
|
||||
|
||||
count= array_elements(all_debug_sync_mutexes);
|
||||
PSI_server->register_mutex(category, all_debug_sync_mutexes, count);
|
||||
mysql_mutex_register(category, all_debug_sync_mutexes, count);
|
||||
|
||||
count= array_elements(all_debug_sync_conds);
|
||||
PSI_server->register_cond(category, all_debug_sync_conds, count);
|
||||
mysql_cond_register(category, all_debug_sync_conds, count);
|
||||
}
|
||||
#endif /* HAVE_PSI_INTERFACE */
|
||||
|
||||
|
|
@ -783,7 +778,7 @@ static bool debug_sync_set_action(THD *thd, st_debug_sync_action *action)
|
|||
point decremented it to 0. In this case the following happened:
|
||||
|
||||
- an error message was reported with my_error() and
|
||||
- the statement was killed with thd->killed= KILL_QUERY.
|
||||
- the statement was killed with thd->killed= THD::KILL_QUERY.
|
||||
|
||||
If a statement reports an error, it must not call send_ok().
|
||||
The calling functions will not call send_ok(), if we return TRUE
|
||||
|
|
@ -985,7 +980,7 @@ static bool debug_sync_eval_action(THD *thd, char *action_str)
|
|||
DBUG_ENTER("debug_sync_eval_action");
|
||||
DBUG_ASSERT(thd);
|
||||
DBUG_ASSERT(action_str);
|
||||
DBUG_PRINT("debug_sync", ("action_str='%s'", action_str));
|
||||
DBUG_PRINT("debug_sync", ("action_str: '%s'", action_str));
|
||||
|
||||
/*
|
||||
Get debug sync point name. Or a special command.
|
||||
|
|
@ -1450,8 +1445,13 @@ static void debug_sync_execute(THD *thd, st_debug_sync_action *action)
|
|||
sig_wait, sig_glob, error));});
|
||||
if (error == ETIMEDOUT || error == ETIME)
|
||||
{
|
||||
// We should not make the statement fail, even if in strict mode.
|
||||
const bool save_abort_on_warning= thd->abort_on_warning;
|
||||
thd->abort_on_warning= false;
|
||||
push_warning(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_DEBUG_SYNC_TIMEOUT, ER(ER_DEBUG_SYNC_TIMEOUT));
|
||||
thd->abort_on_warning= save_abort_on_warning;
|
||||
DBUG_EXECUTE_IF("debug_sync_abort_on_timeout", DBUG_ABORT(););
|
||||
break;
|
||||
}
|
||||
error= 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue