1. 26 2月, 2017 5 次提交
    • K
      Remove duplicated private method · 0737dc8d
      kami-zh 提交于
      0737dc8d
    • R
      Fix typo 'affect' -> 'effect' [ci skip] · d15b2917
      Rebecca Skinner 提交于
      d15b2917
    • R
      Fix `change_column` to drop default with `null: false` · c92757fb
      Ryuta Kamizono 提交于
      Currently `change_column` cannot drop default if `null: false` is
      specified at the same time. This change fixes the issue.
      
      ```ruby
        # cannot drop default
        change_column "tests", "contributor", :boolean, default: nil, null: false
      
        # we need the following workaround currently
        change_column "tests", "contributor", :boolean, null: false
        change_column "tests", "contributor", :boolean, default: nil
      ```
      
      Closes #26582
      c92757fb
    • R
      Suppress `DISTINCT` clause outside aggregate function · d38e5d27
      Ryuta Kamizono 提交于
      `DISTINCT` clause is applied inside aggregate function by
      `operation_over_aggregate_column` if needed. Unneeded outside aggregate
      function.
      
      ```ruby
        # Before
        author.unique_categorized_posts.count
        # => SELECT DISTINCT COUNT(DISTINCT "posts"."id") FROM "posts" INNER JOIN "categorizations" ON "posts"."id" = "categorizations"."post_id" WHERE "categorizations"."author_id" = ?  [["author_id", 2]]
      
        # After
        author.unique_categorized_posts.count
        # => SELECT COUNT(DISTINCT "posts"."id") FROM "posts" INNER JOIN "categorizations" ON "posts"."id" = "categorizations"."post_id" WHERE "categorizations"."author_id" = ?  [["author_id", 2]]
      ```
      
      Closes #27615
      d38e5d27
    • K
      Deprecate AbstractAdapter#verify! with arguments · 08e78156
      Kir Shatrov 提交于
      08e78156
  2. 25 2月, 2017 1 次提交
    • R
      Soft-deprecate the top-level HashWithIndifferentAccess class · e690a92b
      Robin Dupret 提交于
      Since using a `ActiveSupport::Deprecation::DeprecatedConstantProxy`
      would prevent people from inheriting this class and extending it
      from the `ActiveSupport::HashWithIndifferentAccess` one would break
      the ancestors chain, that's the best option we have here.
      e690a92b
  3. 24 2月, 2017 5 次提交
  4. 23 2月, 2017 1 次提交
    • R
      Correctly dump native timestamp types for MySQL · 50552633
      Ryuta Kamizono 提交于
      The native timestamp type in MySQL is different from datetime type.
      Internal representation of the timestamp type is UNIX time, This means
      that timestamp columns are affected by time zone.
      
      ```
      > SET time_zone = '+00:00';
      Query OK, 0 rows affected (0.00 sec)
      
      > INSERT INTO time_with_zone(ts,dt) VALUES (NOW(),NOW());
      Query OK, 1 row affected (0.02 sec)
      
      > SELECT * FROM time_with_zone;
      +---------------------+---------------------+
      | ts                  | dt                  |
      +---------------------+---------------------+
      | 2016-02-07 22:11:44 | 2016-02-07 22:11:44 |
      +---------------------+---------------------+
      1 row in set (0.00 sec)
      
      > SET time_zone = '-08:00';
      Query OK, 0 rows affected (0.00 sec)
      
      > SELECT * FROM time_with_zone;
      +---------------------+---------------------+
      | ts                  | dt                  |
      +---------------------+---------------------+
      | 2016-02-07 14:11:44 | 2016-02-07 22:11:44 |
      +---------------------+---------------------+
      1 row in set (0.00 sec)
      ```
      50552633
  5. 22 2月, 2017 1 次提交
  6. 21 2月, 2017 3 次提交
    • E
      Ensure test threads share a DB connection · d6466beb
      eileencodes 提交于
      This ensures multiple threads inside a transactional test to see consistent
      database state.
      
      When a system test starts Puma spins up one thread and Capybara spins up
      another thread. Because of this when tests are run the database cannot
      see what was inserted into the database on teardown. This is because
      there are two threads using two different connections.
      
      This change uses the statement cache to lock the threads to using a
      single connection ID instead of each not being able to see each other.
      This code only runs in the fixture setup and teardown so it does not
      affect real production databases.
      
      When a transaction is opened we set `lock_thread` to `Thread.current` so
      we can keep track of which connection the thread is using. When we
      rollback the transaction we unlock the thread and then there will be no
      left-over data in the database because the transaction will roll back
      the correct connections.
      
      [ Eileen M. Uchitelle, Matthew Draper ]
      d6466beb
    • K
      Revert "Merge pull request #27925 from robin850/hwia-removal" · 507c9970
      Kasper Timm Hansen 提交于
      Pointed out by @matthewd that the HWIA subclass changes the
      AS scoped class and top-level HWIA hierarchies out from under
      existing classes.
      
      This reverts commit 71da3909, reversing
      changes made to 41c33bd4.
      507c9970
    • R
      38c4ff37
  7. 20 2月, 2017 1 次提交
  8. 19 2月, 2017 1 次提交
  9. 16 2月, 2017 1 次提交
  10. 14 2月, 2017 3 次提交
  11. 13 2月, 2017 9 次提交
  12. 12 2月, 2017 1 次提交
    • S
      Deprecate calling `attr_will_change!` with non-attributes · 4fed08fa
      Sean Griffin 提交于
      This was never really intended to work (at least not without calling
      `define_attribute_methods`, which is less common with Active Record). As
      we move forward the intention is to require the use of `attribute` over
      `attr_accessor` for more complex model behavior both on Active Record
      and Active Model, so this behavior is deprecated.
      
      Fixes #27956.
      Close #27963.
      
      [Alex Serban & Sean Griffin]
      4fed08fa
  13. 11 2月, 2017 2 次提交
  14. 10 2月, 2017 2 次提交
    • R
      Revert "Simplify and speed up Postgres query for primary_keys" · 61241833
      Ryuta Kamizono 提交于
      This reverts commit d6529af2.
      61241833
    • J
      Simplify and speed up Postgres query for primary_keys · d6529af2
      Jordan Lewis 提交于
      primary_keys(table) needs to query various metadata tables in Postgres to
      determine the primary key for the table. Previously, it did so using a
      complex common table expression against pg_constraint and pg_attribute.
      
      This patch simplifies the query by joining pg_index against pg_attribute
      instead of going through pg_constraint. This avoids an expensive unnest,
      window function query, and common table expression.
      
      EXPLAINing these queries in Postgres against a database with a single
      table with a composite primary key shows a 66% reduction in the plan and
      execute latencies. This is significant during application startup time,
      especially against very large schemas, where these queries would be even
      slower and more numerous.
      
      Closes #27949
      d6529af2
  15. 09 2月, 2017 3 次提交
  16. 07 2月, 2017 1 次提交