X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_db_query.h;h=fa2b2885679c435245b836f4cbc4ccb01556c5db;hb=66f9d645f883eee0aa408428eefdebdcc6dcfa7e;hp=87c3e4e44bb068f7938c1a53188398dc4610a9a8;hpb=a3bc3e9a560b8e1da1be9fa040116226cf6798ab;p=collectd.git diff --git a/src/utils_db_query.h b/src/utils_db_query.h index 87c3e4e4..fa2b2885 100644 --- a/src/utils_db_query.h +++ b/src/utils_db_query.h @@ -30,13 +30,23 @@ struct udb_query_s; typedef struct udb_query_s udb_query_t; +struct udb_query_preparation_area_s; +typedef struct udb_query_preparation_area_s udb_query_preparation_area_t; + +typedef int (*udb_query_create_callback_t) (udb_query_t *q, + oconfig_item_t *ci); + /* * Public functions */ int udb_query_create (udb_query_t ***ret_query_list, - size_t *ret_query_list_len, oconfig_item_t *ci); + size_t *ret_query_list_len, oconfig_item_t *ci, + udb_query_create_callback_t cb, int legacy_mode); void udb_query_free (udb_query_t **query_list, size_t query_list_len); +int udb_query_pick_from_list_by_name (const char *name, + udb_query_t **src_list, size_t src_list_len, + udb_query_t ***dst_list, size_t *dst_list_len); int udb_query_pick_from_list (oconfig_item_t *ci, udb_query_t **src_list, size_t src_list_len, udb_query_t ***dst_list, size_t *dst_list_len); @@ -47,11 +57,27 @@ const char *udb_query_get_statement (udb_query_t *q); void udb_query_set_user_data (udb_query_t *q, void *user_data); void *udb_query_get_user_data (udb_query_t *q); -int udb_query_prepare_result (udb_query_t *q, +/* + * udb_query_check_version + * + * Returns 0 if the query is NOT suitable for `version' and >0 if the + * query IS suitable. + */ +int udb_query_check_version (udb_query_t *q, unsigned int version); + +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); -int udb_query_handle_result (udb_query_t *q, char **column_values); -void udb_query_finish_result (udb_query_t *q); + char **column_names, size_t column_num, int interval); +int udb_query_handle_result (const udb_query_t const *q, + udb_query_preparation_area_t *prep_area, char **column_values); +void udb_query_finish_result (const udb_query_t const *q, + udb_query_preparation_area_t *prep_area); + +udb_query_preparation_area_t * +udb_query_allocate_preparation_area (udb_query_t *q); +void +udb_query_delete_preparation_area (udb_query_preparation_area_t *q_area); #endif /* UTILS_DB_QUERY_H */ /* vim: set sw=2 sts=2 et : */