diff options
author | Jon Leighton <j@jonathanleighton.com> | 2013-06-09 06:02:56 -0700 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2013-06-09 06:02:56 -0700 |
commit | f5e133e830940731b74c4e12118eab90054d32ec (patch) | |
tree | 73f6e84f6cf2cdfa40e9a91da09432404c0ccb7f /activerecord/lib | |
parent | ae6e6d953084d1966e52cc06ffe24131f0115cc1 (diff) | |
parent | da9b5d4a8435b744fcf278fffd6d7f1e36d4a4f2 (diff) | |
download | rails-f5e133e830940731b74c4e12118eab90054d32ec.tar.gz rails-f5e133e830940731b74c4e12118eab90054d32ec.tar.bz2 rails-f5e133e830940731b74c4e12118eab90054d32ec.zip |
Merge pull request #10710 from senny/5554_let_the_database_raise_on_counts
Remove column restrictions for `#count`, let the database raise if the SQL is invalid.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/relation.rb | 2 | ||||
-rw-r--r-- | activerecord/lib/active_record/relation/calculations.rb | 16 |
2 files changed, 7 insertions, 11 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index d54479edbb..d37471e9ad 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -247,7 +247,7 @@ module ActiveRecord def empty? return @records.empty? if loaded? - c = count + c = count(:all) c.respond_to?(:zero?) ? c.zero? : c.empty? end diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index ccb48247b7..4becf3980d 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -207,15 +207,18 @@ module ActiveRecord end if operation == "count" - column_name ||= (select_for_count || :all) + if select_values.present? + column_name ||= select_values.join(", ") + else + column_name ||= :all + end unless arel.ast.grep(Arel::Nodes::OuterJoin).empty? distinct = true end column_name = primary_key if column_name == :all && distinct - - distinct = nil if column_name =~ /\s*DISTINCT\s+/i + distinct = nil if column_name =~ /\s*DISTINCT[\s(]+/i end if group_values.any? @@ -376,13 +379,6 @@ module ActiveRecord column ? column.type_cast(value) : value end - def select_for_count - if select_values.present? - select = select_values.join(", ") - select if select !~ /[,*]/ - end - end - def build_count_subquery(relation, column_name, distinct) column_alias = Arel.sql('count_column') subquery_alias = Arel.sql('subquery_for_count') |