projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
RPM specfile: update changelog
[collectd.git]
/
src
/
postgresql.c
diff --git
a/src/postgresql.c
b/src/postgresql.c
index
98ceb6d
..
e46a471
100644
(file)
--- a/
src/postgresql.c
+++ b/
src/postgresql.c
@@
-381,9
+381,6
@@
static int c_psql_check_connection (c_psql_database_t *db)
c_psql_connect (db);
}
c_psql_connect (db);
}
- /* "ping" */
- PQclear (PQexec (db->conn, "SELECT 42;"));
-
if (CONNECTION_OK != PQstatus (db->conn)) {
PQreset (db->conn);
if (CONNECTION_OK != PQstatus (db->conn)) {
PQreset (db->conn);
@@
-524,6
+521,12
@@
static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q,
if (PGRES_TUPLES_OK != PQresultStatus (res)) {
pthread_mutex_lock (&db->db_lock);
if (PGRES_TUPLES_OK != PQresultStatus (res)) {
pthread_mutex_lock (&db->db_lock);
+ if ((CONNECTION_OK != PQstatus (db->conn))
+ && (0 == c_psql_check_connection (db))) {
+ PQclear (res);
+ return c_psql_exec_query (db, q, prep_area);
+ }
+
log_err ("Failed to execute SQL query: %s",
PQerrorMessage (db->conn));
log_info ("SQL query was: %s",
log_err ("Failed to execute SQL query: %s",
PQerrorMessage (db->conn));
log_info ("SQL query was: %s",
@@
-772,7
+775,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 = ssnprintf (str_ptr, str_len,
if (ds->ds[i].type == DS_TYPE_GAUGE)
status = ssnprintf (str_ptr, str_len,
- ",
%f"
, vl->values[i].gauge);
+ ",
"GAUGE_FORMAT
, vl->values[i].gauge);
else if (store_rates) {
if (rates == NULL)
rates = uc_get_rate (ds, vl);
else if (store_rates) {
if (rates == NULL)
rates = uc_get_rate (ds, vl);
@@
-1039,17
+1042,19
@@
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 = udb_query_get_user_data (q);
if (NULL == data) {
- data =
(c_psql_user_data_t *) s
malloc (sizeof (*data));
+ data = malloc (sizeof (*data));
if (NULL == data) {
log_err ("Out of memory.");
return -1;
}
memset (data, 0, sizeof (*data));
data->params = NULL;
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;
if (NULL == tmp) {
log_err ("Out of memory.");
return -1;
@@
-1073,8
+1078,6
@@
static int config_query_param_add (udb_query_t *q, oconfig_item_t *ci)
}
data->params_num++;
}
data->params_num++;
- udb_query_set_user_data (q, data);
-
return (0);
} /* config_query_param_add */
return (0);
} /* config_query_param_add */
@@
-1158,7
+1161,7
@@
static int c_psql_config_writer (oconfig_item_t *ci)
writers = tmp;
writer = writers + writers_num;
writers = tmp;
writer = writers + writers_num;
-
++writers_num
;
+
memset (writer, 0, sizeof (*writer))
;
writer->name = sstrdup (ci->values[0].value.string);
writer->statement = NULL;
writer->name = sstrdup (ci->values[0].value.string);
writer->statement = NULL;
@@
-1178,10
+1181,10
@@
static int c_psql_config_writer (oconfig_item_t *ci)
if (status != 0) {
sfree (writer->statement);
sfree (writer->name);
if (status != 0) {
sfree (writer->statement);
sfree (writer->name);
- sfree (writer);
return status;
}
return status;
}
+ ++writers_num;
return 0;
} /* c_psql_config_writer */
return 0;
} /* c_psql_config_writer */