diff --git a/Gemfile b/Gemfile index f74d69fdc8370d4c463d58ea596a3e0b3681ae11..dfe54fda99eb61c778747ef82b5ea7049c02c530 100644 --- a/Gemfile +++ b/Gemfile @@ -126,6 +126,7 @@ group :test do gem 'rspec-rails', '>= 2.0.0' gem "selenium-webdriver", "~> 2.7.0" gem 'webmock', :require => false + gem 'sqlite3' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index ab60110e5465931171fe6dae9f09bc4b5247e462..4f0df15caa87e60bffaa5a6d8765279eda33558c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -425,6 +425,7 @@ GEM sinatra (1.2.6) rack (~> 1.1) tilt (< 2.0, >= 1.2.2) + sqlite3 (1.3.4) subexec (0.0.4) systemu (2.4.0) term-ansicolor (1.0.6) @@ -534,6 +535,7 @@ DEPENDENCIES selenium-webdriver (~> 2.7.0) settingslogic (= 2.0.6) sod! + sqlite3 thin (= 1.2.11) twitter (= 1.5.0) typhoeus diff --git a/config/environment.rb b/config/environment.rb index fdefe893be1c774d637d26b005ff184526290b10..50705b86175799ee57fc453018055198dbe9e21b 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -7,6 +7,10 @@ def postgres? @using_postgres ||= defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) && ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) end +def sqlite? + @using_sqlite ||= defined?(ActiveRecord::ConnectionAdapters::SQLite3Adapter) && ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLite3Adapter +end + # Load the rails application require File.expand_path('../application', __FILE__) Haml::Template.options[:format] = :html5 diff --git a/lib/diaspora/user/querying.rb b/lib/diaspora/user/querying.rb index b7fbeb576b515a0aea133e4aaf3b2d53c1b719c7..0cc63f481c8672a70b96338ab0bacb30eacf2944 100644 --- a/lib/diaspora/user/querying.rb +++ b/lib/diaspora/user/querying.rb @@ -39,10 +39,11 @@ module Diaspora posts_from_self = posts_from_self.joins(:aspect_visibilities).where(:aspect_visibilities => {:aspect_id => opts[:by_members_of]}) end - unless defined?(ActiveRecord::ConnectionAdapters::SQLite3Adapter) && ActiveRecord::Base.connection.class == ActiveRecord::ConnectionAdapters::SQLite3Adapter - posts_from_others = posts_from_others.select(select_clause).limit(opts[:limit]).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) - posts_from_self = posts_from_self.select(select_clause).limit(opts[:limit]).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) - all_posts = "(#{posts_from_others.to_sql}) UNION ALL (#{posts_from_self.to_sql}) ORDER BY #{opts[:order]} LIMIT #{opts[:limit]}" + unless sqlite? + posts_from_others = posts_from_others.select(select_clause).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) + posts_from_self = posts_from_self.select(select_clause).order(order_with_table).where(Post.arel_table[order_field].lt(opts[:max_time])) + + all_posts = "(#{posts_from_others.to_sql} LIMIT #{opts[:limit]}) UNION ALL (#{posts_from_self.to_sql} LIMIT #{opts[:limit]}) ORDER BY #{opts[:order]} LIMIT #{opts[:limit]}" else posts_from_others = posts_from_others.select(select_clause) posts_from_self = posts_from_self.select(select_clause)