aboutsummaryrefslogtreecommitdiff
path: root/src/odbc/odbc_queries.erl
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2007-12-20 17:12:45 +0000
committerChristophe Romain <christophe.romain@process-one.net>2007-12-20 17:12:45 +0000
commit1ba15b207c30aafc5c4ef1c464d356442139837f (patch)
tree52c47bae8436f30acc480232c995daaa2902fe64 /src/odbc/odbc_queries.erl
parentPEP notification bugfix (diff)
User count performance improvements
SVN Revision: 1086
Diffstat (limited to 'src/odbc/odbc_queries.erl')
-rw-r--r--src/odbc/odbc_queries.erl23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/odbc/odbc_queries.erl b/src/odbc/odbc_queries.erl
index 98e074b38..e4daefbb7 100644
--- a/src/odbc/odbc_queries.erl
+++ b/src/odbc/odbc_queries.erl
@@ -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) ->