X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Foracle.c;h=c76bce2011c2a677a6eeaa17b49b122a29c45d84;hp=2d98f0aa3d2734fc682e8534ff76d623647f64e3;hb=d486225f89ea52d8ed2b4242eba2ad94c409f837;hpb=6026e3162e522b133d10596710527d24c2921b55 diff --git a/src/oracle.c b/src/oracle.c index 2d98f0aa..c76bce20 100644 --- a/src/oracle.c +++ b/src/oracle.c @@ -62,6 +62,7 @@ struct o_database_s { char *connect_id; char *username; char *password; + char *plugin_name; udb_query_preparation_area_t **q_prep_areas; udb_query_t **queries; @@ -74,10 +75,10 @@ typedef struct o_database_s o_database_t; /* * Global variables */ -static udb_query_t **queries = NULL; -static size_t queries_num = 0; -static o_database_t **databases = NULL; -static size_t databases_num = 0; +static udb_query_t **queries; +static size_t queries_num; +static o_database_t **databases; +static size_t databases_num; OCIEnv *oci_env = NULL; OCIError *oci_error = NULL; @@ -141,6 +142,7 @@ static void o_database_free(o_database_t *db) /* {{{ */ sfree(db->username); sfree(db->password); sfree(db->queries); + sfree(db->plugin_name); if (db->q_prep_areas != NULL) for (size_t i = 0; i < db->queries_num; ++i) @@ -192,6 +194,7 @@ static int o_config_add_database(oconfig_item_t *ci) /* {{{ */ db->connect_id = NULL; db->username = NULL; db->password = NULL; + db->plugin_name = NULL; status = cf_util_get_string(ci, &db->name); if (status != 0) { @@ -211,6 +214,8 @@ static int o_config_add_database(oconfig_item_t *ci) /* {{{ */ status = cf_util_get_string(child, &db->username); else if (strcasecmp("Password", child->key) == 0) status = cf_util_get_string(child, &db->password); + else if (strcasecmp("Plugin", child->key) == 0) + status = cf_util_get_string(child, &db->plugin_name); else if (strcasecmp("Query", child->key) == 0) status = udb_query_pick_from_list(child, queries, queries_num, &db->queries, &db->queries_num); @@ -303,10 +308,10 @@ static int o_config(oconfig_item_t *ci) /* {{{ */ } if (queries_num > 0) { - DEBUG("oracle plugin: o_config: queries_num = %zu; queries[0] = %p; " - "udb_query_get_user_data (queries[0]) = %p;", - queries_num, (void *)queries[0], - udb_query_get_user_data(queries[0])); + DEBUG( + "oracle plugin: o_config: queries_num = %" PRIsz "; queries[0] = %p; " + "udb_query_get_user_data (queries[0]) = %p;", + queries_num, (void *)queries[0], udb_query_get_user_data(queries[0])); } } /* for (ci->children) */ @@ -476,8 +481,7 @@ static int o_read_database_query(o_database_t *db, /* {{{ */ column_names[i] = column_names[i - 1] + DATA_MAX_NAME_LEN; ALLOC_OR_FAIL(column_values, column_num * sizeof(char *)); - ALLOC_OR_FAIL(column_values[0], - column_num * DATA_MAX_NAME_LEN); + ALLOC_OR_FAIL(column_values[0], column_num * DATA_MAX_NAME_LEN); for (size_t i = 1; i < column_num; i++) column_values[i] = column_values[i - 1] + DATA_MAX_NAME_LEN; @@ -528,8 +532,8 @@ static int o_read_database_query(o_database_t *db, /* {{{ */ memcpy(column_names[i], column_name, column_name_length); column_names[i][column_name_length] = 0; - DEBUG("oracle plugin: o_read_database_query: column_names[%zu] = %s; " - "column_name_length = %" PRIu32 ";", + DEBUG("oracle plugin: o_read_database_query: column_names[%" PRIsz "] = %s;" + " column_name_length = %" PRIu32 ";", i, column_names[i], (uint32_t)column_name_length); status = OCIDefineByPos(oci_statement, &oci_defines[i], oci_error, @@ -545,7 +549,8 @@ static int o_read_database_query(o_database_t *db, /* {{{ */ status = udb_query_prepare_result( q, prep_area, (db->host != NULL) ? db->host : hostname_g, - /* plugin = */ "oracle", db->name, column_names, column_num, + /* plugin = */ (db->plugin_name != NULL) ? db->plugin_name : "oracle", + db->name, column_names, column_num, /* interval = */ 0); if (status != 0) { ERROR("oracle plugin: o_read_database_query (%s, %s): " @@ -636,7 +641,7 @@ static int o_read_database(o_database_t *db) /* {{{ */ if ((status != OCI_SUCCESS) && (status != OCI_SUCCESS_WITH_INFO)) { char errfunc[256]; - ssnprintf(errfunc, sizeof(errfunc), "OCILogon(\"%s\")", db->connect_id); + snprintf(errfunc, sizeof(errfunc), "OCILogon(\"%s\")", db->connect_id); o_report_error("o_read_database", db->name, NULL, errfunc, oci_error); DEBUG("oracle plugin: OCILogon (%s): db->oci_service_context = %p;",