1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activerecord/test
Ryuta Kamizono 63e35a1323 Fix GROUP BY queries to apply LIMIT/OFFSET after aggregations
If `eager_loading` is true, `apply_join_dependency` force applies
LIMIT/OFFSET before JOINs by `limited_ids_for` to keep parent records
count. But for aggregation queries, LIMIT/OFFSET should be applied after
aggregations the same as SQL semantics.

And also, we could not replace SELECT list by `limited_ids_for` when a
query has a GROUP BY clause. It had never been worked since it will
causes generating invalid SQL for MySQL, PostgreSQL, and probably most
backends.

```
% ARCONN=postgresql be ruby -w -Itest test/cases/calculations_test.rb -n test_group_by_with_limit
Using postgresql
Run options: -n test_group_by_with_limit --seed 20925

# Running:

E

Error:
CalculationsTest#test_group_by_with_limit:
ActiveRecord::StatementInvalid: PG::GroupingError: ERROR:  column "posts.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT  DISTINCT "posts"."id", "posts"."type" AS alias_0 FRO...                         ^
: SELECT  DISTINCT "posts"."id", "posts"."type" AS alias_0 FROM "posts" LEFT OUTER JOIN "comments" ON "comments"."post_id" = "posts"."id" GROUP BY "posts"."type" ORDER BY "posts"."type" ASC LIMIT $1
```

Fixes #8103.
Closes #27249.
2018-06-07 09:58:20 +09:00
..
active_record/connection_adapters Use frozen-string-literal in ActiveRecord 2017-07-19 22:27:07 +03:00
assets Use YAML to serialize schema cache 2016-11-27 22:09:58 -05:00
cases Fix GROUP BY queries to apply LIMIT/OFFSET after aggregations 2018-06-07 09:58:20 +09:00
fixtures Can preload associations through polymorphic associations 2018-04-20 17:28:25 -04:00
migrations Fix occurrences Fixnum|Bignum 2018-03-04 20:44:30 +02:00
models Fix collection.create to could be rolled back by after_save 2018-06-07 06:58:45 +09:00
schema Using existing models for building multiple has_one through tests 2018-04-22 04:16:44 +09:00
support Use frozen-string-literal in ActiveRecord 2017-07-19 22:27:07 +03:00
config.example.yml Fix tests for prepared_statements: false and queries hitting #select_all 2016-11-19 21:52:52 +05:30
config.rb Use frozen-string-literal in ActiveRecord 2017-07-19 22:27:07 +03:00