Merge pull request #2618 from ajssmith/amqp1_dev1_branch
[collectd.git] / src / mysql.c
index 2a63737..40707be 100644 (file)
@@ -58,17 +58,17 @@ struct mysql_database_s /* {{{ */
   int port;
   int timeout;
 
-  _Bool master_stats;
-  _Bool slave_stats;
-  _Bool innodb_stats;
-  _Bool wsrep_stats;
+  bool master_stats;
+  bool slave_stats;
+  bool innodb_stats;
+  bool wsrep_stats;
 
-  _Bool slave_notif;
-  _Bool slave_io_running;
-  _Bool slave_sql_running;
+  bool slave_notif;
+  bool slave_io_running;
+  bool slave_sql_running;
 
   MYSQL *con;
-  _Bool is_connected;
+  bool is_connected;
 };
 typedef struct mysql_database_s mysql_database_t; /* }}} */
 
@@ -121,13 +121,13 @@ static int mysql_config_database(oconfig_item_t *ci) /* {{{ */
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) {
     WARNING("mysql plugin: The `Database' block "
             "needs exactly one string argument.");
-    return (-1);
+    return -1;
   }
 
   db = calloc(1, sizeof(*db));
   if (db == NULL) {
     ERROR("mysql plugin: calloc failed.");
-    return (-1);
+    return -1;
   }
 
   /* initialize all the pointers */
@@ -147,13 +147,13 @@ static int mysql_config_database(oconfig_item_t *ci) /* {{{ */
   db->timeout = 0;
 
   /* trigger a notification, if it's not running */
-  db->slave_io_running = 1;
-  db->slave_sql_running = 1;
+  db->slave_io_running = true;
+  db->slave_sql_running = true;
 
   status = cf_util_get_string(ci, &db->instance);
   if (status != 0) {
     sfree(db);
-    return (status);
+    return status;
   }
   assert(db->instance != NULL);
 
@@ -218,26 +218,27 @@ static int mysql_config_database(oconfig_item_t *ci) /* {{{ */
           (db->database != NULL) ? db->database : "<default>");
 
     if (db->instance != NULL)
-      ssnprintf(cb_name, sizeof(cb_name), "mysql-%s", db->instance);
+      snprintf(cb_name, sizeof(cb_name), "mysql-%s", db->instance);
     else
       sstrncpy(cb_name, "mysql", sizeof(cb_name));
 
-    user_data_t ud = {.data = db, .free_func = mysql_database_free};
-
-    plugin_register_complex_read(/* group = */ NULL, cb_name, mysql_read,
-                                 /* interval = */ 0, &ud);
+    plugin_register_complex_read(
+        /* group = */ NULL, cb_name, mysql_read, /* interval = */ 0,
+        &(user_data_t){
+            .data = db, .free_func = mysql_database_free,
+        });
   } else {
     mysql_database_free(db);
-    return (-1);
+    return -1;
   }
 
-  return (0);
+  return 0;
 } /* }}} int mysql_config_database */
 
 static int mysql_config(oconfig_item_t *ci) /* {{{ */
 {
   if (ci == NULL)
-    return (EINVAL);
+    return EINVAL;
 
   /* Fill the `mysql_database_t' structure.. */
   for (int i = 0; i < ci->children_num; i++) {
@@ -249,7 +250,7 @@ static int mysql_config(oconfig_item_t *ci) /* {{{ */
       WARNING("mysql plugin: Option \"%s\" not allowed here.", child->key);
   }
 
-  return (0);
+  return 0;
 } /* }}} int mysql_config */
 
 /* }}} End of configuration handling functions */
@@ -262,19 +263,23 @@ static MYSQL *getconnection(mysql_database_t *db) {
 
     status = mysql_ping(db->con);
     if (status == 0)
-      return (db->con);
+      return db->con;
 
     WARNING("mysql plugin: Lost connection to instance \"%s\": %s",
             db->instance, mysql_error(db->con));
   }
-  db->is_connected = 0;
+  db->is_connected = false;
+
+  /* Close the old connection before initializing a new one. */
+  if (db->con != NULL) {
+    mysql_close(db->con);
+    db->con = NULL;
+  }
 
+  db->con = mysql_init(NULL);
   if (db->con == NULL) {
-    db->con = mysql_init(NULL);
-    if (db->con == NULL) {
-      ERROR("mysql plugin: mysql_init failed: %s", mysql_error(db->con));
-      return (NULL);
-    }
+    ERROR("mysql plugin: mysql_init failed: %s", mysql_error(db->con));
+    return NULL;
   }
 
   /* Configure TCP connect timeout (default: 0) */
@@ -288,7 +293,7 @@ static MYSQL *getconnection(mysql_database_t *db) {
           "at server %s: %s",
           (db->database != NULL) ? db->database : "<none>",
           (db->host != NULL) ? db->host : "localhost", mysql_error(db->con));
-    return (NULL);
+    return NULL;
   }
 
   cipher = mysql_get_ssl_cipher(db->con);
@@ -300,8 +305,8 @@ static MYSQL *getconnection(mysql_database_t *db) {
        mysql_get_host_info(db->con), (cipher != NULL) ? cipher : "<none>",
        mysql_get_server_info(db->con), mysql_get_proto_info(db->con));
 
-  db->is_connected = 1;
-  return (db->con);
+  db->is_connected = true;
+  return db->con;
 } /* static MYSQL *getconnection (mysql_database_t *db) */
 
 static void set_host(mysql_database_t *db, char *buf, size_t buflen) {
@@ -337,35 +342,20 @@ static void submit(const char *type, const char *type_instance, value_t *values,
   plugin_dispatch_values(&vl);
 } /* submit */
 
-static void counter_submit(const char *type, const char *type_instance,
-                           derive_t value, mysql_database_t *db) {
-  value_t values[1];
-
-  values[0].derive = value;
-  submit(type, type_instance, values, STATIC_ARRAY_SIZE(values), db);
-} /* void counter_submit */
-
 static void gauge_submit(const char *type, const char *type_instance,
                          gauge_t value, mysql_database_t *db) {
-  value_t values[1];
-
-  values[0].gauge = value;
-  submit(type, type_instance, values, STATIC_ARRAY_SIZE(values), db);
+  submit(type, type_instance, &(value_t){.gauge = value}, 1, db);
 } /* void gauge_submit */
 
 static void derive_submit(const char *type, const char *type_instance,
                           derive_t value, mysql_database_t *db) {
-  value_t values[1];
-
-  values[0].derive = value;
-  submit(type, type_instance, values, STATIC_ARRAY_SIZE(values), db);
+  submit(type, type_instance, &(value_t){.derive = value}, 1, db);
 } /* void derive_submit */
 
 static void traffic_submit(derive_t rx, derive_t tx, mysql_database_t *db) {
-  value_t values[2];
-
-  values[0].derive = rx;
-  values[1].derive = tx;
+  value_t values[] = {
+      {.derive = rx}, {.derive = tx},
+  };
 
   submit("mysql_octets", NULL, values, STATIC_ARRAY_SIZE(values), db);
 } /* void traffic_submit */
@@ -378,17 +368,17 @@ static MYSQL_RES *exec_query(MYSQL *con, const char *query) {
   if (mysql_real_query(con, query, query_len)) {
     ERROR("mysql plugin: Failed to execute query: %s", mysql_error(con));
     INFO("mysql plugin: SQL query was: %s", query);
-    return (NULL);
+    return NULL;
   }
 
   res = mysql_store_result(con);
   if (res == NULL) {
     ERROR("mysql plugin: Failed to store query result: %s", mysql_error(con));
     INFO("mysql plugin: SQL query was: %s", query);
-    return (NULL);
+    return NULL;
   }
 
-  return (res);
+  return res;
 } /* exec_query */
 
 static int mysql_read_master_stats(mysql_database_t *db, MYSQL *con) {
@@ -403,7 +393,7 @@ static int mysql_read_master_stats(mysql_database_t *db, MYSQL *con) {
 
   res = exec_query(con, query);
   if (res == NULL)
-    return (-1);
+    return -1;
 
   row = mysql_fetch_row(res);
   if (row == NULL) {
@@ -411,7 +401,7 @@ static int mysql_read_master_stats(mysql_database_t *db, MYSQL *con) {
           "`%s' did not return any rows.",
           query);
     mysql_free_result(res);
-    return (-1);
+    return -1;
   }
 
   field_num = mysql_num_fields(res);
@@ -420,11 +410,11 @@ static int mysql_read_master_stats(mysql_database_t *db, MYSQL *con) {
           "`%s' returned less than two columns.",
           query);
     mysql_free_result(res);
-    return (-1);
+    return -1;
   }
 
   position = atoll(row[1]);
-  counter_submit("mysql_log_position", "master-bin", position, db);
+  derive_submit("mysql_log_position", "master-bin", position, db);
 
   row = mysql_fetch_row(res);
   if (row != NULL)
@@ -434,7 +424,7 @@ static int mysql_read_master_stats(mysql_database_t *db, MYSQL *con) {
 
   mysql_free_result(res);
 
-  return (0);
+  return 0;
 } /* mysql_read_master_stats */
 
 static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
@@ -456,7 +446,7 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
 
   res = exec_query(con, query);
   if (res == NULL)
-    return (-1);
+    return -1;
 
   row = mysql_fetch_row(res);
   if (row == NULL) {
@@ -464,7 +454,7 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
           "`%s' did not return any rows.",
           query);
     mysql_free_result(res);
-    return (-1);
+    return -1;
   }
 
   field_num = mysql_num_fields(res);
@@ -473,7 +463,7 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
           "`%s' returned less than 33 columns.",
           query);
     mysql_free_result(res);
-    return (-1);
+    return -1;
   }
 
   if (db->slave_stats) {
@@ -481,10 +471,10 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
     double gauge;
 
     counter = atoll(row[READ_MASTER_LOG_POS_IDX]);
-    counter_submit("mysql_log_position", "slave-read", counter, db);
+    derive_submit("mysql_log_position", "slave-read", counter, db);
 
     counter = atoll(row[EXEC_MASTER_LOG_POS_IDX]);
-    counter_submit("mysql_log_position", "slave-exec", counter, db);
+    derive_submit("mysql_log_position", "slave-exec", counter, db);
 
     if (row[SECONDS_BEHIND_MASTER_IDX] != NULL) {
       gauge = atof(row[SECONDS_BEHIND_MASTER_IDX]);
@@ -510,31 +500,31 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
     if (((io == NULL) || (strcasecmp(io, "yes") != 0)) &&
         (db->slave_io_running)) {
       n.severity = NOTIF_WARNING;
-      ssnprintf(n.message, sizeof(n.message),
-                "slave I/O thread not started or not connected to master");
+      snprintf(n.message, sizeof(n.message),
+               "slave I/O thread not started or not connected to master");
       plugin_dispatch_notification(&n);
-      db->slave_io_running = 0;
+      db->slave_io_running = false;
     } else if (((io != NULL) && (strcasecmp(io, "yes") == 0)) &&
                (!db->slave_io_running)) {
       n.severity = NOTIF_OKAY;
-      ssnprintf(n.message, sizeof(n.message),
-                "slave I/O thread started and connected to master");
+      snprintf(n.message, sizeof(n.message),
+               "slave I/O thread started and connected to master");
       plugin_dispatch_notification(&n);
-      db->slave_io_running = 1;
+      db->slave_io_running = true;
     }
 
     if (((sql == NULL) || (strcasecmp(sql, "yes") != 0)) &&
         (db->slave_sql_running)) {
       n.severity = NOTIF_WARNING;
-      ssnprintf(n.message, sizeof(n.message), "slave SQL thread not started");
+      snprintf(n.message, sizeof(n.message), "slave SQL thread not started");
       plugin_dispatch_notification(&n);
-      db->slave_sql_running = 0;
+      db->slave_sql_running = false;
     } else if (((sql != NULL) && (strcasecmp(sql, "yes") == 0)) &&
                (!db->slave_sql_running)) {
       n.severity = NOTIF_OKAY;
-      ssnprintf(n.message, sizeof(n.message), "slave SQL thread started");
+      snprintf(n.message, sizeof(n.message), "slave SQL thread started");
       plugin_dispatch_notification(&n);
-      db->slave_sql_running = 1;
+      db->slave_sql_running = true;
     }
   }
 
@@ -546,7 +536,7 @@ static int mysql_read_slave_stats(mysql_database_t *db, MYSQL *con) {
 
   mysql_free_result(res);
 
-  return (0);
+  return 0;
 } /* mysql_read_slave_stats */
 
 static int mysql_read_innodb_stats(mysql_database_t *db, MYSQL *con) {
@@ -605,7 +595,7 @@ static int mysql_read_innodb_stats(mysql_database_t *db, MYSQL *con) {
 
   res = exec_query(con, query);
   if (res == NULL)
-    return (-1);
+    return -1;
 
   while ((row = mysql_fetch_row(res))) {
     int i;
@@ -623,7 +613,7 @@ static int mysql_read_innodb_stats(mysql_database_t *db, MYSQL *con) {
 
     switch (metrics[i].ds_type) {
     case DS_TYPE_COUNTER:
-      counter_submit(metrics[i].type, key, (counter_t)val, db);
+      derive_submit(metrics[i].type, key, (counter_t)val, db);
       break;
     case DS_TYPE_GAUGE:
       gauge_submit(metrics[i].type, key, (gauge_t)val, db);
@@ -635,7 +625,7 @@ static int mysql_read_innodb_stats(mysql_database_t *db, MYSQL *con) {
   }
 
   mysql_free_result(res);
-  return (0);
+  return 0;
 }
 
 static int mysql_read_wsrep_stats(mysql_database_t *db, MYSQL *con) {
@@ -684,7 +674,7 @@ static int mysql_read_wsrep_stats(mysql_database_t *db, MYSQL *con) {
 
   res = exec_query(con, query);
   if (res == NULL)
-    return (-1);
+    return -1;
 
   row = mysql_fetch_row(res);
   if (row == NULL) {
@@ -692,7 +682,7 @@ static int mysql_read_wsrep_stats(mysql_database_t *db, MYSQL *con) {
           "`%s' did not return any rows.",
           query);
     mysql_free_result(res);
-    return (-1);
+    return -1;
   }
 
   while ((row = mysql_fetch_row(res))) {
@@ -720,7 +710,7 @@ static int mysql_read_wsrep_stats(mysql_database_t *db, MYSQL *con) {
   }
 
   mysql_free_result(res);
-  return (0);
+  return 0;
 } /* mysql_read_wsrep_stats */
 
 static int mysql_read(user_data_t *ud) {
@@ -747,14 +737,14 @@ static int mysql_read(user_data_t *ud) {
 
   if ((ud == NULL) || (ud->data == NULL)) {
     ERROR("mysql plugin: mysql_database_read: Invalid user data.");
-    return (-1);
+    return -1;
   }
 
   db = (mysql_database_t *)ud->data;
 
   /* An error message will have been printed in this case */
   if ((con = getconnection(db)) == NULL)
-    return (-1);
+    return -1;
 
   mysql_version = mysql_get_server_version(con);
 
@@ -764,7 +754,7 @@ static int mysql_read(user_data_t *ud) {
 
   res = exec_query(con, query);
   if (res == NULL)
-    return (-1);
+    return -1;
 
   while ((row = mysql_fetch_row(res))) {
     char *key;
@@ -779,12 +769,12 @@ static int mysql_read(user_data_t *ud) {
 
       /* Ignore `prepared statements' */
       if (strncmp(key, "Com_stmt_", strlen("Com_stmt_")) != 0)
-        counter_submit("mysql_commands", key + strlen("Com_"), val, db);
+        derive_submit("mysql_commands", key + strlen("Com_"), val, db);
     } else if (strncmp(key, "Handler_", strlen("Handler_")) == 0) {
       if (val == 0ULL)
         continue;
 
-      counter_submit("mysql_handler", key + strlen("Handler_"), val, db);
+      derive_submit("mysql_handler", key + strlen("Handler_"), val, db);
     } else if (strncmp(key, "Qcache_", strlen("Qcache_")) == 0) {
       if (strcmp(key, "Qcache_hits") == 0)
         qcache_hits = (derive_t)val;
@@ -811,7 +801,7 @@ static int mysql_read(user_data_t *ud) {
       else if (strcmp(key, "Threads_created") == 0)
         threads_created = (derive_t)val;
     } else if (strncmp(key, "Table_locks_", strlen("Table_locks_")) == 0) {
-      counter_submit("mysql_locks", key + strlen("Table_locks_"), val, db);
+      derive_submit("mysql_locks", key + strlen("Table_locks_"), val, db);
     } else if (db->innodb_stats &&
                strncmp(key, "Innodb_", strlen("Innodb_")) == 0) {
       /* buffer pool */
@@ -820,7 +810,7 @@ static int mysql_read(user_data_t *ud) {
       else if (strcmp(key, "Innodb_buffer_pool_pages_dirty") == 0)
         gauge_submit("mysql_bpool_pages", "dirty", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_pages_flushed") == 0)
-        counter_submit("mysql_bpool_counters", "pages_flushed", val, db);
+        derive_submit("mysql_bpool_counters", "pages_flushed", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_pages_free") == 0)
         gauge_submit("mysql_bpool_pages", "free", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_pages_misc") == 0)
@@ -828,19 +818,19 @@ static int mysql_read(user_data_t *ud) {
       else if (strcmp(key, "Innodb_buffer_pool_pages_total") == 0)
         gauge_submit("mysql_bpool_pages", "total", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_read_ahead_rnd") == 0)
-        counter_submit("mysql_bpool_counters", "read_ahead_rnd", val, db);
+        derive_submit("mysql_bpool_counters", "read_ahead_rnd", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_read_ahead") == 0)
-        counter_submit("mysql_bpool_counters", "read_ahead", val, db);
+        derive_submit("mysql_bpool_counters", "read_ahead", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_read_ahead_evicted") == 0)
-        counter_submit("mysql_bpool_counters", "read_ahead_evicted", val, db);
+        derive_submit("mysql_bpool_counters", "read_ahead_evicted", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_read_requests") == 0)
-        counter_submit("mysql_bpool_counters", "read_requests", val, db);
+        derive_submit("mysql_bpool_counters", "read_requests", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_reads") == 0)
-        counter_submit("mysql_bpool_counters", "reads", val, db);
+        derive_submit("mysql_bpool_counters", "reads", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_wait_free") == 0)
-        counter_submit("mysql_bpool_counters", "wait_free", val, db);
+        derive_submit("mysql_bpool_counters", "wait_free", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_write_requests") == 0)
-        counter_submit("mysql_bpool_counters", "write_requests", val, db);
+        derive_submit("mysql_bpool_counters", "write_requests", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_bytes_data") == 0)
         gauge_submit("mysql_bpool_bytes", "data", val, db);
       else if (strcmp(key, "Innodb_buffer_pool_bytes_dirty") == 0)
@@ -848,73 +838,73 @@ static int mysql_read(user_data_t *ud) {
 
       /* data */
       if (strcmp(key, "Innodb_data_fsyncs") == 0)
-        counter_submit("mysql_innodb_data", "fsyncs", val, db);
+        derive_submit("mysql_innodb_data", "fsyncs", val, db);
       else if (strcmp(key, "Innodb_data_read") == 0)
-        counter_submit("mysql_innodb_data", "read", val, db);
+        derive_submit("mysql_innodb_data", "read", val, db);
       else if (strcmp(key, "Innodb_data_reads") == 0)
-        counter_submit("mysql_innodb_data", "reads", val, db);
+        derive_submit("mysql_innodb_data", "reads", val, db);
       else if (strcmp(key, "Innodb_data_writes") == 0)
-        counter_submit("mysql_innodb_data", "writes", val, db);
+        derive_submit("mysql_innodb_data", "writes", val, db);
       else if (strcmp(key, "Innodb_data_written") == 0)
-        counter_submit("mysql_innodb_data", "written", val, db);
+        derive_submit("mysql_innodb_data", "written", val, db);
 
       /* double write */
       else if (strcmp(key, "Innodb_dblwr_writes") == 0)
-        counter_submit("mysql_innodb_dblwr", "writes", val, db);
+        derive_submit("mysql_innodb_dblwr", "writes", val, db);
       else if (strcmp(key, "Innodb_dblwr_pages_written") == 0)
-        counter_submit("mysql_innodb_dblwr", "written", val, db);
+        derive_submit("mysql_innodb_dblwr", "written", val, db);
       else if (strcmp(key, "Innodb_dblwr_page_size") == 0)
         gauge_submit("mysql_innodb_dblwr", "page_size", val, db);
 
       /* log */
       else if (strcmp(key, "Innodb_log_waits") == 0)
-        counter_submit("mysql_innodb_log", "waits", val, db);
+        derive_submit("mysql_innodb_log", "waits", val, db);
       else if (strcmp(key, "Innodb_log_write_requests") == 0)
-        counter_submit("mysql_innodb_log", "write_requests", val, db);
+        derive_submit("mysql_innodb_log", "write_requests", val, db);
       else if (strcmp(key, "Innodb_log_writes") == 0)
-        counter_submit("mysql_innodb_log", "writes", val, db);
+        derive_submit("mysql_innodb_log", "writes", val, db);
       else if (strcmp(key, "Innodb_os_log_fsyncs") == 0)
-        counter_submit("mysql_innodb_log", "fsyncs", val, db);
+        derive_submit("mysql_innodb_log", "fsyncs", val, db);
       else if (strcmp(key, "Innodb_os_log_written") == 0)
-        counter_submit("mysql_innodb_log", "written", val, db);
+        derive_submit("mysql_innodb_log", "written", val, db);
 
       /* pages */
       else if (strcmp(key, "Innodb_pages_created") == 0)
-        counter_submit("mysql_innodb_pages", "created", val, db);
+        derive_submit("mysql_innodb_pages", "created", val, db);
       else if (strcmp(key, "Innodb_pages_read") == 0)
-        counter_submit("mysql_innodb_pages", "read", val, db);
+        derive_submit("mysql_innodb_pages", "read", val, db);
       else if (strcmp(key, "Innodb_pages_written") == 0)
-        counter_submit("mysql_innodb_pages", "written", val, db);
+        derive_submit("mysql_innodb_pages", "written", val, db);
 
       /* row lock */
       else if (strcmp(key, "Innodb_row_lock_time") == 0)
-        counter_submit("mysql_innodb_row_lock", "time", val, db);
+        derive_submit("mysql_innodb_row_lock", "time", val, db);
       else if (strcmp(key, "Innodb_row_lock_waits") == 0)
-        counter_submit("mysql_innodb_row_lock", "waits", val, db);
+        derive_submit("mysql_innodb_row_lock", "waits", val, db);
 
       /* rows */
       else if (strcmp(key, "Innodb_rows_deleted") == 0)
-        counter_submit("mysql_innodb_rows", "deleted", val, db);
+        derive_submit("mysql_innodb_rows", "deleted", val, db);
       else if (strcmp(key, "Innodb_rows_inserted") == 0)
-        counter_submit("mysql_innodb_rows", "inserted", val, db);
+        derive_submit("mysql_innodb_rows", "inserted", val, db);
       else if (strcmp(key, "Innodb_rows_read") == 0)
-        counter_submit("mysql_innodb_rows", "read", val, db);
+        derive_submit("mysql_innodb_rows", "read", val, db);
       else if (strcmp(key, "Innodb_rows_updated") == 0)
-        counter_submit("mysql_innodb_rows", "updated", val, db);
+        derive_submit("mysql_innodb_rows", "updated", val, db);
     } else if (strncmp(key, "Select_", strlen("Select_")) == 0) {
-      counter_submit("mysql_select", key + strlen("Select_"), val, db);
+      derive_submit("mysql_select", key + strlen("Select_"), val, db);
     } else if (strncmp(key, "Sort_", strlen("Sort_")) == 0) {
       if (strcmp(key, "Sort_merge_passes") == 0)
-        counter_submit("mysql_sort_merge_passes", NULL, val, db);
+        derive_submit("mysql_sort_merge_passes", NULL, val, db);
       else if (strcmp(key, "Sort_rows") == 0)
-        counter_submit("mysql_sort_rows", NULL, val, db);
+        derive_submit("mysql_sort_rows", NULL, val, db);
       else if (strcmp(key, "Sort_range") == 0)
-        counter_submit("mysql_sort", "range", val, db);
+        derive_submit("mysql_sort", "range", val, db);
       else if (strcmp(key, "Sort_scan") == 0)
-        counter_submit("mysql_sort", "scan", val, db);
+        derive_submit("mysql_sort", "scan", val, db);
 
     } else if (strncmp(key, "Slow_queries", strlen("Slow_queries")) == 0) {
-      counter_submit("mysql_slow_queries", NULL, val, db);
+      derive_submit("mysql_slow_queries", NULL, val, db);
     }
   }
   mysql_free_result(res);
@@ -952,7 +942,7 @@ static int mysql_read(user_data_t *ud) {
   if (db->wsrep_stats)
     mysql_read_wsrep_stats(db, con);
 
-  return (0);
+  return 0;
 } /* int mysql_read */
 
 void module_register(void) {