Don't start profiling too soon. Begin timing when the packet is

read.

Do not store profiling information when there is no query text.  We
don't wish to capture non-COM_QUERY packets.


sql/sql_parse.cc:
  Start profiling immediately after a command packet is read from 
  the network.
sql/sql_profile.cc:
  Do not store items for which there is no query, i.e., protocol API 
  calls (non-COM_QUERY) and such.
This commit is contained in:
unknown 2007-11-09 20:29:02 -05:00
parent 74da84cdb3
commit ac180f8272
2 changed files with 7 additions and 4 deletions

View file

@ -668,9 +668,6 @@ bool do_command(THD *thd)
enum enum_server_command command;
DBUG_ENTER("do_command");
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
thd->profiling.start_new_query();
#endif
/*
indicator of uninitialized lex => normal flow of errors handling
(see my_message_sql)
@ -688,7 +685,12 @@ bool do_command(THD *thd)
thd->clear_error(); // Clear error message
net_new_transaction(net);
if ((packet_length=my_net_read(net)) == packet_error)
packet_length= my_net_read(net);
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
thd->profiling.start_new_query();
#endif
if (packet_length == packet_error)
{
DBUG_PRINT("info",("Got error %d reading command from socket %s",
net->error,

View file

@ -378,6 +378,7 @@ void PROFILING::finish_current_query()
if ((enabled) && /* ON at start? */
((thd->options & OPTION_PROFILING) != 0) && /* and ON at end? */
(current->query_source != NULL) &&
(! current->entries.is_empty()))
{
current->profiling_query_id= next_profile_id(); /* assign an id */