From aba7150af13b437db980200b27ecb29636f640d4 Mon Sep 17 00:00:00 2001
From: Jerome Sautret <jerome.sautret@process-one.net>
Date: Fri, 4 Jul 2014 17:28:19 +0200
Subject: [PATCH] Return MySQL error messages as binary.

---
 src/ejabberd_odbc.erl | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/ejabberd_odbc.erl b/src/ejabberd_odbc.erl
index 49a4f30b4..9dcf37cc2 100644
--- a/src/ejabberd_odbc.erl
+++ b/src/ejabberd_odbc.erl
@@ -450,7 +450,7 @@ sql_query_internal(Query) ->
 		?DEBUG("MySQL, Send query~n~p~n", [Query]),  
 		%%squery to be able to specify result_type = binary
 		%%[Query] because p1_mysql_conn expect query to be a list (elements can be binaries, or iolist)
-		%%        but doesn't accept just a binary 
+		%%        but doesn't accept just a binary
 		R = mysql_to_odbc(p1_mysql_conn:squery(State#state.db_ref,
 						   [Query], self(),
 						   [{timeout, (?TRANSACTION_TIMEOUT) - 1000},
@@ -553,10 +553,16 @@ mysql_to_odbc({data, MySQLRes}) ->
     mysql_item_to_odbc(p1_mysql:get_result_field_info(MySQLRes),
 		       p1_mysql:get_result_rows(MySQLRes));
 mysql_to_odbc({error, MySQLRes})
-    when is_binary(MySQLRes) ->
+  when is_binary(MySQLRes) ->
     {error, MySQLRes};
+mysql_to_odbc({error, MySQLRes})
+  when is_list(MySQLRes) ->
+    {error, list_to_binary(MySQLRes)};
 mysql_to_odbc({error, MySQLRes}) ->
-    {error, p1_mysql:get_result_reason(MySQLRes)}.
+    {error, p1_mysql:get_result_reason(MySQLRes)};
+mysql_to_odbc(ok) ->
+    ok.
+
 
 %% When tabular data is returned, convert it to the ODBC formalism
 mysql_item_to_odbc(Columns, Recs) ->
-- 
2.40.0