summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorMichael Widenius <monty@mariadb.org>2014-05-03 19:12:17 +0300
committerMichael Widenius <monty@mariadb.org>2014-05-03 19:12:17 +0300
commita10a9448b0902ca2e677f3274c06b6bf697ba3b5 (patch)
tree3248845e3cf640e07de30fe3a4cac83b31f0de09 /sql
parentf137be800e3d6be71cbb3d4013c9fa56112c1f89 (diff)
downloadmariadb-git-a10a9448b0902ca2e677f3274c06b6bf697ba3b5.tar.gz
Added new states to be able to better diagnose where server hangs.
- Table locks now ends with state "After table lock" - Open table now ends with state "After opening tables" - All calls to close_thread_tables(), not only from mysql_execute_command(), has state "closing tables" - Added state "executing" for mysql admin commands, like CACHE INDEX, REPAIR TABLE etc. - Added state "Finding key cache" for CACHE INDEX - Added state "Filling schema table" when we generate temporary table for SHOW commands and information schema. Other things: Add limit from innobase for thread_sleep_delay. This fixed a failing tests case. Added db.opt to support-files to make 'make package' work mysql-test/suite/funcs_1/datadict/processlist_val.inc: Use new state mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result: Updated test result because of new state mysql-test/suite/funcs_1/r/processlist_val_no_prot.result: Updated test result because of new state sql/CMakeLists.txt: Have option files in support-files sql/lock.cc: Added new state 'After table lock' sql/sql_admin.cc: Added state "executing" and "Sending data" for mysql admin commands, like CACHE INDEX, REPAIR TABLE etc. Added state "Finding key cache" sql/sql_base.cc: open tables now ends with state "After table lock", instead of NULL sql/sql_parse.cc: Moved state "closing tables" to close_thread_tables() sql/sql_show.cc: Added state "Filling schema table" when we generate temporary table for SHOW commands and information schema. storage/xtradb/buf/buf0buf.c: Removed compiler warning storage/xtradb/handler/ha_innodb.cc: Add limit from innobase for thread_sleep_delay. This fixed a failing tests case. support-files/db.opt: cmakes needs this to create data/test directory
Diffstat (limited to 'sql')
-rw-r--r--sql/CMakeLists.txt2
-rw-r--r--sql/lock.cc2
-rw-r--r--sql/sql_admin.cc6
-rw-r--r--sql/sql_base.cc6
-rw-r--r--sql/sql_parse.cc1
-rw-r--r--sql/sql_show.cc4
6 files changed, 15 insertions, 6 deletions
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index 709306e8073..376f9773ab2 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -271,7 +271,7 @@ ADD_CUSTOM_TARGET(distclean
IF(INSTALL_LAYOUT STREQUAL "STANDALONE")
# Copy db.opt into data/test/
-SET(DBOPT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/db.opt )
+SET(DBOPT_FILE ${CMAKE_SOURCE_DIR}/support-files/db.opt )
INSTALL(FILES ${DBOPT_FILE} DESTINATION data/test COMPONENT DataFiles)
# Install initial database on windows
diff --git a/sql/lock.cc b/sql/lock.cc
index 3a1a6d41ce3..31ef1314f5a 100644
--- a/sql/lock.cc
+++ b/sql/lock.cc
@@ -323,7 +323,7 @@ bool mysql_lock_tables(THD *thd, MYSQL_LOCK *sql_lock, uint flags)
(void) unlock_external(thd, sql_lock->table, sql_lock->table_count);
end:
- thd_proc_info(thd, 0);
+ thd_proc_info(thd, "After table lock");
if (thd->killed)
{
diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc
index 9beeca06945..92aa414b569 100644
--- a/sql/sql_admin.cc
+++ b/sql/sql_admin.cc
@@ -647,7 +647,9 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
}
DBUG_PRINT("admin", ("calling operator_func '%s'", operator_name));
+ thd_proc_info(thd, "executing");
result_code = (table->table->file->*operator_func)(thd, check_opt);
+ thd_proc_info(thd, "Sending data");
DBUG_PRINT("admin", ("operator_func returned: %d", result_code));
if (result_code == HA_ADMIN_NOT_IMPLEMENTED && need_repair_or_alter)
@@ -769,8 +771,9 @@ send_result_message:
"Table does not support optimize, doing recreate + analyze instead"),
system_charset_info);
}
- if (protocol->write())
+ if (protocol->write())
goto err;
+ thd_proc_info(thd, "recreating table");
DBUG_PRINT("info", ("HA_ADMIN_TRY_ALTER, trying analyze..."));
TABLE_LIST *save_next_local= table->next_local,
*save_next_global= table->next_global;
@@ -975,6 +978,7 @@ bool mysql_assign_to_keycache(THD* thd, TABLE_LIST* tables,
KEY_CACHE *key_cache;
DBUG_ENTER("mysql_assign_to_keycache");
+ thd_proc_info(thd, "Finding key cache");
check_opt.init();
mysql_mutex_lock(&LOCK_global_system_variables);
if (!(key_cache= get_key_cache(key_cache_name)))
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index a0a52d3815f..3eefd8e8835 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -1467,6 +1467,8 @@ void close_thread_tables(THD *thd)
TABLE *table;
DBUG_ENTER("close_thread_tables");
+ thd_proc_info(thd, "closing tables");
+
#ifdef EXTRA_DEBUG
DBUG_PRINT("tcache", ("open tables:"));
for (table= thd->open_tables; table; table= table->next)
@@ -5170,7 +5172,7 @@ restart:
}
err:
- thd_proc_info(thd, 0);
+ thd_proc_info(thd, "After opening tables");
free_root(&new_frm_mem, MYF(0)); // Free pre-alloced block
if (error && *table_to_open)
@@ -5619,7 +5621,7 @@ end:
trans_rollback_stmt(thd);
close_thread_tables(thd);
}
- thd_proc_info(thd, 0);
+ thd_proc_info(thd, "After opening table");
DBUG_RETURN(table);
}
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 61c822f0d69..d6aebf50a70 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4579,7 +4579,6 @@ finish:
}
/* Free tables */
- thd_proc_info(thd, "closing tables");
close_thread_tables(thd);
thd_proc_info(thd, 0);
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index e07a904d416..97731be6bba 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -7651,10 +7651,13 @@ bool get_schema_tables_result(JOIN *join,
THD *thd= join->thd;
LEX *lex= thd->lex;
bool result= 0;
+ const char *old_proc_info;
DBUG_ENTER("get_schema_tables_result");
Warnings_only_error_handler err_handler;
thd->push_internal_handler(&err_handler);
+ old_proc_info= thd_proc_info(thd, "Filling schema table");
+
for (JOIN_TAB *tab= first_linear_tab(join, WITH_CONST_TABLES);
tab;
tab= next_linear_tab(join, tab, WITHOUT_BUSH_ROOTS))
@@ -7743,6 +7746,7 @@ bool get_schema_tables_result(JOIN *join,
}
else if (result)
my_error(ER_UNKNOWN_ERROR, MYF(0));
+ thd_proc_info(thd, old_proc_info);
DBUG_RETURN(result);
}