diff --git a/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb b/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb index abc690744..b1a272d1d 100644 --- a/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb +++ b/lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb @@ -8,53 +8,6 @@ module ConnectionAdapters module SQLServer module CoreExt module Calculations - def calculate(operation, column_name) - klass.with_connection do |connection| - if connection.sqlserver? - _calculate(operation, column_name) - else - super - end - end - end - - private - - # Same as original `calculate` method except we don't perform PostgreSQL hack that removes ordering. - def _calculate(operation, column_name) - operation = operation.to_s.downcase - - if @none - case operation - when "count", "sum" - result = group_values.any? ? Hash.new : 0 - return @async ? Promise::Complete.new(result) : result - when "average", "minimum", "maximum" - result = group_values.any? ? Hash.new : nil - return @async ? Promise::Complete.new(result) : result - end - end - - if has_include?(column_name) - relation = apply_join_dependency - - if operation == "count" - unless distinct_value || distinct_select?(column_name || select_for_count) - relation.distinct! - relation.select_values = Array(klass.primary_key || table[Arel.star]) - end - # PostgreSQL: ORDER BY expressions must appear in SELECT list when using DISTINCT - # Start of monkey-patch - # relation.order_values = [] if group_values.empty? - # End of monkey-patch - end - - relation.calculate(operation, column_name) - else - perform_calculation(operation, column_name) - end - end - def build_count_subquery(relation, column_name, distinct) klass.with_connection do |connection| relation = relation.unscope(:order) if connection.sqlserver?