diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-04-04 13:02:27 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-04 13:02:27 +0900 |
commit | d49761cd66f55e18e0a7ee5138de0649c18654f0 (patch) | |
tree | b568fe0be81c0a1672d1cd63f39a1a4c33c81cba /activerecord/lib/active_record/relation/calculations.rb | |
parent | eda2d7d7b91d78296ed863ff580163355b7b92e8 (diff) | |
parent | 7fb2ba5ed85abe210f33eb49e5820cfe8973530d (diff) | |
download | rails-d49761cd66f55e18e0a7ee5138de0649c18654f0.tar.gz rails-d49761cd66f55e18e0a7ee5138de0649c18654f0.tar.bz2 rails-d49761cd66f55e18e0a7ee5138de0649c18654f0.zip |
Merge pull request #35847 from kamipo/optimizer_hints_with_count_subquery
Optimizer hints should be applied on Top level query as much as possible
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r-- | activerecord/lib/active_record/relation/calculations.rb | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb index 4f9ddf302e..0384023a17 100644 --- a/activerecord/lib/active_record/relation/calculations.rb +++ b/activerecord/lib/active_record/relation/calculations.rb @@ -416,16 +416,17 @@ module ActiveRecord def build_count_subquery(relation, column_name, distinct) if column_name == :all + column_alias = Arel.star relation.select_values = [ Arel.sql(FinderMethods::ONE_AS_ONE) ] unless distinct else column_alias = Arel.sql("count_column") relation.select_values = [ aggregate_column(column_name).as(column_alias) ] end - subquery = relation.arel.as(Arel.sql("subquery_for_count")) - select_value = operation_over_aggregate_column(column_alias || Arel.star, "count", false) + subquery_alias = Arel.sql("subquery_for_count") + select_value = operation_over_aggregate_column(column_alias, "count", false) - Arel::SelectManager.new(subquery).project(select_value) + relation.build_subquery(subquery_alias, select_value) end end end |