]> granicus.if.org Git - ejabberd/commitdiff
User count performance improvements
authorChristophe Romain <christophe.romain@process-one.net>
Thu, 20 Dec 2007 17:12:45 +0000 (17:12 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Thu, 20 Dec 2007 17:12:45 +0000 (17:12 +0000)
SVN Revision: 1086

ChangeLog
src/odbc/odbc_queries.erl

index 4ee67440e8ad25ef723f6ea9003e0c82240f85e7..6732f100344d271709264390cd7804e4fadb3994 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@
 
        * src/mod_pubsub/mod_pubsub.erl: PEP notification bugfix
 
+       * src/odbc/odbc_queries.erl: User count performance improvements
+       (EJAB-239)
+
 2007-12-20  Badlop  <badlop@process-one.net>
 
        * src/msgs/zh.msg: Small update (thanks to Shelley Shyan)
index 98e074b389b4e6cbed856ebb0aa134161a08b222..e4daefbb7c7d21e7703f59e1e11139712fd3cbc2 100644 (file)
@@ -147,17 +147,26 @@ list_users(LServer, [{prefix, Prefix},
                     "limit ~w offset ~w ", [Prefix, Limit, Offset])).
 
 users_number(LServer) ->
-    case ejabberd_config:get_local_option(
-          {pgsql_users_number_estimate, LServer}) of
+    case element(1, ejabberd_config:get_local_option({odbc_server, LServer})) of
+    mysql ->
+       ejabberd_odbc:sql_query(
+       LServer,
+       "select table_rows from information_schema.tables where table_name='users'");
+    pgsql ->
+       case ejabberd_config:get_local_option({pgsql_users_number_estimate, LServer}) of
        true ->
            ejabberd_odbc:sql_query(
-             LServer,
-             "select reltuples from pg_class "
-             "where oid = 'users'::regclass::oid");
+           LServer,
+           "select reltuples from pg_class where oid = 'users'::regclass::oid");
        _ ->
            ejabberd_odbc:sql_query(
-             LServer,
-             "select count(*) from users")
+           LServer,
+           "select count(*) from users")
+        end;
+    _ ->
+       ejabberd_odbc:sql_query(
+       LServer,
+       "select count(*) from users")
     end.
 
 users_number(LServer, [{prefix, Prefix}]) when is_list(Prefix) ->