X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fpostgresql.c;h=e6527b95e810640b0f98c175b90a0b95bb925e17;hb=93d32dedac1cea88e5a9bd335a6413e040ed3566;hp=4e1c1e0c8127bebb693d71fc0b60116a84f1ad35;hpb=4d380d9f1c3b748f51916cbf8d49b51f4d0d8d12;p=collectd.git diff --git a/src/postgresql.c b/src/postgresql.c index 4e1c1e0c..e6527b95 100644 --- a/src/postgresql.c +++ b/src/postgresql.c @@ -287,9 +287,9 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q) int rows_num; int status; - int i; + int row, col; - /* The user data may hold parameter information */ + /* The user data may hold parameter information, but may be NULL. */ data = udb_query_get_user_data (q); /* Versions up to `3' don't know how to handle parameters. */ @@ -340,12 +340,12 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q) BAIL_OUT (-1); } - for (i = 0; i < column_num; i++) { + for (col = 0; col < column_num; ++col) { /* Pointers returned by `PQfname' are freed by `PQclear' via * `BAIL_OUT'. */ - column_names[i] = PQfname (res, i); - if (NULL == column_names[i]) { - log_err ("PQfname (%i) failed.", i); + column_names[col] = PQfname (res, col); + if (NULL == column_names[col]) { + log_err ("Failed to resolve name of column %i.", col); BAIL_OUT (-1); } } @@ -364,21 +364,20 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q) BAIL_OUT (-1); } - for (i = 0; i < rows_num; ++i) { - int j; - - for (j = 0; j < column_num; j++) { + for (row = 0; row < rows_num; ++row) { + for (col = 0; col < column_num; ++col) { /* Pointers returned by `PQgetvalue' are freed by `PQclear' via * `BAIL_OUT'. */ - column_values[j] = PQgetvalue (res, /* row = */ i, /* col = */ j); - if (NULL == column_values[j]) { - log_err ("PQgetvalue (%i, %i) failed.", i, j); + column_values[col] = PQgetvalue (res, row, col); + if (NULL == column_values[col]) { + log_err ("Failed to get value at (row = %i, col = %i).", + row, col); break; } } /* check for an error */ - if (j < column_num) + if (col < column_num) continue; status = udb_query_handle_result (q, column_values); @@ -386,7 +385,7 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q) log_err ("udb_query_handle_result failed with status %i.", status); } - } /* for (i = 0; i < rows_num; ++i) */ + } /* for (row = 0; row < rows_num; ++row) */ BAIL_OUT (0); #undef BAIL_OUT @@ -497,7 +496,7 @@ static int c_psql_init (void) server_host = PQhost (db->conn); server_version = PQserverVersion (db->conn); - log_info ("Sucessfully connected to database %s (user %s) " + log_info ("Successfully connected to database %s (user %s) " "at server %s%s%s (server version: %d.%d.%d, " "protocol version: %d, pid: %d)", PQdb (db->conn), PQuser (db->conn), @@ -631,6 +630,12 @@ static int c_psql_config_database (oconfig_item_t *ci) &db->queries, &db->queries_num); } + for (i = 0; (size_t)i < db->queries_num; ++i) { + c_psql_user_data_t *data; + data = udb_query_get_user_data (db->queries[i]); + if ((data != NULL) && (data->params_num > db->max_params_num)) + db->max_params_num = data->params_num; + } return 0; } /* c_psql_config_database */