Should keep the table name qualified * for distinct subquery

This commit is contained in:
Ryuta Kamizono 2017-07-20 12:13:11 +09:00
parent a265d4b29c
commit 0df0dfbfac
2 changed files with 13 additions and 1 deletions

@ -388,7 +388,7 @@ def select_for_count
def build_count_subquery(relation, column_name, distinct)
relation.select_values = [
if column_name == :all
distinct ? Arel.star : Arel.sql("1")
distinct ? table[Arel.star] : Arel.sql("1")
else
column_alias = Arel.sql("count_column")
aggregate_column(column_name).as(column_alias)

@ -248,6 +248,18 @@ def test_distinct_count_with_order_and_limit_and_offset
assert_equal 4, Account.distinct.order(:firm_id).limit(4).offset(2).count
end
def test_distinct_joins_count_with_order_and_limit
assert_equal 3, Account.joins(:firm).distinct.order(:firm_id).limit(3).count
end
def test_distinct_joins_count_with_order_and_offset
assert_equal 3, Account.joins(:firm).distinct.order(:firm_id).offset(2).count
end
def test_distinct_joins_count_with_order_and_limit_and_offset
assert_equal 3, Account.joins(:firm).distinct.order(:firm_id).limit(3).offset(2).count
end
def test_should_group_by_summed_field_having_condition
c = Account.group(:firm_id).having("sum(credit_limit) > 50").sum(:credit_limit)
assert_nil c[1]