List:Commits« Previous MessageNext Message »
From:Georgi Kodinov Date:July 14 2010 11:00am
Subject:bzr commit into mysql-5.1-bugteam branch (Georgi.Kodinov:3480) Bug#53493
View as plain text  
#At file:///home/kgeorge/mysql/work/B53493-5.1-bugteam/ based on revid:georgi.kodinov@stripped

 3480 Georgi Kodinov	2010-07-14
      Bug #53493 : add_to_status does not handle the longlong fields in STATUS_VAR
      
      bytes_received/bytes_sent are ulonglong so they cannot be handled by the 
      ulong handling code in add_to_status/add_diff_to_status().
      
      Fixed by adding code to handle these two variables in 
      add_to_status()/add_diff_to_status() and making sure they are not a subject
      to the ulong handling code.

    modified:
      sql/sql_class.cc
      sql/sql_class.h
=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc	2010-07-04 04:02:49 +0000
+++ b/sql/sql_class.cc	2010-07-14 08:50:17 +0000
@@ -1063,6 +1063,9 @@ void add_to_status(STATUS_VAR *to_var, S
 
   while (to != end)
     *(to++)+= *(from++);
+
+  to_var->bytes_received+= from_var->bytes_received;
+  to_var->bytes_sent+= from_var->bytes_sent;
 }
 
 /*
@@ -1088,6 +1091,9 @@ void add_diff_to_status(STATUS_VAR *to_v
 
   while (to != end)
     *(to++)+= *(from++) - *(dec++);
+
+  to_var->bytes_received+= from_var->bytes_received - dec_var->bytes_received;;
+  to_var->bytes_sent+= from_var->bytes_sent - dec_var->bytes_sent;
 }
 
 

=== modified file 'sql/sql_class.h'
--- a/sql/sql_class.h	2010-07-04 04:02:49 +0000
+++ b/sql/sql_class.h	2010-07-14 08:50:17 +0000
@@ -405,12 +405,14 @@ struct system_variables
 };
 
 
-/* per thread status variables */
+/**
+  Per thread status variables.
+  Must be long/ulong up to last_system_status_var so that
+  add_to_status/add_diff_to_status can work.
+*/
 
 typedef struct system_status_var
 {
-  ulonglong bytes_received;
-  ulonglong bytes_sent;
   ulong com_other;
   ulong com_stat[(uint) SQLCOM_END];
   ulong created_tmp_disk_tables;
@@ -466,13 +468,14 @@ typedef struct system_status_var
     Number of statements sent from the client
   */
   ulong questions;
+
+  ulonglong bytes_received;
+  ulonglong bytes_sent;
   /*
     IMPORTANT!
     SEE last_system_status_var DEFINITION BELOW.
-    Below 'last_system_status_var' are all variables which doesn't make any
-    sense to add to the /global/ status variable counter.
-    Status variables which it does not make sense to add to
-    global status variable counter
+    Below 'last_system_status_var' are all variables that cannot be handled
+    automatically by add_to_status()/add_diff_to_status().
   */
   double last_query_cost;
 } STATUS_VAR;


Attachment: [text/bzr-bundle] bzr/georgi.kodinov@oracle.com-20100714085017-84te7d24en4pso3n.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (Georgi.Kodinov:3480) Bug#53493Georgi Kodinov14 Jul