Sha256: c394566cb2f1a2834e376a6d530bb3a7c8a7141a4de8c6b13b7d06f2b01b4c4f

Contents?: true

Size: 1.4 KB

Versions: 13

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

require "active_record/relation"
require "active_record/version"

module ActiveRecord
  module ConnectionAdapters
    module SQLServer
      module CoreExt
        module Calculations
          # Same as original except we don't perform PostgreSQL hack that removes ordering.
          def calculate(operation, column_name)
            return super unless klass.connection.adapter_name == "SQLServer"

            if has_include?(column_name)
              relation = apply_join_dependency

              if operation.to_s.downcase == "count"
                unless distinct_value || distinct_select?(column_name || select_for_count)
                  relation.distinct!
                  relation.select_values = [klass.primary_key || table[Arel.star]]
                end
              end

              relation.calculate(operation, column_name)
            else
              perform_calculation(operation, column_name)
            end
          end

          private

          def build_count_subquery(relation, column_name, distinct)
            return super unless klass.connection.adapter_name == "SQLServer"

            super(relation.unscope(:order), column_name, distinct)
          end
        end
      end
    end
  end
end

ActiveSupport.on_load(:active_record) do
  mod = ActiveRecord::ConnectionAdapters::SQLServer::CoreExt::Calculations
  ActiveRecord::Relation.include(mod)
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
activerecord-sqlserver-adapter-7.0.6 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.5.1 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.5.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.4.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.3.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.2.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-6.1.3.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.1.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.0.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-7.0.0.0.rc1 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-6.1.2.1 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-6.1.2.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb
activerecord-sqlserver-adapter-6.1.1.0 lib/active_record/connection_adapters/sqlserver/core_ext/calculations.rb