1. 13 7月, 2017 1 次提交
  2. 08 7月, 2017 3 次提交
  3. 07 7月, 2017 2 次提交
  4. 06 7月, 2017 4 次提交
    • E
      Skip query cache for in_batches and friends · 6658e374
      Eugene Kenny 提交于
      The `find_each`, `find_in_batches` and `in_batches` APIs usually operate
      on large numbers of records, where it's preferable not to load them all
      into memory at once.
      
      If the query cache is enabled, it will hold onto the query results until
      the end of the execution context (request/job), which means the memory
      used is still proportional to the total number of records. These queries
      are typically not repeated, so the query cache isn't desirable here.
      6658e374
    • D
      Fix indentation style for private method. · 06e89c92
      Dennis Taylor 提交于
      06e89c92
    • D
      Don't translate non-database exceptions. · ad0bde58
      Dennis Taylor 提交于
      The AbstractAdapter will translate all StandardErrors generated during the course of a query into ActiveRecord::StatementInvalids. Unfortunately, it'll also mangle non-database-related errors generated in ActiveSupport::Notification callbacks after the query has successfully completed. This should prevent it from translating errors from ActiveSupport::Notifications.
      ad0bde58
    • L
      Fix `ActiveModel::Type::DateTime#serialize` · 7b2dfdea
      Lisa Ugray 提交于
      `ActiveModel::Type::DateTime#serialize` should return a `Time` object
      so that finding by a datetime column works correctly.
      7b2dfdea
  5. 04 7月, 2017 2 次提交
  6. 02 7月, 2017 6 次提交
    • R
      Remove redundant `assert_respond_to` · 6aa658e3
      Ryuta Kamizono 提交于
      It is covered by following assertion.
      6aa658e3
    • A
    • E
      Apply record state based on parent transaction state · 0237da28
      eileencodes 提交于
      Let's say you have a nested transaction and both records are saved.
      Before the outer transaction closes, a rollback is performed. Previously
      the record in the outer transaction would get marked as not persisted
      but the inner transaction would get persisted.
      
      ```ruby
      Post.transaction do
        post_one.save # will get rolled back
      
        Post.transaction(requires_new: true) do
          post_two.save # incorrectly remains marked as persisted
        end
      
        raise ActiveRecord::Rollback
      end
      ```
      
      To fix this the PR changes transaction handling to have the child
      transaction ask the parent how the records should be marked. When
      there are child transactions, it will always be a SavpointTransaction
      because the stack isn't empty. From there we pass the parent_transaction
      to the child SavepointTransaction where we add the children to the parent
      so the parent can mark the inner transaction as rolledback and thus mark
      the record as not persisted.
      
      `update_attributes_from_transaction_state` uses the `completed?` check to
      correctly mark all the transactions as rolledback and the inner record as
      not persisted.
      
      ```ruby
      Post.transaction do
        post_one.save # will get rolled back
      
        Post.transaction(requires_new: true) do
          post_two.save # with new behavior, correctly marked as not persisted
          on rollback
        end
      
        raise ActiveRecord::Rollback
      end
      ```
      
      Fixes #29320
      0237da28
    • E
      Deprecate and replace `set_state` method · 608ebccf
      eileencodes 提交于
      `set_state` was directly setting the transaction state instance
      variable. It's better to set the state via specific methods (`rollback!`
      and `commit!` respectively.
      
      While undocumented and untested, it's possible someone is using
      `set_state` in their app or gem so I've added a deprecation notice to
      it.
      
      No where in the app do we use `nullify!` but I wanted to keep existing
      behavior while replacing the method with a better pattern.
      608ebccf
    • R
      Fix `test_copying_migrations_preserving_magic_comments` · 0ba55d2e
      Ryuta Kamizono 提交于
      Since #29540, `# frozen_string_literal: true` included original
      migration files.
      0ba55d2e
    • M
      Revert "Merge pull request #29540 from kirs/rubocop-frozen-string" · 87b3e226
      Matthew Draper 提交于
      This reverts commit 3420a145, reversing
      changes made to afb66a5a.
      87b3e226
  7. 01 7月, 2017 1 次提交
  8. 30 6月, 2017 1 次提交
  9. 29 6月, 2017 10 次提交
    • R
      Deprecate delegating to `arel` in `Relation` · d9fca84d
      Ryuta Kamizono 提交于
      Active Record doesn't rely delegating to `arel` in the internal since
      425f2cac. 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 b06f64c3 (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.
      d9fca84d
    • R
      Should use the same connection in using query cache · abbc8351
      Ryuta Kamizono 提交于
      `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.
      abbc8351
    • R
      Fix to scoping is correctly restored · 99912ed9
      Ryuta Kamizono 提交于
      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.
      99912ed9
    • R
      Remove unused `aliased_table_name` in `Association` · 4aa4a449
      Ryuta Kamizono 提交于
      `aliased_table_name` in `Association` was added at a3502c41.
      `aliased_table_name` in `JoinDependency` (added at 55854c41) is used, but
      it looks like that added one in `Association` is never used from the
      beginning.
      4aa4a449
    • R
      Remove delegating to arel in a relation · 425f2cac
      Ryuta Kamizono 提交于
      The delegation was needed since passing `relation` with
      `relation.bound_attributes`. It should use `relation.arel` in that case.
      425f2cac
    • R
      Show query cache keys in `test_middleware_caches` · 4cf41833
      Ryuta Kamizono 提交于
      `test_middleware_caches` also failed same as #29600.
      
      https://travis-ci.org/rails/rails/jobs/248017174#L487-L489
      4cf41833
    • R
      b084fe90
    • T
      Enable query cache if set a configurations · 1b4360de
      Tsukasa OISHI 提交于
      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
      1b4360de
    • R
      Don't passing `klass.connection` to `AssociationScope` · eacec5de
      Ryuta Kamizono 提交于
      Passing `klass.connection` is redundant because `AssociationScope` is
      passed an association itself and an association has `klass`.
      eacec5de
    • R
      Add a test case for unscoping `default_scope` in associations · daec73aa
      Ryuta Kamizono 提交于
      Unscoping `default_scope` in associations has already supported (#17360
      for preloading, c9cf8b8d for eager loading).
      
      Fixes #20679.
      Closes #16531.
      daec73aa
  10. 28 6月, 2017 4 次提交
  11. 26 6月, 2017 1 次提交
  12. 25 6月, 2017 1 次提交
  13. 22 6月, 2017 4 次提交