diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-04-04 17:32:28 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-04 17:32:28 +0900 |
commit | c9981ae6e022023a46dbab2ace62f7eb256a0816 (patch) | |
tree | 24318e4f244c28480a936d8c76a282faf1b4ac24 /activerecord/lib | |
parent | 39d42dbde2571a9a713007c1a8e9f202e004cdeb (diff) | |
parent | 060e09dfb3637b03ef026c5e6b69432c08995c47 (diff) | |
download | rails-c9981ae6e022023a46dbab2ace62f7eb256a0816.tar.gz rails-c9981ae6e022023a46dbab2ace62f7eb256a0816.tar.bz2 rails-c9981ae6e022023a46dbab2ace62f7eb256a0816.zip |
Merge pull request #35850 from kamipo/fix_count_all_with_eager_loading_and_select_and_order
Fix `count(:all)` with eager loading and explicit select and order
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation/calculations.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index 0384023a17..29b1dc97b7 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -129,11 +129,12 @@ module ActiveRecord relation = apply_join_dependency if operation.to_s.downcase == "count" - relation.distinct! - # PostgreSQL: ORDER BY expressions must appear in SELECT list when using DISTINCT - if (column_name == :all || column_name.nil?) && select_values.empty? - relation.order_values = [] + unless distinct_value || distinct_select?(column_name || select_for_count) + relation.distinct! + relation.select_values = [ klass.primary_key || table[Arel.star] ] end + # PostgreSQL: ORDER BY expressions must appear in SELECT list when using DISTINCT + relation.order_values = [] end relation.calculate(operation, column_name) |