postgresql plugin: Added support for the "interval" parameter.
authorSebastian Harl <sh@tokkee.org>
Sun, 1 Feb 2009 22:09:08 +0000 (23:09 +0100)
committerSebastian Harl <sh@tokkee.org>
Sun, 1 Feb 2009 22:13:54 +0000 (23:13 +0100)
This query parameter expands to the interval collectd is using.

src/collectd.conf.pod
src/postgresql.c

index 00c7ed3..67fe3b6 100644 (file)
@@ -1663,7 +1663,7 @@ The returned lines will be handled separately one after another.
 This is a deprecated synonym for B<Statement>. It will be removed in version 5
 of collectd.
 
-=item B<Param> I<hostname>|I<database>|I<username>
+=item B<Param> I<hostname>|I<database>|I<username>|I<interval>
 
 Specify the parameters which should be passed to the SQL query. The parameters
 are referred to in the SQL query as B<$1>, B<$2>, etc. in the same order as
@@ -1685,6 +1685,10 @@ The name of the database of the current connection.
 
 The username used to connect to the database.
 
+=item I<interval>
+
+The interval collectd is using (as specified by the B<Interval> option).
+
 =back
 
 Please note that parameters are only supported by PostgreSQL's protocol
index bb2f0d2..2814cc4 100644 (file)
@@ -80,6 +80,7 @@ typedef enum {
        C_PSQL_PARAM_HOST = 1,
        C_PSQL_PARAM_DB,
        C_PSQL_PARAM_USER,
+       C_PSQL_PARAM_INTERVAL,
 } c_psql_param_t;
 
 typedef struct {
@@ -550,6 +551,7 @@ static PGresult *c_psql_exec_query_params (c_psql_database_t *db,
                c_psql_query_t *query)
 {
        char *params[db->max_params_num];
+       char  interval[64];
        int   i;
 
        assert (db->max_params_num >= query->params_num);
@@ -566,6 +568,10 @@ static PGresult *c_psql_exec_query_params (c_psql_database_t *db,
                        case C_PSQL_PARAM_USER:
                                params[i] = db->user;
                                break;
+                       case C_PSQL_PARAM_INTERVAL:
+                               ssnprintf (interval, sizeof (interval), "%i", interval_g);
+                               params[i] = interval;
+                               break;
                        default:
                                assert (0);
                }
@@ -828,6 +834,8 @@ static int config_set_param (c_psql_query_t *query, const oconfig_item_t *ci)
                param = C_PSQL_PARAM_DB;
        else if (0 == strcasecmp (param_str, "username"))
                param = C_PSQL_PARAM_USER;
+       else if (0 == strcasecmp (param_str, "interval"))
+               param = C_PSQL_PARAM_INTERVAL;
        else {
                log_err ("Invalid parameter \"%s\".", param_str);
                return 1;