Merge branch 'collectd-4.4' into collectd-4.5
[collectd.git] / src / mysql.c
index 5fbe5a6..4e72b5b 100644 (file)
 #include "plugin.h"
 #include "configfile.h"
 
-#ifdef HAVE_MYSQL_MYSQL_H
+#ifdef HAVE_MYSQL_H
+#include <mysql.h>
+#elif defined(HAVE_MYSQL_MYSQL_H)
 #include <mysql/mysql.h>
 #endif
 
-#if COLLECT_LIBMYSQL
-# define MYSQL_HAVE_READ 1
-#else
-# define MYSQL_HAVE_READ 0
-#endif
-
 /* TODO: Understand `Select_*' and possibly do that stuff as well.. */
 
-static data_source_t data_source_counter[1] =
-{
-       {"value", DS_TYPE_COUNTER, 0, NAN}
-};
-
-static data_set_t ds_commands =
-{
-       "mysql_commands", 1, data_source_counter
-};
-
-static data_set_t ds_handler =
-{
-       "mysql_handler", 1, data_source_counter
-};
-
-static data_source_t data_source_qcache[5] =
-{
-       {"hits",             DS_TYPE_COUNTER, 0, NAN},
-       {"inserts",          DS_TYPE_COUNTER, 0, NAN},
-       {"not_cached",       DS_TYPE_COUNTER, 0, NAN},
-       {"lowmem_prunes",    DS_TYPE_COUNTER, 0, NAN},
-       {"queries_in_cache", DS_TYPE_GAUGE,   0, NAN}
-};
-
-static data_set_t ds_qcache =
-{
-       "mysql_qcache", 5, data_source_qcache
-};
-
-static data_source_t data_source_threads[4] =
-{
-       {"running",   DS_TYPE_GAUGE,   0, NAN},
-       {"connected", DS_TYPE_GAUGE,   0, NAN},
-       {"cached",    DS_TYPE_GAUGE,   0, NAN},
-       {"created",   DS_TYPE_COUNTER, 0, NAN}
-};
-
-static data_set_t ds_threads =
-{
-       "mysql_threads", 4, data_source_threads
-};
-
-static data_source_t data_source_octets[2] =
-{
-       {"rx", DS_TYPE_COUNTER, 0, 4294967295.0},
-       {"tx", DS_TYPE_COUNTER, 0, 4294967295.0}
-};
-
-static data_set_t ds_octets =
-{
-       "mysql_octets", 2, data_source_octets
-};
-
-#if MYSQL_HAVE_READ
 static const char *config_keys[] =
 {
        "Host",
@@ -186,11 +128,12 @@ static void counter_submit (const char *type, const char *type_instance,
        vl.values = values;
        vl.values_len = 1;
        vl.time = time (NULL);
-       strcpy (vl.host, hostname_g);
-       strcpy (vl.plugin, "mysql");
-       strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
+       sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+       sstrncpy (vl.plugin, "mysql", sizeof (vl.plugin));
+       sstrncpy (vl.type, type, sizeof (vl.type));
+       sstrncpy (vl.type_instance, type_instance, sizeof (vl.type_instance));
 
-       plugin_dispatch_values (type, &vl);
+       plugin_dispatch_values (&vl);
 } /* void counter_submit */
 
 static void qcache_submit (counter_t hits, counter_t inserts,
@@ -209,10 +152,11 @@ static void qcache_submit (counter_t hits, counter_t inserts,
        vl.values = values;
        vl.values_len = 5;
        vl.time = time (NULL);
-       strcpy (vl.host, hostname_g);
-       strcpy (vl.plugin, "mysql");
+       sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+       sstrncpy (vl.plugin, "mysql", sizeof (vl.plugin));
+       sstrncpy (vl.type, "mysql_qcache", sizeof (vl.type));
 
-       plugin_dispatch_values ("mysql_qcache", &vl);
+       plugin_dispatch_values (&vl);
 } /* void qcache_submit */
 
 static void threads_submit (gauge_t running, gauge_t connected, gauge_t cached,
@@ -229,10 +173,11 @@ static void threads_submit (gauge_t running, gauge_t connected, gauge_t cached,
        vl.values = values;
        vl.values_len = 4;
        vl.time = time (NULL);
-       strcpy (vl.host, hostname_g);
-       strcpy (vl.plugin, "mysql");
+       sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+       sstrncpy (vl.plugin, "mysql", sizeof (vl.plugin));
+       sstrncpy (vl.type, "mysql_threads", sizeof (vl.type));
 
-       plugin_dispatch_values ("mysql_threads", &vl);
+       plugin_dispatch_values (&vl);
 } /* void threads_submit */
 
 static void traffic_submit (counter_t rx, counter_t tx)
@@ -246,10 +191,11 @@ static void traffic_submit (counter_t rx, counter_t tx)
        vl.values = values;
        vl.values_len = 2;
        vl.time = time (NULL);
-       strcpy (vl.host, hostname_g);
-       strcpy (vl.plugin, "mysql");
+       sstrncpy (vl.host, hostname_g, sizeof (vl.host));
+       sstrncpy (vl.plugin, "mysql", sizeof (vl.plugin));
+       sstrncpy (vl.type, "mysql_octets", sizeof (vl.type));
 
-       plugin_dispatch_values ("mysql_octets", &vl);
+       plugin_dispatch_values (&vl);
 } /* void traffic_submit */
 
 static int mysql_read (void)
@@ -375,24 +321,9 @@ static int mysql_read (void)
 
        return (0);
 } /* int mysql_read */
-#endif /* MYSQL_HAVE_READ */
 
-void module_register (modreg_e load)
+void module_register (void)
 {
-       if (load & MR_DATASETS)
-       {
-               plugin_register_data_set (&ds_commands);
-               plugin_register_data_set (&ds_handler);
-               plugin_register_data_set (&ds_qcache);
-               plugin_register_data_set (&ds_threads);
-               plugin_register_data_set (&ds_octets);
-       }
-
-#if MYSQL_HAVE_READ
-       if (load & MR_READ)
-       {
-               plugin_register_config ("mysql", config, config_keys, config_keys_num);
-               plugin_register_read ("mysql", mysql_read);
-       }
-#endif /* MYSQL_HAVE_READ */
+       plugin_register_config ("mysql", config, config_keys, config_keys_num);
+       plugin_register_read ("mysql", mysql_read);
 } /* void module_register */