diff --git a/src/mysql.app.src b/src/mysql.app.src index c8883bb..8fa9d3f 100644 --- a/src/mysql.app.src +++ b/src/mysql.app.src @@ -1,10 +1,7 @@ {application, mysql, [{description, "MySQL Library"}, - {vsn, "34"}, - {modules, [mysql, - mysql_auth, - mysql_conn, - mysql_recv]}, + {vsn, "35"}, + {modules, []}, {registered, []}, {applications, [kernel, stdlib]}]}. diff --git a/src/mysql.erl b/src/mysql.erl index 2a99269..74d4edf 100644 --- a/src/mysql.erl +++ b/src/mysql.erl @@ -507,7 +507,7 @@ init([PoolId, Host, Port, User, Password, Database, LogFun, Encoding]) -> Database, Encoding), State = #state{log_fun = LogFun1}, {ok, add_conn(Conn, State)}; - {error, Reason} -> + {error, _Reason} -> ?Log(LogFun1, error, "failed starting first MySQL connection handler, " "exiting"), @@ -806,6 +806,8 @@ encode(Val, true) when is_binary(Val) -> quote(Val); encode(Val, true) -> list_to_binary(encode(Val,false)); +encode(Val, false) when is_boolean(Val) -> + atom_to_list(Val); encode(Val, false) when is_atom(Val) -> quote(atom_to_list(Val)); encode(Val, false) when is_list(Val) -> diff --git a/src/mysql_conn.erl b/src/mysql_conn.erl index c9a450a..4d46065 100644 --- a/src/mysql_conn.erl +++ b/src/mysql_conn.erl @@ -512,8 +512,9 @@ do_execute(State, Name, Params, ExpectedVersion) -> prepare_and_exec(State, Name, Version, Stmt, Params) -> NameBin = atom_to_binary(Name), + StmtEscaped = binary:replace(Stmt,<<"'">>,<<"\\'">>,[global]), StmtBin = <<"PREPARE ", NameBin/binary, " FROM '", - Stmt/binary, "'">>, + StmtEscaped/binary, "'">>, case do_query(State, StmtBin) of {updated, _} -> State1 = @@ -773,6 +774,9 @@ get_rows(Fields, LogFun, RecvPid, Res) -> case do_recv(LogFun, RecvPid, undefined) of {ok, Packet, _Num} -> case Packet of + <<255:8, Rest/binary>> -> + <<_Code:16/little, Message/binary>> = Rest, + {error, Message}; <<254:8, Rest/binary>> when size(Rest) < 8 -> {ok, lists:reverse(Res)}; _ -> @@ -797,10 +801,9 @@ get_row([Field | OtherFields], Data, Res) -> get_row(OtherFields, Rest, [This | Res]). get_with_length(Bin) when is_binary(Bin) -> - {Length, Rest} = get_lcb(Bin), case get_lcb(Bin) of {null, Rest} -> {null, Rest}; - _ -> split_binary(Rest, Length) + {Length, Rest} -> split_binary(Rest, Length) end.