aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_config_odbc.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_config_odbc.c')
-rw-r--r--res/res_config_odbc.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/res/res_config_odbc.c b/res/res_config_odbc.c
index 0e317640f..bb73521c9 100644
--- a/res/res_config_odbc.c
+++ b/res/res_config_odbc.c
@@ -444,11 +444,7 @@ static int update_odbc(const char *database, const char *table, const char *keyf
struct config_odbc_obj {
char *sql;
- unsigned long id;
unsigned long cat_metric;
- unsigned long var_metric;
- unsigned long commented;
- char filename[128];
char category[128];
char var_name[128];
char var_val[1024]; /* changed from 128 to 1024 via bug 8251 */
@@ -476,14 +472,10 @@ static SQLHSTMT config_odbc_prepare(struct odbc_obj *obj, void *data)
return NULL;
}
- SQLBindCol(sth, 1, SQL_C_ULONG, &q->id, sizeof(q->id), &q->err);
- SQLBindCol(sth, 2, SQL_C_ULONG, &q->cat_metric, sizeof(q->cat_metric), &q->err);
- SQLBindCol(sth, 3, SQL_C_ULONG, &q->var_metric, sizeof(q->var_metric), &q->err);
- SQLBindCol(sth, 4, SQL_C_ULONG, &q->commented, sizeof(q->commented), &q->err);
- SQLBindCol(sth, 5, SQL_C_CHAR, q->filename, sizeof(q->filename), &q->err);
- SQLBindCol(sth, 6, SQL_C_CHAR, q->category, sizeof(q->category), &q->err);
- SQLBindCol(sth, 7, SQL_C_CHAR, q->var_name, sizeof(q->var_name), &q->err);
- SQLBindCol(sth, 8, SQL_C_CHAR, q->var_val, sizeof(q->var_val), &q->err);
+ SQLBindCol(sth, 1, SQL_C_ULONG, &q->cat_metric, sizeof(q->cat_metric), &q->err);
+ SQLBindCol(sth, 2, SQL_C_CHAR, q->category, sizeof(q->category), &q->err);
+ SQLBindCol(sth, 3, SQL_C_CHAR, q->var_name, sizeof(q->var_name), &q->err);
+ SQLBindCol(sth, 4, SQL_C_CHAR, q->var_val, sizeof(q->var_val), &q->err);
return sth;
}
@@ -494,9 +486,11 @@ static struct ast_config *config_odbc(const char *database, const char *table, c
struct ast_category *cur_cat;
int res = 0;
struct odbc_obj *obj;
- char sql[255] = "";
+ char sqlbuf[1024] = "";
+ char *sql;
+ size_t sqlleft = sizeof(sqlbuf);
unsigned int last_cat_metric = 0;
- SQLSMALLINT rowcount=0;
+ SQLSMALLINT rowcount = 0;
SQLHSTMT stmt;
char last[128] = "";
struct config_odbc_obj q;
@@ -510,8 +504,10 @@ static struct ast_config *config_odbc(const char *database, const char *table, c
if (!obj)
return NULL;
- snprintf(sql, sizeof(sql), "SELECT * FROM %s WHERE filename='%s' and commented=0 ORDER BY filename,cat_metric desc,var_metric asc,category,var_name,var_val,id", table, file);
- q.sql = sql;
+ ast_build_string(&sql, &sqlleft, "SELECT cat_metric, category, var_name, var_val FROM %s ", table);
+ ast_build_string(&sql, &sqlleft, "WHERE filename='%s' AND commented=0 ", file);
+ ast_build_string(&sql, &sqlleft, "ORDER BY cat_metric DESC, var_metric ASC, category, var_name ");
+ q.sql = sqlbuf;
stmt = ast_odbc_prepare_and_execute(obj, config_odbc_prepare, &q);