]> granicus.if.org Git - ejabberd/commitdiff
* src/odbc/odbc_queries.erl: replaced string:join/2 function.
authorEvgeniy Khramtsov <xramtsov@gmail.com>
Mon, 29 Dec 2008 09:26:20 +0000 (09:26 +0000)
committerEvgeniy Khramtsov <xramtsov@gmail.com>
Mon, 29 Dec 2008 09:26:20 +0000 (09:26 +0000)
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

ChangeLog
src/odbc/odbc_queries.erl

index ed9ef0f4d66faaed4c0a78d8de6e764efd3952f3..24b09e0b7275257bf7939acddad4d4343bde2e1a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index 7fdc2f5ec7ab1957d6181c0b382c71d743b31360..080a353c8290c00f388ca082645f3261d42f06b3 100644 (file)
 -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) ->