'dbi', 'oracle' and 'postgresql' plugins: Use 'Plugin' as option name
[collectd.git] / src / postgresql.c
index 3a388a5..45cd001 100644 (file)
@@ -139,6 +139,7 @@ typedef struct {
   char *password;
 
   char *instance;
+  char *plugin_name;
 
   char *sslmode;
 
@@ -250,6 +251,8 @@ static c_psql_database_t *c_psql_database_new(const char *name) {
 
   db->instance = sstrdup(name);
 
+  db->plugin_name = NULL;
+
   db->sslmode = NULL;
 
   db->krbsrvname = NULL;
@@ -300,6 +303,8 @@ static void c_psql_database_delete(void *data) {
 
   sfree(db->instance);
 
+  sfree(db->plugin_name);
+
   sfree(db->sslmode);
 
   sfree(db->krbsrvname);
@@ -407,7 +412,7 @@ static PGresult *c_psql_exec_query_params(c_psql_database_t *db, udb_query_t *q,
   char interval[64];
 
   if ((data == NULL) || (data->params_num == 0))
-    return (c_psql_exec_query_noparams(db, q));
+    return c_psql_exec_query_noparams(db, q);
 
   assert(db->max_params_num >= data->params_num);
 
@@ -438,8 +443,7 @@ static PGresult *c_psql_exec_query_params(c_psql_database_t *db, udb_query_t *q,
   }
 
   return PQexecParams(db->conn, udb_query_get_statement(q), data->params_num,
-                      NULL, (const char *const *)params, NULL, NULL,
-                      /* return text data */ 0);
+                      NULL, (const char *const*)params, NULL, NULL, 0);
 } /* c_psql_exec_query_params */
 
 /* db->db_lock must be locked when calling this function */
@@ -540,9 +544,11 @@ static int c_psql_exec_query(c_psql_database_t *db, udb_query_t *q,
   else
     host = db->host;
 
-  status =
-      udb_query_prepare_result(q, prep_area, host, "postgresql", db->instance,
-                               column_names, (size_t)column_num, db->interval);
+  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);
+
   if (0 != status) {
     log_err("udb_query_prepare_result failed with status %i.", status);
     BAIL_OUT(-1);
@@ -1009,7 +1015,7 @@ static int config_query_param_add(udb_query_t *q, oconfig_item_t *ci) {
   }
 
   data->params_num++;
-  return (0);
+  return 0;
 } /* config_query_param_add */
 
 static int config_query_callback(udb_query_t *q, oconfig_item_t *ci) {
@@ -1018,7 +1024,7 @@ static int config_query_callback(udb_query_t *q, oconfig_item_t *ci) {
 
   log_err("Option not allowed within a Query block: `%s'", ci->key);
 
-  return (-1);
+  return -1;
 } /* config_query_callback */
 
 static int config_add_writer(oconfig_item_t *ci, c_psql_writer_t *src_writers,
@@ -1140,6 +1146,8 @@ static int c_psql_config_database(oconfig_item_t *ci) {
       cf_util_get_string(c, &db->password);
     else if (0 == strcasecmp(c->key, "Instance"))
       cf_util_get_string(c, &db->instance);
+    else if (0 == strcasecmp (c->key, "Plugin"))
+      cf_util_get_string (c, &db->plugin_name);
     else if (0 == strcasecmp(c->key, "SSLMode"))
       cf_util_get_string(c, &db->sslmode);
     else if (0 == strcasecmp(c->key, "KRBSrvName"))