X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpostgresql.c;h=c240e5438297b28e29e7b04d7f1180dd102a979b;hb=d3db12b73a1c3c17a2dfc0ba96ec99490088c957;hp=e7b247e77e8fa983d131012d1149c869c24e5ff9;hpb=7bbba254348a7fa98c4337455a3e0eae88ce0e86;p=collectd.git diff --git a/src/postgresql.c b/src/postgresql.c index e7b247e7..c240e543 100644 --- 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); } - /* "ping" */ - PQclear (PQexec (db->conn, "SELECT 42;")); - 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 ((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", @@ -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, - ",%f", vl->values[i].gauge); + ","GAUGE_FORMAT, vl->values[i].gauge); else if (store_rates) { if (rates == NULL) rates = uc_get_rate (ds, vl); @@ -971,7 +974,7 @@ static int c_psql_flush (cdtime_t timeout, size_t i; if ((ud != NULL) && (ud->data != NULL)) { - dbs = (c_psql_database_t **)&ud->data; + dbs = (void *)&ud->data; dbs_num = 1; }