aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #29506 from pat/frozen-string-literalsMatthew Draper2017-07-027-17/+17
|\ | | | | | | Make ActiveSupport frozen-string-literal friendly.
| * Make ActiveRecord frozen string literal friendly.Pat Allan2017-06-207-17/+17
| |
* | Merge pull request #29631 from kamipo/should_be_clear_association_idsMatthew Draper2017-07-011-0/+5
|\ \ | | | | | | Should be clear `@association_ids` when joined newly associated record
| * | Should be clear `@association_ids` when joined newly associated recordRyuta Kamizono2017-06-301-0/+5
| | | | | | | | | | | | Fixes #29627.
* | | Merge pull request #28808 from fschwahn/fix-polymorphic-automic-inverseMatthew Draper2017-07-012-6/+16
|\ \ \ | | | | | | | | Fix automatic inverse for polymorphic interfaces
| * | | Add regression test for setting inverse instances on normal & polymorphic ↵Fabian Schwahn2017-04-201-0/+14
| | | | | | | | | | | | | | | | relationships when building objects on new records
| * | | Remove :polymorphic from INVALID_AUTOMATIC_INVERSE_OPTIONSFabian Schwahn2017-04-201-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes automatic inverse detection possible for polymorphic :has_one & :has_many possible. This resolves a number of issues, eg. `touch: true` on polymorphic relationships (#16446) and automatically setting inverse associations on newly built objects (#15028, #21843).
* | | | Merge pull request #29536 from nickrivadeneira/fix-yamlMatthew Draper2017-07-011-0/+8
|\ \ \ \ | | | | | | | | | | Ensure `false` is preserved in attr serialization
| * | | | Ensure `false` is preserved in attr serializationNick Rivadeneira2017-06-221-0/+8
| | | | |
* | | | | Merge pull request #29623 from kamipo/should_use_same_connection_in_query_cacheRafael França2017-06-291-7/+1
|\ \ \ \ \ | |_|_|/ / |/| | | | Should use the same connection in using query cache
| * | | | Should use the same connection in using query cacheRyuta Kamizono2017-06-291-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `test_cache_is_available_when_using_a_not_connected_connection` is always failed if running only the test since #29609. ``` % ARCONN=mysql2 be ruby -w -Itest test/cases/query_cache_test.rb -n test_cache_is_available_when_using_a_not_connected_connection Using mysql2 Run options: -n test_cache_is_available_when_using_a_not_connected_connection --seed 15043 F Finished in 0.070519s, 14.1806 runs/s, 28.3612 assertions/s. 1) Failure: QueryCacheTest#test_cache_is_available_when_using_a_not_connected_connection [test/cases/query_cache_test.rb:336]: 2 instead of 1 queries were executed. Queries: SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`id` = ? LIMIT ? SET NAMES utf8 COLLATE utf8_unicode_ci, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483. Expected: 1 Actual: 2 1 runs, 2 assertions, 1 failures, 0 errors, 0 skips ``` This failure is due to `LogSubscriber` will use not connected `ActiveRecord::Base.connection` even if `Task.connection` is connected. I fixed to always pass `type_casted_binds` to log subscriber to avoid the issue.
* | | | | Deprecate delegating to `arel` in `Relation`Ryuta Kamizono2017-06-291-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Active Record doesn't rely delegating to `arel` in the internal since 425f2ca. The delegation is a lower priority than delegating to `klass`, so it is pretty unclear which method is delegated to `arel`. For example, `bind_values` method was removed at b06f64c (a series of changes https://github.com/rails/rails/compare/79f71d3...b06f64c). But a relation still could respond to the method because `arel` also have the same named method (#28976). Removing the delegation will achieve predictable behavior.
* | | | | Merge pull request #29616 from kamipo/remove_unused_aliased_table_nameRafael França2017-06-291-1/+0
|\ \ \ \ \ | | | | | | | | | | | | Remove unused `aliased_table_name` in `Association`
| * | | | | Remove unused `aliased_table_name` in `Association`Ryuta Kamizono2017-06-291-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `aliased_table_name` in `Association` was added at a3502c4. `aliased_table_name` in `JoinDependency` (added at 55854c4) is used, but it looks like that added one in `Association` is never used from the beginning.
* | | | | | Fix to scoping is correctly restoredRyuta Kamizono2017-06-291-0/+9
| |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This regression was caused by #23004. If STI subclass is using scoping in parent class scoping, `current_scope` in subclass is never restored. I fixed to restore `current_scope` to previous value correctly.
* | | | | Merge pull request #29416 from kamipo/remove_unused_subject_modelRafael França2017-06-281-14/+0
|\ \ \ \ \ | |/ / / / |/| | | | Remove unused `Subject` model in tests
| * | | | Remove unused `Subject` model in testsRyuta Kamizono2017-06-111-14/+0
| | | | | | | | | | | | | | | | | | | | Because `subjects` table doesn't exist.
* | | | | Merge pull request #29405 from kamipo/locked_should_not_build_arelRafael França2017-06-282-0/+7
|\ \ \ \ \ | | | | | | | | | | | | `Relation#locked?` should not build arel
| * | | | | Remove delegating to arel in a relationRyuta Kamizono2017-06-292-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The delegation was needed since passing `relation` with `relation.bound_attributes`. It should use `relation.arel` in that case.
| * | | | | `Relation#locked?` should not build arelRyuta Kamizono2017-06-201-0/+6
| | | | | |
* | | | | | Merge pull request #29614 from kamipo/show_query_cache_keys_2Rafael França2017-06-281-1/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | Show query cache keys in `test_middleware_caches`
| * | | | | | Show query cache keys in `test_middleware_caches`Ryuta Kamizono2017-06-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `test_middleware_caches` also failed same as #29600. https://travis-ci.org/rails/rails/jobs/248017174#L487-L489
* | | | | | | Merge pull request #29601 from ↵Rafael Mendonça França2017-06-281-10/+17
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/fix_eager_loading_to_respect_store_full_sti_class Fix eager loading to respect `store_full_sti_class` setting
| * | | | | | | Fix eager loading to respect `store_full_sti_class` settingRyuta Kamizono2017-06-291-10/+17
| |/ / / / / /
* | | | | | | Merge pull request #29610 from ↵Rafael França2017-06-281-2/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/dont_passing_klass_connection_to_association_scope Don't passing `klass.connection` to `AssociationScope`
| * | | | | | | Don't passing `klass.connection` to `AssociationScope`Ryuta Kamizono2017-06-291-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Passing `klass.connection` is redundant because `AssociationScope` is passed an association itself and an association has `klass`.
* | | | | | | | Merge pull request #29611 from kamipo/add_test_case_for_unscoping_default_scopeRafael França2017-06-281-2/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Add a test case for unscoping `default_scope` in associations
| * | | | | | | | Add a test case for unscoping `default_scope` in associationsRyuta Kamizono2017-06-291-2/+3
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unscoping `default_scope` in associations has already supported (#17360 for preloading, c9cf8b8 for eager loading). Fixes #20679. Closes #16531.
* | | | | | | | Merge pull request #29609 from tsukasaoishi/query_cache_from_beginningRafael França2017-06-281-14/+2
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Enable query cache if set a configurations
| * | | | | | | Enable query cache if set a configurationsTsukasa OISHI2017-06-291-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord query cache is available when a connection is connected. Therefore, query cache is unavailable when entering the ActiveRecord::Base.cache block without being connected. ```ruby ActiveRecord::Base.cache do Task.find(1) # access to database. Task.find(1) # access to database. unavailable query cache end ``` If we use query cache with batch script etc, we need to connect before that. ```ruby Task.connection ActiveRecord::Base.cache do Task.find(1) # access to database. Task.find(1) # available query cache end ``` Before version 3.1, query cache had been enabled if a configuration was set up. In order to solve the `DATABASE_URL` issue(#8074), ActiveRecord has checked whether a connection is connected or not. Today, ActiveRecord.configurations respect `DATABASE_URL`. https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rb#L46
* | | | | | | | Merge pull request #29604 from ↵Rafael França2017-06-281-1/+1
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | kamipo/fix_ids_reader_to_respect_case_sensitive_pk Fix `ids_reader` to respect case sensitive primary key
| * | | | | | | Fix `ids_reader` to respect case sensitive primary keyRyuta Kamizono2017-06-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ```ruby car = Car.create!(name: "Tofaş") # Before car.bulb_ids # => SELECT "bulbs".ID FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]] # After car.bulb_ids # => SELECT "bulbs"."ID" FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]] ```
* | | | | | | | Merge pull request #29602 from kamipo/use_reload_in_test_find_first_after_reloadRafael França2017-06-281-10/+10
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Use `reload` in `test_find_first_after_reload`
| * | | | | | | Use `reload` in `test_find_first_after_reload`Ryuta Kamizono2017-06-281-10/+10
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And use `assert_same` instead of `assert_equal` and tiny fix assert message s/#reload/#reset/. Follow up of #29511.
* | | | | | | Merge pull request #29600 from kamipo/show_query_cache_keysRafael França2017-06-281-1/+2
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Show query cache keys in `test_exceptional_middleware_clears_and_disables_cache_on_error`
| * | | | | | | Show query cache keys in ↵Ryuta Kamizono2017-06-281-1/+2
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `test_exceptional_middleware_clears_and_disables_cache_on_error` `test_exceptional_middleware_clears_and_disables_cache_on_error` in postgresql adapter sometime fails recently. Show the query cache keys to investigte the cause. https://travis-ci.org/rails/rails/jobs/246467252#L490-L493
* / / / / / / ActiveRecord: do not create "has many through" records that have been removedTobias Kraze2017-06-281-0/+11
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | If a record was built on a HasManyThroughAssociation, then removed, and then the record was saved, the removed record would be created anyways.
* | | | | | Merge pull request #29571 from kamipo/fix_extracting_references_via_order_valuesRafael França2017-06-261-0/+6
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix extracting `references` via `order_values` to respect quoting
| * | | | | | Fix extracting `references` via `order_values` to respect quotingRyuta Kamizono2017-06-261-0/+6
| | |_|/ / / | |/| | | |
* | | | | | Merge pull request #29568 from kamipo/ensure_using_correct_alias_trackerRafael França2017-06-262-1/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | Ensure that using correct alias tracker
| * | | | | | Ensure that using correct alias trackerRyuta Kamizono2017-06-252-1/+2
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Covering #27994 in tests. Closes #27994.
* | | | | | Merge pull request #29511 from jhawthorn/clear_offsets_cache_on_collection_proxyRafael França2017-06-261-0/+35
|\ \ \ \ \ \ | | | | | | | | | | | | | | Rails 5.1.2.rc1 regression - Clear offset cache on CollectionProxy reset/reload
| * | | | | | Move clearing of @offsets cache to reset_scopeJohn Hawthorn2017-06-211-12/+21
| | | | | | |
| * | | | | | Clear offset cache on CollectionProxy reset/reloadJohn Hawthorn2017-06-201-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `@offsets` cache is used by FinderMethods to cache records found by find_nth. This cache is cleared in AR::Relation#reset, but not in CollectionProxy#reset or CollectionProxy#reload. Because of this, since #29098, calling #first/#find_nth/etc after calling #reload or #reset on an association could return a stale record. This is an issue both when the full association target is loaded and when the item is loaded in #find_nth. This commit solves the problem by clearing the `@offsets` cache in CollectionProxy#reset and CollectionProxy#reload.
* | | | | | | Merge pull request #29519 from Edouard-chin/ec-structure-flags-orderRafael França2017-06-261-2/+2
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | Pass `structure_dump_flags` / `structure_load_flags` options before any other:
| * | | | | | pass `structure_dump_flags` / `structure_load_flags` options before any other:Edouard CHIN2017-06-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - On Mysql, some command line options that affect option-file handling such as `--no-defaults` have to be passed before any other options - Modified rails to pass them right after the `mysql` command - Ref https://dev.mysql.com/doc/refman/5.7/en/option-file-options.html and https://bugs.mysql.com/bug.php?id=83386 - Ref #27437
* | | | | | | Remove unused variableyuuji.yaginuma2017-06-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes the following warnings: ``` activerecord/test/cases/relation_test.rb:231: warning: assigned but unused variable - authors_with_commented_posts ```
* | | | | | | Keep INNER JOIN when merging relationsMaxime Lapointe2017-06-201-2/+21
| |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing `Author.joins(:posts).merge(Post.joins(:comments))` does this `SELECT ... INNER JOIN posts ON... LEFT OUTER JOIN comments ON...` instead of doing `SELECT ... INNER JOIN posts ON... INNER JOIN comments ON...`. This behavior is unexpected and makes little sense as, basically, doing `Post.joins(:comments)` means I want posts that have comments. Turning it to a LEFT JOIN means I want posts and join the comments data, if any. We can see this problem directly in the existing tests. The test_relation_merging_with_merged_joins_as_symbols only does joins from posts to comments to ratings while the ratings fixture isn't loaded, but the count is non-zero.
* | | | | | Fix ActiveRecord::Persistence#touch with lockingbogdanvlviv2017-06-212-2/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `ActiveRecord::Persistence#touch` does not work well when optimistic locking enabled and `locking_column`, without default value, is null in the database.
* | | | | | Fix destroy with locking_column value nullbogdanvlviv2017-06-201-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix destroying existing object does not work well when optimistic locking enabled and `locking column` is null in the database. Follow 22a822e5813ef7ea9ab6dbbb670a363899a083af, #28914