diff --git a/server/channels/store/sqlstore/user_store.go b/server/channels/store/sqlstore/user_store.go index fdacc1edc0..a1f733b9ac 100644 --- a/server/channels/store/sqlstore/user_store.go +++ b/server/channels/store/sqlstore/user_store.go @@ -1304,19 +1304,24 @@ func (us SqlUserStore) PermanentDelete(userId string) error { } func (us SqlUserStore) Count(options model.UserCountOptions) (int64, error) { - isPostgreSQL := us.DriverName() == model.DatabaseDriverPostgres - query := us.getQueryBuilder().Select("COUNT(DISTINCT u.Id)").From("Users AS u") + query := us.getQueryBuilder().Select("COUNT(*)").From("Users AS u") if !options.IncludeDeleted { query = query.Where("u.DeleteAt = 0") } + isPostgreSQL := us.DriverName() == model.DatabaseDriverPostgres if options.IncludeBotAccounts { if options.ExcludeRegularUsers { query = query.Join("Bots ON u.Id = Bots.UserId") } } else { - query = query.LeftJoin("Bots ON u.Id = Bots.UserId").Where("Bots.UserId IS NULL") + if isPostgreSQL { + query = query.LeftJoin("Bots ON u.Id = Bots.UserId").Where("Bots.UserId IS NULL") + } else { + query = query.Where(sq.Expr("u.Id NOT IN (SELECT UserId FROM Bots)")) + } + if options.ExcludeRegularUsers { // Currently this doesn't make sense because it will always return 0 return int64(0), errors.New("query with IncludeBotAccounts=false and excludeRegularUsers=true always return 0")