1. 07 6月, 2017 1 次提交
    • R
      Avoid overwriting the methods of `AttributeMethods::PrimaryKey` · 9b8c7796
      Ryuta Kamizono 提交于
      Currently the methods of `AttributeMethods::PrimaryKey` are overwritten
      by `define_attribute_methods`. It will be broken if a table that
      customized primary key has non primary key id column.
      It should not be overwritten if a table has any primary key.
      
      Fixes #29350.
      9b8c7796
  2. 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
  3. 17 2月, 2017 2 次提交
  4. 13 2月, 2017 1 次提交
    • R
      Deprecate `supports_primary_key?` · bb45fa05
      Ryuta Kamizono 提交于
      `supports_primary_key?` was added to determine if `primary_key` is
      implemented in the adapter in f0602214. But we already use `primary_key`
      without `supports_primary_key?` (207f266c, 5f3cf424) and using
      `supports_primary_key?` has been removed in #1318. This means that
      `supports_primary_key?` is no longer used in the internal and Active
      Record doesn't work without `primary_key` is implemented (all adapters
      must implement `primary_key`).
      
      Closes #27977
      bb45fa05
  5. 11 2月, 2017 1 次提交
  6. 10 2月, 2017 2 次提交
    • R
      Fix `test_composite_primary_key_out_of_order` · 283250fc
      Ryuta Kamizono 提交于
      `test_composite_primary_key_out_of_order` should use `barcodes_reverse`
      table.
      283250fc
    • 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
  7. 09 2月, 2017 1 次提交
  8. 04 2月, 2017 2 次提交
  9. 19 12月, 2016 1 次提交
  10. 06 12月, 2016 4 次提交
  11. 29 10月, 2016 1 次提交
  12. 07 8月, 2016 2 次提交
  13. 02 7月, 2016 1 次提交
  14. 01 7月, 2016 1 次提交
  15. 07 6月, 2016 1 次提交
  16. 12 3月, 2016 1 次提交
    • R
      Primary key should be `NOT NULL` · 98fb3744
      Ryuta Kamizono 提交于
      Follow up to #18228.
      
      In MySQL and PostgreSQL, primary key is to be `NOT NULL` implicitly.
      But in SQLite it must be specified `NOT NULL` explicitly.
      98fb3744
  17. 11 3月, 2016 1 次提交
  18. 29 2月, 2016 1 次提交
  19. 23 2月, 2016 1 次提交
  20. 01 2月, 2016 1 次提交
  21. 30 1月, 2016 2 次提交
  22. 17 12月, 2015 1 次提交
  23. 09 11月, 2015 1 次提交
    • Y
      Deprecate `#table_exists?`, `#tables` and passing arguments to `#talbes` · 7429633b
      yui-knk 提交于
      Reported on #21509, how views is treated by `#tables` are differ
      by each adapters. To fix this different behavior, after Rails 5.0
      is released, deprecate `#tables`.
      
      And `#table_exists?` would check both tables and views.
      To make their behavior consistent with `#tables`, after Rails 5.0
      is released, deprecate `#table_exists?`.
      7429633b
  24. 02 11月, 2015 1 次提交
  25. 20 9月, 2015 1 次提交
  26. 18 9月, 2015 1 次提交
    • R
      Add `unsigned` support for numeric data types in MySQL · f3772f72
      Ryuta Kamizono 提交于
      Example:
      
          create_table :foos do |t|
            t.integer :unsigned_integer, unsigned: true
            t.bigint  :unsigned_bigint,  unsigned: true
            t.float   :unsigned_float,   unsigned: true
            t.decimal :unsigned_decimal, unsigned: true, precision: 10, scale: 2
          end
      f3772f72
  27. 22 5月, 2015 1 次提交
  28. 19 5月, 2015 1 次提交
  29. 31 3月, 2015 1 次提交
    • K
      use Model.reset_column_information to clear table cache connection wide. · bf6a33fd
      Kuldeep Aggarwal 提交于
          `widgets` table is being created in `primary_keys_test.rb` for PostgreSQLAdapter, MysqlAdapter, Mysql2Adapter
          and it makes test to fail earlier.
      
          Before:
            `bundle exec rake mysql2:test`
      
          ```
          Finished in 127.287669s, 35.5258 runs/s, 97.8885 assertions/s.
      
            1) Error:
          PersistenceTest::SaveTest#test_save_touch_false:
          ActiveModel::UnknownAttributeError: unknown attribute 'name' for #<Class:0x0000000a7d6ef0>.
              /home/kd/projects/kd-rails/activerecord/lib/active_record/attribute_assignment.rb:36:in `rescue in _assign_attribute'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/attribute_assignment.rb:34:in `_assign_attribute'
              /home/kd/projects/kd-rails/activemodel/lib/active_model/attribute_assignment.rb:40:in `block in _assign_attributes'
              /home/kd/projects/kd-rails/activemodel/lib/active_model/attribute_assignment.rb:39:in `each'
              /home/kd/projects/kd-rails/activemodel/lib/active_model/attribute_assignment.rb:39:in `_assign_attributes'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/attribute_assignment.rb:26:in `_assign_attributes'
              /home/kd/projects/kd-rails/activemodel/lib/active_model/attribute_assignment.rb:33:in `assign_attributes'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/core.rb:293:in `initialize'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/inheritance.rb:61:in `new'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/inheritance.rb:61:in `new'
              /home/kd/projects/kd-rails/activerecord/lib/active_record/persistence.rb:50:in `create!'
              /home/kd/projects/kd-rails/activerecord/test/cases/persistence_test.rb:913:in `test_save_touch_false'
      
          4522 runs, 12460 assertions, 0 failures, 1 errors, 4 skips
          ```
      
          After:
            `bundle exec rake mysql2:test`
      
          ```
             Finished in 135.785086s, 33.3026 runs/s, 91.7774 assertions/s.
      
             4522 runs, 12462 assertions, 0 failures, 0 errors, 4 skips
          ```
      bf6a33fd
  30. 17 3月, 2015 1 次提交
    • B
      Closes rails/rails#18864: Renaming transactional fixtures to transactional tests · 09658635
      Brandon Weiss 提交于
      I’m renaming all instances of `use_transcational_fixtures` to
      `use_transactional_tests` and “transactional fixtures” to
      “transactional tests”.
      
      I’m deprecating `use_transactional_fixtures=`. So anyone who is
      explicitly setting this will get a warning telling them to use
      `use_transactional_tests=` instead.
      
      I’m maintaining backwards compatibility—both forms will work.
      `use_transactional_tests` will check to see if
      `use_transactional_fixtures` is set and use that, otherwise it will use
      itself. But because `use_transactional_tests` is a class attribute
      (created with `class_attribute`) this requires a little bit of hoop
      jumping. The writer method that `class_attribute` generates defines a
      new reader method that return the value being set. Which means we can’t
      set the default of `true` using `use_transactional_tests=` as was done
      previously because that won’t take into account anyone using
      `use_transactional_fixtures`. Instead I defined the reader method
      manually and it checks `use_transactional_fixtures`. If it was set then
      it should be used, otherwise it should return the default, which is
      `true`. If someone uses `use_transactional_tests=` then it will
      overwrite the backwards-compatible method with whatever they set.
      09658635
  31. 24 2月, 2015 1 次提交
  32. 18 2月, 2015 1 次提交