--- app_addon_sql_mysql.c.orig 2006-11-28 11:40:27.000000000 -0500 +++ app_addon_sql_mysql.c 2007-03-06 15:50:09.000000000 -0500 @@ -226,7 +226,7 @@ if( connid_var && dbhost && dbuser && dbpass && dbname ) { mysql = mysql_init(NULL); if (mysql) { - if (mysql_real_connect(mysql,dbhost,dbuser,dbpass,dbname,0,NULL,0)) { + if (mysql_real_connect(mysql,dbhost,dbuser,dbpass,dbname,0,NULL,CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS)) { add_identifier_and_set_asterisk_int(chan,connid_var,AST_MYSQL_ID_CONNID,mysql); return 0; } @@ -255,7 +255,7 @@ char *querystring; int mysql_query_res; - strsep(&data," "); // eat the first token, we already know it :P + strsep(&data," "); resultid_var = strsep(&data," "); connid = safe_scan_int(&data," ",-1); @@ -263,22 +263,20 @@ if (resultid_var && (connid>=0) && querystring) { if ((mysql=find_identifier(connid,AST_MYSQL_ID_CONNID))!=NULL) { - mysql_query_res = mysql_query(mysql,querystring); - if (mysql_query_res != 0) { - ast_log(LOG_WARNING, "aMYSQL_query: mysql_query failed. Error: %s\n", mysql_error(mysql)); - } - else { - if ((mysqlres=mysql_use_result(mysql))!=NULL) { - add_identifier_and_set_asterisk_int(chan,resultid_var,AST_MYSQL_ID_RESID,mysqlres); - return 0; - } - else if (mysql_field_count(mysql)==0) { - return 0; // See http://dev.mysql.com/doc/mysql/en/mysql_field_count.html - } - else { - ast_log(LOG_WARNING,"aMYSQL_query: mysql_store_result() failed on query %s\n",querystring); - } - } + mysql_query(mysql,querystring); + ast_log(LOG_NOTICE,"mysql_query executed\n"); + if ((mysqlres=mysql_store_result(mysql))!=NULL) { + add_identifier_and_set_asterisk_int(chan,resultid_var,AST_MYSQL_ID_RESID,mysqlres); + if (mysql_more_results(mysql)) + mysql_next_result(mysql); + return 0; + } + else if(!mysql_field_count(mysql)==0 ) { + return 0; + } + else { + ast_log(LOG_WARNING,"aMYSQL_query: mysql_store_result() failed on query %s\n",querystring); + } } else { ast_log(LOG_WARNING,"aMYSQL_query: Invalid connection identifier %d passed in aMYSQL_query\n",connid); @@ -287,8 +285,8 @@ else { ast_log(LOG_WARNING,"aMYSQL_query: missing some arguments\n"); } - - return -1; + mysql_free_result(mysqlres); + return -1; } @@ -320,12 +318,12 @@ pbx_builtin_setvar_helper(chan,s5, s6 ? s6 : "NULL"); } #if EXTRA_LOG - ast_log(LOG_WARNING,"ast_MYSQL_fetch: numFields=%d\n",numFields); + ast_log(LOG_DEBUG,"ast_MYSQL_fetch: numFields=%d\n",numFields); #endif set_asterisk_int(chan,fetchid_var,1); // try more rows } else { #if EXTRA_LOG - ast_log(LOG_WARNING,"ast_MYSQL_fetch : EOF\n"); + ast_log(LOG_DEBUG,"ast_MYSQL_fetch : EOF\n"); #endif set_asterisk_int(chan,fetchid_var,0); // no more rows }