]> git.pld-linux.org Git - packages/mysql.git/blob - processlist_row_stats.patch
- up to 5.5.13
[packages/mysql.git] / processlist_row_stats.patch
1 # name       : processlist_row_stats.patch
2 # introduced : 11 or before
3 # maintainer : Oleg
4 #
5 #!!! notice !!!
6 # Any small change to this file in the main branch
7 # should be done or reviewed by the maintainer!
8 diff -ruN a/sql/sql_class.cc b/sql/sql_class.cc
9 --- a/sql/sql_class.cc  2011-03-09 17:07:26.221709282 +0200
10 +++ b/sql/sql_class.cc  2011-03-09 17:07:44.900164285 +0200
11 @@ -2017,6 +2017,7 @@
12  
13    thd->sent_row_count++;
14    thd->sent_row_count_2++;
15 +  DEBUG_SYNC(thd, "sent_row");
16  
17    if (thd->vio_ok())
18      DBUG_RETURN(protocol->write());
19 diff -ruN a/sql/sql_show.cc b/sql/sql_show.cc
20 --- a/sql/sql_show.cc   2011-03-09 17:07:26.251706801 +0200
21 +++ b/sql/sql_show.cc   2011-03-09 17:07:44.904163954 +0200
22 @@ -1766,7 +1766,8 @@
23  
24  /****************************************************************************
25    Return info about all processes
26 -  returns for each thread: thread id, user, host, db, command, info
27 +  returns for each thread: thread id, user, host, db, command, info,
28 +  rows_sent, rows_examined, rows_read
29  ****************************************************************************/
30  
31  class thread_info :public ilink {
32 @@ -1784,6 +1785,7 @@
33    uint   command;
34    const char *user,*host,*db,*proc_info,*state_info;
35    CSET_STRING query_string;
36 +  ulonglong rows_sent, rows_examined, rows_read;
37  };
38  
39  #ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
40 @@ -1836,6 +1838,15 @@
41    field->maybe_null=1;
42    field_list.push_back(field=new Item_empty_string("Info",max_query_length));
43    field->maybe_null=1;
44 +  field_list.push_back(field= new Item_return_int("Rows_sent",
45 +                                                  MY_INT64_NUM_DECIMAL_DIGITS,
46 +                                                  MYSQL_TYPE_LONGLONG));
47 +  field_list.push_back(field= new Item_return_int("Rows_examined",
48 +                                                  MY_INT64_NUM_DECIMAL_DIGITS,
49 +                                                  MYSQL_TYPE_LONGLONG));
50 +  field_list.push_back(field= new Item_return_int("Rows_read",
51 +                                                  MY_INT64_NUM_DECIMAL_DIGITS,
52 +                                                  MYSQL_TYPE_LONGLONG));
53    if (protocol->send_result_set_metadata(&field_list,
54                              Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
55      DBUG_VOID_RETURN;
56 @@ -1889,6 +1900,9 @@
57            thd_info->query_string=
58              CSET_STRING(q, q ? length : 0, tmp->query_charset());
59          }
60 +        thd_info->rows_sent= tmp->sent_row_count;
61 +        thd_info->rows_examined= tmp->examined_row_count;
62 +        thd_info->rows_read= tmp->warning_info->current_row_for_warning();
63          mysql_mutex_unlock(&tmp->LOCK_thd_data);
64          thd_info->start_time= tmp->start_time;
65          thread_infos.append(thd_info);
66 @@ -1917,6 +1931,9 @@
67      protocol->store(thd_info->state_info, system_charset_info);
68      protocol->store(thd_info->query_string.str(),
69                      thd_info->query_string.charset());
70 +    protocol->store(thd_info->rows_sent);
71 +    protocol->store(thd_info->rows_examined);
72 +    protocol->store(thd_info->rows_read);
73      if (protocol->write())
74        break; /* purecov: inspected */
75    }
76 @@ -2027,6 +2044,15 @@
77        table->field[8]->store(((tmp->start_utime ?
78                                 now_utime - tmp->start_utime : 0)/ 1000));
79  
80 +      mysql_mutex_lock(&tmp->LOCK_thd_data);
81 +      /* ROWS_SENT */
82 +      table->field[9]->store((ulonglong) tmp->sent_row_count);
83 +      /* ROWS_EXAMINED */
84 +      table->field[10]->store((ulonglong) tmp->examined_row_count);
85 +      /* ROWS_READ */
86 +      table->field[11]->store((ulonglong) tmp->warning_info->current_row_for_warning());
87 +      mysql_mutex_unlock(&tmp->LOCK_thd_data);
88 +
89        if (schema_table_store_record(thd, table))
90        {
91          mysql_mutex_unlock(&LOCK_thread_count);
92 @@ -8082,6 +8108,12 @@
93     SKIP_OPEN_TABLE},
94    {"TIME_MS", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG,
95     0, 0, "Time_ms", SKIP_OPEN_TABLE},
96 +  {"ROWS_SENT", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
97 +   MY_I_S_UNSIGNED, "Rows_sent", SKIP_OPEN_TABLE},
98 +  {"ROWS_EXAMINED", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
99 +   MY_I_S_UNSIGNED, "Rows_examined", SKIP_OPEN_TABLE},
100 +  {"ROWS_READ", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
101 +   MY_I_S_UNSIGNED, "Rows_read", SKIP_OPEN_TABLE},
102    {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
103  };
104  
This page took 0.049721 seconds and 4 git commands to generate.