diff --git a/app/models/user/querying.rb b/app/models/user/querying.rb index 878d80d4f..ac5a800df 100644 --- a/app/models/user/querying.rb +++ b/app/models/user/querying.rb @@ -69,7 +69,16 @@ module User::Querying def construct_public_followings_sql(opts) Rails.logger.debug("[EVIL-QUERY] user.construct_public_followings_sql") - query = opts[:klass].where(:author_id => Person.in_aspects(opts[:by_members_of]).select("people.id"), :public => true, :pending => false) + + # For PostgreSQL and MySQL/MariaDB we use a different query + # see issue: https://github.com/diaspora/diaspora/issues/5014 + if AppConfig.postgres? + query = opts[:klass].where(:author_id => Person.in_aspects(opts[:by_members_of]).select("people.id"), :public => true, :pending => false) + else + aspects = Aspect.where(:id => opts[:by_members_of]) + person_ids = Person.connection.select_values(people_in_aspects(aspects).select("people.id").to_sql) + query = opts[:klass].where(:author_id => person_ids, :public => true, :pending => false) + end unless(opts[:klass] == Photo) query = query.where(:type => opts[:type])