X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fpostgresql.c;h=b4b4ca7769d2933bb137821a014b36ebcac98951;hb=5102d4262dd5c08ecbb08a24e1ce510fb02f51bd;hp=bef3490ff0f16852d345c85bf8c167f851116597;hpb=4b8c1289003f0d60728f06a43bfcc9bc3de7004c;p=collectd.git diff --git a/src/postgresql.c b/src/postgresql.c index bef3490f..b4b4ca77 100644 --- a/src/postgresql.c +++ b/src/postgresql.c @@ -154,7 +154,7 @@ typedef struct { int ref_cnt; } c_psql_database_t; -static char *def_queries[] = { +static const char *const def_queries[] = { "backends", "transactions", "queries", @@ -218,7 +218,7 @@ static c_psql_database_t *c_psql_database_new (const char *name) c_psql_database_t **tmp; c_psql_database_t *db; - db = (c_psql_database_t *)malloc (sizeof(*db)); + db = malloc (sizeof(*db)); if (NULL == db) { log_err ("Out of memory."); return NULL; @@ -429,9 +429,9 @@ static PGresult *c_psql_exec_query_noparams (c_psql_database_t *db, static PGresult *c_psql_exec_query_params (c_psql_database_t *db, udb_query_t *q, c_psql_user_data_t *data) { - char *params[db->max_params_num]; - char interval[64]; - int i; + const char *params[db->max_params_num]; + char interval[64]; + int i; if ((data == NULL) || (data->params_num == 0)) return (c_psql_exec_query_noparams (db, q)); @@ -555,7 +555,7 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q, log_err ("calloc failed."); BAIL_OUT (-1); } - + for (col = 0; col < column_num; ++col) { /* Pointers returned by `PQfname' are freed by `PQclear' via * `BAIL_OUT'. */ @@ -826,7 +826,7 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, { c_psql_database_t *db; - char time_str[32]; + char time_str[RFC3339NANO_SIZE]; char values_name_str[1024]; char values_type_str[1024]; char values_str[1024]; @@ -845,8 +845,8 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, assert (db->database != NULL); assert (db->writers != NULL); - if (cdtime_to_iso8601 (time_str, sizeof (time_str), vl->time) == 0) { - log_err ("c_psql_write: Failed to convert time to ISO 8601 format"); + if (rfc3339nano (time_str, sizeof (time_str), vl->time) != 0) { + log_err ("c_psql_write: Failed to convert time to RFC 3339 format"); return -1; } @@ -867,7 +867,7 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl, #undef VALUE_OR_NULL if( db->expire_delay > 0 && vl->time < (cdtime() - vl->interval - db->expire_delay) ) { - log_info ("c_psql_write: Skipped expired value @ %s - %s/%s-%s/%s-%s/%s", + log_info ("c_psql_write: Skipped expired value @ %s - %s/%s-%s/%s-%s/%s", params[0], params[1], params[2], params[3], params[4], params[5], params[6] ); return 0; } @@ -1042,17 +1042,18 @@ static int config_query_param_add (udb_query_t *q, oconfig_item_t *ci) data = udb_query_get_user_data (q); if (NULL == data) { - data = (c_psql_user_data_t *) smalloc (sizeof (*data)); + data = calloc (1, sizeof (*data)); if (NULL == data) { log_err ("Out of memory."); return -1; } - memset (data, 0, sizeof (*data)); data->params = NULL; + data->params_num = 0; + + udb_query_set_user_data (q, data); } - tmp = (c_psql_param_t *) realloc (data->params, - (data->params_num + 1) * sizeof (c_psql_param_t)); + tmp = realloc (data->params, (data->params_num + 1) * sizeof (*data->params)); if (NULL == tmp) { log_err ("Out of memory."); return -1; @@ -1076,8 +1077,6 @@ static int config_query_param_add (udb_query_t *q, oconfig_item_t *ci) } data->params_num++; - udb_query_set_user_data (q, data); - return (0); } /* config_query_param_add */ @@ -1161,7 +1160,7 @@ static int c_psql_config_writer (oconfig_item_t *ci) writers = tmp; writer = writers + writers_num; - ++writers_num; + memset (writer, 0, sizeof (*writer)); writer->name = sstrdup (ci->values[0].value.string); writer->statement = NULL; @@ -1181,10 +1180,10 @@ static int c_psql_config_writer (oconfig_item_t *ci) if (status != 0) { sfree (writer->statement); sfree (writer->name); - sfree (writer); return status; } + ++writers_num; return 0; } /* c_psql_config_writer */