X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fpostgresql.c;h=4e608be10e1e06d1283eec918e47cbf5aede79d5;hp=f626b5793d7d514cd4ab0cf1f95f56e706e2f67c;hb=0e1e19f9e05c1b6a17f4a534cd0abd592fcab02e;hpb=7b0628b4f4688d48d89f94ca381ca6340da05b37 diff --git a/src/postgresql.c b/src/postgresql.c index f626b579..4e608be1 100644 --- a/src/postgresql.c +++ b/src/postgresql.c @@ -32,13 +32,13 @@ #include "collectd.h" -#include "common.h" +#include "utils/common/common.h" #include "plugin.h" +#include "utils/db_query/db_query.h" #include "utils_cache.h" #include "utils_complain.h" -#include "utils_db_query.h" #include #include @@ -58,7 +58,7 @@ * is ignored. */ #define C_PSQL_PAR_APPEND(buf, buf_len, parameter, value) \ if ((0 < (buf_len)) && (NULL != (value)) && ('\0' != *(value))) { \ - int s = snprintf(buf, buf_len, " %s = '%s'", parameter, value); \ + int s = ssnprintf(buf, buf_len, " %s = '%s'", parameter, value); \ if (0 < s) { \ buf += s; \ buf_len -= s; \ @@ -125,8 +125,6 @@ typedef struct { /* make sure we don't access the database object in parallel */ pthread_mutex_t db_lock; - cdtime_t interval; - /* writer "caching" settings */ cdtime_t commit_interval; cdtime_t next_commit; @@ -155,14 +153,14 @@ static const char *const def_queries[] = { "table_states", "disk_io", "disk_usage"}; static int def_queries_num = STATIC_ARRAY_SIZE(def_queries); -static c_psql_database_t **databases = NULL; -static size_t databases_num = 0; +static c_psql_database_t **databases; +static size_t databases_num; -static udb_query_t **queries = NULL; -static size_t queries_num = 0; +static udb_query_t **queries; +static size_t queries_num; -static c_psql_writer_t *writers = NULL; -static size_t writers_num = 0; +static c_psql_writer_t *writers; +static size_t writers_num; static int c_psql_begin(c_psql_database_t *db) { PGresult *r = PQexec(db->conn, "BEGIN"); @@ -237,8 +235,6 @@ static c_psql_database_t *c_psql_database_new(const char *name) { pthread_mutex_init(&db->db_lock, /* attrs = */ NULL); - db->interval = 0; - db->commit_interval = 0; db->next_commit = 0; db->expire_delay = 0; @@ -327,7 +323,7 @@ static int c_psql_connect(c_psql_database_t *db) { if ((!db) || (!db->database)) return -1; - status = snprintf(buf, buf_len, "dbname = '%s'", db->database); + status = ssnprintf(buf, buf_len, "dbname = '%s'", db->database); if (0 < status) { buf += status; buf_len -= status; @@ -430,9 +426,8 @@ static PGresult *c_psql_exec_query_params(c_psql_database_t *db, udb_query_t *q, params[i] = db->user; break; case C_PSQL_PARAM_INTERVAL: - snprintf(interval, sizeof(interval), "%.3f", - (db->interval > 0) ? CDTIME_T_TO_DOUBLE(db->interval) - : plugin_get_interval()); + ssnprintf(interval, sizeof(interval), "%.3f", + CDTIME_T_TO_DOUBLE(plugin_get_interval())); params[i] = interval; break; case C_PSQL_PARAM_INSTANCE: @@ -516,14 +511,14 @@ static int c_psql_exec_query(c_psql_database_t *db, udb_query_t *q, } column_num = PQnfields(res); - column_names = (char **)calloc(column_num, sizeof(char *)); - if (NULL == column_names) { + column_names = calloc(column_num, sizeof(*column_names)); + if (column_names == NULL) { log_err("calloc failed."); BAIL_OUT(-1); } - column_values = (char **)calloc(column_num, sizeof(char *)); - if (NULL == column_values) { + column_values = calloc(column_num, sizeof(*column_values)); + if (column_values == NULL) { log_err("calloc failed."); BAIL_OUT(-1); } @@ -548,7 +543,7 @@ static int c_psql_exec_query(c_psql_database_t *db, udb_query_t *q, status = udb_query_prepare_result( q, prep_area, host, (db->plugin_name != NULL) ? db->plugin_name : "postgresql", db->instance, - column_names, (size_t)column_num, db->interval); + column_names, (size_t)column_num); if (0 != status) { log_err("udb_query_prepare_result failed with status %i.", status); @@ -637,7 +632,7 @@ static char *values_name_to_sqlarray(const data_set_t *ds, char *string, str_len = string_len; for (size_t i = 0; i < ds->ds_num; ++i) { - int status = snprintf(str_ptr, str_len, ",'%s'", ds->ds[i].name); + int status = ssnprintf(str_ptr, str_len, ",'%s'", ds->ds[i].name); if (status < 1) return NULL; @@ -675,10 +670,10 @@ static char *values_type_to_sqlarray(const data_set_t *ds, char *string, int status; if (store_rates) - status = snprintf(str_ptr, str_len, ",'gauge'"); + status = ssnprintf(str_ptr, str_len, ",'gauge'"); else - status = snprintf(str_ptr, str_len, ",'%s'", - DS_TYPE_TO_STRING(ds->ds[i].type)); + status = ssnprintf(str_ptr, str_len, ",'%s'", + DS_TYPE_TO_STRING(ds->ds[i].type)); if (status < 1) { str_len = 0; @@ -730,7 +725,7 @@ static char *values_to_sqlarray(const data_set_t *ds, const value_list_t *vl, if (ds->ds[i].type == DS_TYPE_GAUGE) status = - snprintf(str_ptr, str_len, "," GAUGE_FORMAT, vl->values[i].gauge); + ssnprintf(str_ptr, str_len, "," GAUGE_FORMAT, vl->values[i].gauge); else if (store_rates) { if (rates == NULL) rates = uc_get_rate(ds, vl); @@ -740,14 +735,14 @@ static char *values_to_sqlarray(const data_set_t *ds, const value_list_t *vl, return NULL; } - status = snprintf(str_ptr, str_len, ",%lf", rates[i]); + status = ssnprintf(str_ptr, str_len, ",%lf", rates[i]); } else if (ds->ds[i].type == DS_TYPE_COUNTER) - status = snprintf(str_ptr, str_len, ",%" PRIu64, - (uint64_t)vl->values[i].counter); + status = ssnprintf(str_ptr, str_len, ",%" PRIu64, + (uint64_t)vl->values[i].counter); else if (ds->ds[i].type == DS_TYPE_DERIVE) - status = snprintf(str_ptr, str_len, ",%" PRIi64, vl->values[i].derive); + status = ssnprintf(str_ptr, str_len, ",%" PRIi64, vl->values[i].derive); else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) - status = snprintf(str_ptr, str_len, ",%" PRIu64, vl->values[i].absolute); + status = ssnprintf(str_ptr, str_len, ",%" PRIu64, vl->values[i].absolute); if (status < 1) { str_len = 0; @@ -945,7 +940,7 @@ static int c_psql_shutdown(void) { if (db->writers_num > 0) { char cb_name[DATA_MAX_NAME_LEN]; - snprintf(cb_name, sizeof(cb_name), "postgresql-%s", db->database); + ssnprintf(cb_name, sizeof(cb_name), "postgresql-%s", db->database); if (!had_flush) { plugin_unregister_flush("postgresql"); @@ -981,9 +976,9 @@ static int config_query_param_add(udb_query_t *q, oconfig_item_t *ci) { c_psql_param_t *tmp; data = udb_query_get_user_data(q); - if (NULL == data) { + if (data == NULL) { data = calloc(1, sizeof(*data)); - if (NULL == data) { + if (data == NULL) { log_err("Out of memory."); return -1; } @@ -994,7 +989,7 @@ static int config_query_param_add(udb_query_t *q, oconfig_item_t *ci) { } tmp = realloc(data->params, (data->params_num + 1) * sizeof(*data->params)); - if (NULL == tmp) { + if (tmp == NULL) { log_err("Out of memory."); return -1; } @@ -1123,6 +1118,7 @@ static int c_psql_config_writer(oconfig_item_t *ci) { static int c_psql_config_database(oconfig_item_t *ci) { c_psql_database_t *db; + cdtime_t interval = 0; char cb_name[DATA_MAX_NAME_LEN]; static bool have_flush; @@ -1163,7 +1159,7 @@ static int c_psql_config_database(oconfig_item_t *ci) { config_add_writer(c, writers, writers_num, &db->writers, &db->writers_num); else if (0 == strcasecmp(c->key, "Interval")) - cf_util_get_cdtime(c, &db->interval); + cf_util_get_cdtime(c, &interval); else if (strcasecmp("CommitInterval", c->key) == 0) cf_util_get_cdtime(c, &db->commit_interval); else if (strcasecmp("ExpireDelay", c->key) == 0) @@ -1180,9 +1176,7 @@ static int c_psql_config_database(oconfig_item_t *ci) { } if (db->queries_num > 0) { - db->q_prep_areas = (udb_query_preparation_area_t **)calloc( - db->queries_num, sizeof(*db->q_prep_areas)); - + db->q_prep_areas = calloc(db->queries_num, sizeof(*db->q_prep_areas)); if (db->q_prep_areas == NULL) { log_err("Out of memory."); c_psql_database_delete(db); @@ -1205,14 +1199,14 @@ static int c_psql_config_database(oconfig_item_t *ci) { } } - snprintf(cb_name, sizeof(cb_name), "postgresql-%s", db->instance); + ssnprintf(cb_name, sizeof(cb_name), "postgresql-%s", db->instance); user_data_t ud = {.data = db, .free_func = c_psql_database_delete}; if (db->queries_num > 0) { ++db->ref_cnt; - plugin_register_complex_read("postgresql", cb_name, c_psql_read, - /* interval = */ db->interval, &ud); + plugin_register_complex_read("postgresql", cb_name, c_psql_read, interval, + &ud); } if (db->writers_num > 0) { ++db->ref_cnt; @@ -1237,7 +1231,7 @@ static int c_psql_config_database(oconfig_item_t *ci) { } /* c_psql_config_database */ static int c_psql_config(oconfig_item_t *ci) { - static int have_def_config = 0; + static int have_def_config; if (0 == have_def_config) { oconfig_item_t *c;