revno: 5265
committer: Christopher Powers <chris.powers@oracle.com> branch nick: mysql-5.6-bug16750433 timestamp: Fri 2013-06-28 07:48:12 -0500 message: Bug#16750433 - THE STATEMENT DIGEST DOES NOT SHOW THE SLAVE SQL THREAD STATEMENTS revno: 5414.1.1 committer: Marc Alff <marc.alff@oracle.com> branch nick: mysql-5.6-bug17271055 timestamp: Thu 2013-08-29 12:29:25 +0200 message: Bug#17271055 "STATEMENT/COM" EVENT MEANING IS UNCLEAR (test case was merged with perfschema 5.6.17)
This commit is contained in:
parent
bff1b52a10
commit
a83a4136ff
@ -41,6 +41,7 @@
|
||||
#include "transaction.h"
|
||||
#include <my_dir.h>
|
||||
#include "sql_show.h" // append_identifier
|
||||
#include <mysql/psi/mysql_statement.h>
|
||||
#include <strfunc.h>
|
||||
#include "compat56.h"
|
||||
|
||||
@ -4272,6 +4273,13 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi,
|
||||
Parser_state parser_state;
|
||||
if (!parser_state.init(thd, thd->query(), thd->query_length()))
|
||||
{
|
||||
thd->m_statement_psi= MYSQL_START_STATEMENT(&thd->m_statement_state,
|
||||
stmt_info_rpl.m_key,
|
||||
thd->db, thd->db_length,
|
||||
thd->charset());
|
||||
THD_STAGE_INFO(thd, stage_init);
|
||||
MYSQL_SET_STATEMENT_TEXT(thd->m_statement_psi, thd->query(), thd->query_length());
|
||||
|
||||
mysql_parse(thd, thd->query(), thd->query_length(), &parser_state);
|
||||
/* Finalize server status flags after executing a statement. */
|
||||
thd->update_server_status();
|
||||
@ -4455,6 +4463,11 @@ end:
|
||||
thd->set_db(NULL, 0); /* will free the current database */
|
||||
thd->reset_query();
|
||||
DBUG_PRINT("info", ("end: query= 0"));
|
||||
|
||||
/* Mark the statement completed. */
|
||||
MYSQL_END_STATEMENT(thd->m_statement_psi, thd->get_stmt_da());
|
||||
thd->m_statement_psi= NULL;
|
||||
|
||||
/*
|
||||
As a disk space optimization, future masters will not log an event for
|
||||
LAST_INSERT_ID() if that function returned 0 (and thus they will be able
|
||||
|
@ -338,6 +338,13 @@ static PSI_rwlock_key key_rwlock_openssl;
|
||||
volatile sig_atomic_t ld_assume_kernel_is_set= 0;
|
||||
#endif
|
||||
|
||||
/**
|
||||
Statement instrumentation key for replication.
|
||||
*/
|
||||
#ifdef HAVE_PSI_STATEMENT_INTERFACE
|
||||
PSI_statement_info stmt_info_rpl;
|
||||
#endif
|
||||
|
||||
/* the default log output is log tables */
|
||||
static bool lower_case_table_names_used= 0;
|
||||
static bool max_long_data_size_used= false;
|
||||
@ -3791,7 +3798,7 @@ void init_com_statement_info()
|
||||
com_statement_info[index].m_flags= 0;
|
||||
}
|
||||
|
||||
/* "statement/com/query" can mutate into "statement/sql/..." */
|
||||
/* "statement/abstract/query" can mutate into "statement/sql/..." */
|
||||
com_statement_info[(uint) COM_QUERY].m_flags= PSI_FLAG_MUTABLE;
|
||||
}
|
||||
#endif
|
||||
@ -9617,23 +9624,49 @@ void init_server_psi_keys(void)
|
||||
|
||||
category= "com";
|
||||
init_com_statement_info();
|
||||
count= array_elements(com_statement_info);
|
||||
|
||||
/*
|
||||
Register [0 .. COM_QUERY - 1] as "statement/com/..."
|
||||
*/
|
||||
count= (int) COM_QUERY;
|
||||
mysql_statement_register(category, com_statement_info, count);
|
||||
|
||||
/*
|
||||
Register [COM_QUERY + 1 .. COM_END] as "statement/com/..."
|
||||
*/
|
||||
count= (int) COM_END - (int) COM_QUERY;
|
||||
mysql_statement_register(category, & com_statement_info[(int) COM_QUERY + 1], count);
|
||||
|
||||
category= "abstract";
|
||||
/*
|
||||
Register [COM_QUERY] as "statement/abstract/com_query"
|
||||
*/
|
||||
mysql_statement_register(category, & com_statement_info[(int) COM_QUERY], 1);
|
||||
|
||||
/*
|
||||
When a new packet is received,
|
||||
it is instrumented as "statement/com/".
|
||||
it is instrumented as "statement/abstract/new_packet".
|
||||
Based on the packet type found, it later mutates to the
|
||||
proper narrow type, for example
|
||||
"statement/com/query" or "statement/com/ping".
|
||||
In cases of "statement/com/query", SQL queries are given to
|
||||
"statement/abstract/query" or "statement/com/ping".
|
||||
In cases of "statement/abstract/query", SQL queries are given to
|
||||
the parser, which mutates the statement type to an even more
|
||||
narrow classification, for example "statement/sql/select".
|
||||
*/
|
||||
stmt_info_new_packet.m_key= 0;
|
||||
stmt_info_new_packet.m_name= "";
|
||||
stmt_info_new_packet.m_name= "new_packet";
|
||||
stmt_info_new_packet.m_flags= PSI_FLAG_MUTABLE;
|
||||
mysql_statement_register(category, & stmt_info_new_packet, 1);
|
||||
mysql_statement_register(category, &stmt_info_new_packet, 1);
|
||||
|
||||
/*
|
||||
Statements processed from the relay log are initially instrumented as
|
||||
"statement/abstract/relay_log". The parser will mutate the statement type to
|
||||
a more specific classification, for example "statement/sql/insert".
|
||||
*/
|
||||
stmt_info_rpl.m_key= 0;
|
||||
stmt_info_rpl.m_name= "relay_log";
|
||||
stmt_info_rpl.m_flags= PSI_FLAG_MUTABLE;
|
||||
mysql_statement_register(category, &stmt_info_rpl, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -461,6 +461,11 @@ extern PSI_statement_info sql_statement_info[(uint) SQLCOM_END + 1];
|
||||
*/
|
||||
extern PSI_statement_info com_statement_info[(uint) COM_END + 1];
|
||||
|
||||
/**
|
||||
Statement instrumentation key for replication.
|
||||
*/
|
||||
extern PSI_statement_info stmt_info_rpl;
|
||||
|
||||
void init_sql_statement_info();
|
||||
void init_com_statement_info();
|
||||
#endif /* HAVE_PSI_STATEMENT_INTERFACE */
|
||||
|
@ -287,14 +287,15 @@ static Sys_var_long Sys_pfs_events_stages_history_size(
|
||||
- 1 for "statement/com/new_packet", for unknown enum_server_command
|
||||
- 1 for "statement/com/Error", for invalid enum_server_command
|
||||
- SQLCOM_END for all regular "statement/sql/...",
|
||||
- 1 for "statement/sql/error", for invalid enum_sql_command.
|
||||
- 1 for "statement/sql/error", for invalid enum_sql_command
|
||||
- 1 for "statement/rpl/relay_log", for replicated statements.
|
||||
*/
|
||||
static Sys_var_ulong Sys_pfs_max_statement_classes(
|
||||
"performance_schema_max_statement_classes",
|
||||
"Maximum number of statement instruments.",
|
||||
PARSED_EARLY READ_ONLY GLOBAL_VAR(pfs_param.m_statement_class_sizing),
|
||||
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 256),
|
||||
DEFAULT((ulong) SQLCOM_END + (ulong) COM_END + 3),
|
||||
DEFAULT((ulong) SQLCOM_END + (ulong) COM_END + 4),
|
||||
BLOCK_SIZE(1));
|
||||
|
||||
static Sys_var_long Sys_pfs_events_statements_history_long_size(
|
||||
|
Loading…
x
Reference in New Issue
Block a user