From 595a9cdd2eddb8d5fa72a869f01335aeb7b6a7c7 Mon Sep 17 00:00:00 2001 From: David Dossot Date: Mon, 23 Jan 2012 10:08:19 -0800 Subject: [PATCH 1/5] sniped compile warning --- src/mysql.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mysql.erl b/src/mysql.erl index 2a99269..769f657 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"), From e1cd4e2dbda497e0613066515cd63fdb5bfc7767 Mon Sep 17 00:00:00 2001 From: David Dossot Date: Mon, 23 Jan 2012 16:14:19 -0800 Subject: [PATCH 2/5] added support for boolean parameters --- src/mysql.erl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mysql.erl b/src/mysql.erl index 769f657..74d4edf 100644 --- a/src/mysql.erl +++ b/src/mysql.erl @@ -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) -> From e16a97341217f59694316f52dd321f04e83367cd Mon Sep 17 00:00:00 2001 From: David Dossot Date: Mon, 23 Jan 2012 18:17:56 -0800 Subject: [PATCH 3/5] added single quote escaping for prepared statement --- src/mysql_conn.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mysql_conn.erl b/src/mysql_conn.erl index c9a450a..47c94b1 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 = From 6b77c66ee7faefc3532fe4a9922c71241d74bd5e Mon Sep 17 00:00:00 2001 From: David Dossot Date: Tue, 24 Jan 2012 10:49:46 -0800 Subject: [PATCH 4/5] removed list of modules from app src --- src/mysql.app.src | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) 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]}]}. From ffb63c836d5485bc140e5e9221a5659187e0e573 Mon Sep 17 00:00:00 2001 From: David Dossot Date: Tue, 7 Feb 2012 11:39:11 -0800 Subject: [PATCH 5/5] tentative fix for correctly handling error packets in get_rows --- src/mysql_conn.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mysql_conn.erl b/src/mysql_conn.erl index 47c94b1..4d46065 100644 --- a/src/mysql_conn.erl +++ b/src/mysql_conn.erl @@ -774,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)}; _ -> @@ -798,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.