aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-07-19 18:10:04 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-07-22 08:40:16 +0900
commita265d4b29cf9c1be84603ec53a6f8b17b53321a9 (patch)
tree1a6201eaaedb9c03d3c6b388229731268f089998 /activerecord/lib/active_record/relation.rb
parentaf08044d6a6aa87d3b389f63c78564be2f60b1ab (diff)
downloadrails-a265d4b29cf9c1be84603ec53a6f8b17b53321a9.tar.gz
rails-a265d4b29cf9c1be84603ec53a6f8b17b53321a9.tar.bz2
rails-a265d4b29cf9c1be84603ec53a6f8b17b53321a9.zip
Fix `COUNT(DISTINCT ...)` with `ORDER BY` and `LIMIT`
Since #26972, `ORDER BY` is kept if `LIMIT` is presented for performance. But in most SQL servers (e.g. PostgreSQL, SQL Server, etc), `ORDER BY` expressions must appear in select list for `SELECT DISTINCT`. We should not replace existing select list in that case.
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 90e4fe98d5..7b4e44f61c 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -648,6 +648,10 @@ module ActiveRecord
@values == klass.unscoped.values
end
+ def has_limit_or_offset? # :nodoc:
+ limit_value || offset_value
+ end
+
protected
def load_records(records)