diff options
author | Evgeniy Khramtsov <xramtsov@gmail.com> | 2008-12-29 09:26:20 +0000 |
---|---|---|
committer | Evgeniy Khramtsov <xramtsov@gmail.com> | 2008-12-29 09:26:20 +0000 |
commit | 5a5ab955cbd2f3e9c3fd7ba70d5501b287e15de6 (patch) | |
tree | 42aec0667286ba3ff07aa06e534dd767c31ed1bc | |
parent | * src/odbc/ejabberd_odbc.erl: Print meaningful error message when (diff) |
* src/odbc/odbc_queries.erl: replaced string:join/2 function.
Removed ugly "catch" statement from update_t/4.
WARNING: this change requires last version of mysql driver.
You can update it from ejabberd-modules repository.
SVN Revision: 1762
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/odbc/odbc_queries.erl | 27 |
2 files changed, 21 insertions, 11 deletions
@@ -4,6 +4,11 @@ an SQL transaction exceeds number of restarts. Also rollbacks this transaction to prevent deadlocks. + * src/odbc/odbc_queries.erl: replaced string:join/2 function. + Removed ugly "catch" statement from update_t/4. + WARNING: this change requires last version of mysql driver. + You can update it from ejabberd-modules repository. + 2008-12-28 Mickael Remond <mremond@process-one.net> * src/ejabberd_c2s.erl: We should allow use of bare resource in from by diff --git a/src/odbc/odbc_queries.erl b/src/odbc/odbc_queries.erl index 7fdc2f5e..080a353c 100644 --- a/src/odbc/odbc_queries.erl +++ b/src/odbc/odbc_queries.erl @@ -88,6 +88,14 @@ -define(generic, true). -endif. +%% Almost a copy of string:join/2. +%% We use this version because string:join/2 is relatively +%% new function (introduced in R12B-0). +join([], _Sep) -> + []; +join([H|T], Sep) -> + [H, [[Sep, X] || X <- T]]. + %% ----------------- %% Generic queries -ifdef(generic). @@ -101,17 +109,14 @@ update_t(Table, Fields, Vals, Where) -> Fields, Vals), case ejabberd_odbc:sql_query_t( ["update ", Table, " set ", - string:join(UPairs, ", "), + join(UPairs, ", "), " where ", Where, ";"]) of {updated, 1} -> ok; _ -> - %% The 'catch' herein is used because mysql returns - %% affected rows (not matched as in postgresql). - %% FIXME: need to find more suitable solution. - catch ejabberd_odbc:sql_query_t( - ["insert into ", Table, "(", string:join(Fields, ", "), - ") values ('", string:join(Vals, "', '"), "');"]) + ejabberd_odbc:sql_query_t( + ["insert into ", Table, "(", join(Fields, ", "), + ") values ('", join(Vals, "', '"), "');"]) end. %% F can be either a fun or a list of queries @@ -346,7 +351,7 @@ update_roster(_LServer, Username, SJID, ItemVals, ItemGroups) -> ejabberd_odbc:sql_query_t( ["insert into rostergroups(" " username, jid, grp) " - " values ('", string:join(ItemGroup, "', '"), "');"]) + " values ('", join(ItemGroup, "', '"), "');"]) end, ItemGroups). @@ -358,13 +363,13 @@ update_roster_sql(Username, SJID, ItemVals, ItemGroups) -> " username, jid, nick, " " subscription, ask, askmessage, " " server, subscribe, type) " - " values ('", string:join(ItemVals, "', '"), "');"], + " values ('", join(ItemVals, "', '"), "');"], ["delete from rostergroups " " where username='", Username, "' " " and jid='", SJID, "';"]] ++ [["insert into rostergroups(" " username, jid, grp) " - " values ('", string:join(ItemGroup, "', '"), "');"] || + " values ('", join(ItemGroup, "', '"), "');"] || ItemGroup <- ItemGroups]. roster_subscribe(_LServer, Username, SJID, ItemVals) -> @@ -520,7 +525,7 @@ set_privacy_list(ID, RItems) -> "match_presence_out " ") " "values ('", ID, "', '", - string:join(Items, "', '"), "');"]) + join(Items, "', '"), "');"]) end, RItems). del_privacy_lists(LServer, Server, Username) -> |