Skip to content

Commit 6283909

Browse files
committed
Patched Relation#build_count_subquery. Fixes #613.
1 parent b2a9996 commit 6283909

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## v5.1.3
2+
3+
#### Fixed
4+
5+
* Patched `Relation#build_count_subquery`. Fixes #613.
6+
7+
18
## v5.1.2
29

310
#### Fixed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
require 'active_record/relation'
2+
require 'active_record/version'
3+
4+
module ActiveRecord
5+
module ConnectionAdapters
6+
module SQLServer
7+
module CoreExt
8+
module Calculations
9+
private
10+
11+
def build_count_subquery(relation, column_name, distinct)
12+
relation.select_values = [
13+
if column_name == :all
14+
distinct ? table[Arel.star] : Arel.sql(FinderMethods::ONE_AS_ONE)
15+
else
16+
column_alias = Arel.sql("count_column")
17+
aggregate_column(column_name).as(column_alias)
18+
end
19+
]
20+
21+
subquery = relation.arel.as(Arel.sql("subquery_for_count"))
22+
select_value = operation_over_aggregate_column(column_alias || Arel.star, "count", false)
23+
24+
Arel::SelectManager.new(subquery).project(select_value)
25+
end
26+
end
27+
end
28+
end
29+
end
30+
end
31+
32+
ActiveSupport.on_load(:active_record) do
33+
if ActiveRecord::VERSION::MAJOR == 5 &&
34+
ActiveRecord::VERSION::MINOR == 1 &&
35+
ActiveRecord::VERSION::TINY >= 4
36+
mod = ActiveRecord::ConnectionAdapters::SQLServer::CoreExt::Calculations
37+
ActiveRecord::Relation.prepend(mod)
38+
end
39+
end

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'arel_sqlserver'
44
require 'active_record/connection_adapters/abstract_adapter'
55
require 'active_record/connection_adapters/sqlserver/core_ext/active_record'
6+
require 'active_record/connection_adapters/sqlserver/core_ext/calculations'
67
require 'active_record/connection_adapters/sqlserver/core_ext/explain'
78
require 'active_record/connection_adapters/sqlserver/core_ext/explain_subscriber'
89
require 'active_record/connection_adapters/sqlserver/core_ext/attribute_methods'

0 commit comments

Comments
 (0)