utils_db_query: Added support for custom plugin intervals.
[collectd.git] / src / utils_db_query.c
index 13cdf9e..7d594d8 100644 (file)
@@ -84,6 +84,8 @@ struct udb_query_preparation_area_s /* {{{ */
   char *plugin;
   char *db_name;
 
+  int interval;
+
   udb_result_preparation_area_t *result_prep_areas;
 }; /* }}} */
 
@@ -228,6 +230,9 @@ static int udb_legacy_result_handle_result (udb_result_t *r, /* {{{ */
     return (-1);
   }
 
+  if (q_area->interval > 0)
+    vl.interval = q_area->interval;
+
   sstrncpy (vl.host, q_area->host, sizeof (vl.host));
   sstrncpy (vl.plugin, q_area->plugin, sizeof (vl.plugin));
   sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.type_instance));
@@ -388,6 +393,9 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
     }
   }
 
+  if (q_area->interval > 0)
+    vl.interval = q_area->interval;
+
   sstrncpy (vl.host, q_area->host, sizeof (vl.host));
   sstrncpy (vl.plugin, q_area->plugin, sizeof (vl.plugin));
   sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.type_instance));
@@ -1071,6 +1079,8 @@ void udb_query_finish_result (const udb_query_t const *q, /* {{{ */
   sfree (prep_area->plugin);
   sfree (prep_area->db_name);
 
+  prep_area->interval = -1;
+
   for (r = q->results, r_area = prep_area->result_prep_areas;
       r != NULL; r = r->next, r_area = r_area->next)
   {
@@ -1137,7 +1147,7 @@ int udb_query_handle_result (const udb_query_t const *q, /* {{{ */
 int udb_query_prepare_result (const udb_query_t const *q, /* {{{ */
     udb_query_preparation_area_t *prep_area,
     const char *host, const char *plugin, const char *db_name,
-    char **column_names, size_t column_num)
+    char **column_names, size_t column_num, int interval)
 {
   udb_result_preparation_area_t *r_area;
   udb_result_t *r;
@@ -1153,6 +1163,8 @@ int udb_query_prepare_result (const udb_query_t const *q, /* {{{ */
   prep_area->plugin = strdup (plugin);
   prep_area->db_name = strdup (db_name);
 
+  prep_area->interval = interval;
+
   if ((prep_area->host == NULL) || (prep_area->plugin == NULL)
       || (prep_area->db_name == NULL))
   {