X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_db_query.c;h=675272c049d52d671d7bd50a3ebfccc04b77f9f8;hb=f2391b9da6127e4acd5b54b7ae6c2d585df0e2a0;hp=13cdf9e57871226f69991c90652d457f895cf5f3;hpb=f18c3057ac834fdc62246289659b6a9518a147f3;p=collectd.git diff --git a/src/utils_db_query.c b/src/utils_db_query.c index 13cdf9e5..675272c0 100644 --- a/src/utils_db_query.c +++ b/src/utils_db_query.c @@ -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; }; /* }}} */ @@ -191,7 +193,7 @@ static int udb_config_set_uint (unsigned int *ret_value, /* {{{ */ /* * Legacy result private functions */ -static void udb_legacy_result_finish_result (const udb_result_t const *r, /* {{{ */ +static void udb_legacy_result_finish_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area) { if ((r == NULL) || (prep_area)) @@ -205,7 +207,7 @@ static void udb_legacy_result_finish_result (const udb_result_t const *r, /* {{{ static int udb_legacy_result_handle_result (udb_result_t *r, /* {{{ */ udb_query_preparation_area_t *q_area, udb_result_preparation_area_t *r_area, - const udb_query_t const *q, char **column_values) + udb_query_t const *q, char **column_values) { value_list_t vl = VALUE_LIST_INIT; value_t value; @@ -228,9 +230,12 @@ 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)); + sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.plugin_instance)); sstrncpy (vl.type, r->type, sizeof (vl.type)); if (r->instance_prefix != NULL) @@ -242,7 +247,7 @@ static int udb_legacy_result_handle_result (udb_result_t *r, /* {{{ */ return (0); } /* }}} int udb_legacy_result_handle_result */ -static int udb_legacy_result_prepare_result (const udb_result_t const *r, /* {{{ */ +static int udb_legacy_result_prepare_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area, char **column_names, size_t column_num) { @@ -357,7 +362,7 @@ static int udb_legacy_result_create (const char *query_name, /* {{{ */ */ static int udb_result_submit (udb_result_t *r, /* {{{ */ udb_result_preparation_area_t *r_area, - const udb_query_t const *q, udb_query_preparation_area_t *q_area) + udb_query_t const *q, udb_query_preparation_area_t *q_area) { value_list_t vl = VALUE_LIST_INIT; size_t i; @@ -388,9 +393,12 @@ 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)); + sstrncpy (vl.plugin_instance, q_area->db_name, sizeof (vl.plugin_instance)); sstrncpy (vl.type, r->type, sizeof (vl.type)); /* Set vl.type_instance {{{ */ @@ -430,7 +438,7 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */ return (0); } /* }}} void udb_result_submit */ -static void udb_result_finish_result (const udb_result_t const *r, /* {{{ */ +static void udb_result_finish_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area) { if ((r == NULL) || (prep_area == NULL)) @@ -454,7 +462,7 @@ static void udb_result_finish_result (const udb_result_t const *r, /* {{{ */ static int udb_result_handle_result (udb_result_t *r, /* {{{ */ udb_query_preparation_area_t *q_area, udb_result_preparation_area_t *r_area, - const udb_query_t const *q, char **column_values) + udb_query_t const *q, char **column_values) { size_t i; @@ -475,7 +483,7 @@ static int udb_result_handle_result (udb_result_t *r, /* {{{ */ return udb_result_submit (r, r_area, q, q_area); } /* }}} int udb_result_handle_result */ -static int udb_result_prepare_result (const udb_result_t const *r, /* {{{ */ +static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */ udb_result_preparation_area_t *prep_area, char **column_names, size_t column_num) { @@ -1057,7 +1065,7 @@ int udb_query_check_version (udb_query_t *q, unsigned int version) /* {{{ */ return (1); } /* }}} int udb_query_check_version */ -void udb_query_finish_result (const udb_query_t const *q, /* {{{ */ +void udb_query_finish_result (udb_query_t const *q, /* {{{ */ udb_query_preparation_area_t *prep_area) { udb_result_preparation_area_t *r_area; @@ -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) { @@ -1081,7 +1091,7 @@ void udb_query_finish_result (const udb_query_t const *q, /* {{{ */ } } /* }}} void udb_query_finish_result */ -int udb_query_handle_result (const udb_query_t const *q, /* {{{ */ +int udb_query_handle_result (udb_query_t const *q, /* {{{ */ udb_query_preparation_area_t *prep_area, char **column_values) { udb_result_preparation_area_t *r_area; @@ -1134,10 +1144,10 @@ int udb_query_handle_result (const udb_query_t const *q, /* {{{ */ return (0); } /* }}} int udb_query_handle_result */ -int udb_query_prepare_result (const udb_query_t const *q, /* {{{ */ +int udb_query_prepare_result (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)) {