1. 29 8月, 2018 1 次提交
    • E
      Drop load_database_yaml and fix test · 6b5df90f
      Eileen Uchitelle 提交于
      We originally did the whole `load_database_yaml` thing because this test
      wasn't cooperating and we needed to finish the namespaced rake tasks for
      multiple databases.
      
      However, it turns out that YAML can't eval ERB if you don't tell it it's
      ERB so you get Pysch parse errors if you're using multi-line ERB or
      ERB with conditionals. It's a hot mess.
      
      After trying a few things and thinking it over we decided that it wasn't
      worth bandaiding over, the test needed to be improved. The test was
      added in #31135 to test that the env is loaded in these tasks. But it
      was blowing up because we were trying to read a database name out of the
      configuration - however that's not the purpose of this change. We want
      to read environment files in the rake tasks, but not in the config
      file.
      
      In this PR we changed the test to test what the PR was actually fixing.
      We've also deleted the `load_database_yaml` because it caused more
      problems than it was worth. This should fix the issues described in
      https://github.com/rails/rails/pull/32274#issuecomment-384161057. We
      also had these problems at GitHub.
      Co-authored-by: Nalimi <aibrahim2k2@gmail.com>
      6b5df90f
  2. 28 8月, 2018 2 次提交
    • Y
      Mutation tracker should be cleared before continuing around callbacks · 34f075fe
      Yuya Tanaka 提交于
      `changes_applied` should be called before continuing around callback
      chain. Otherwise the mutation tracker returns old value for methods like
      `changed`? or `id_in_database` in around callbacks. Also methods depend
      on `id_in_database`, like `update_column`, are not working in
      `around_create` callbacks.
      
      ```
      class Foo < ActiveRecord::Base
        around_create :around_create_callback
      
        def around_create_callback
          ...
          yield
          p id_in_database # => nil
          update_column(:generated_column, generate_value) # silently fails
        end
      
        ...
      end
      ```
      34f075fe
    • N
      Add documentation for `:collation` column option (#33733) · 626958ce
      Nate Pinsky 提交于
      * Add documentation for `:collation` option
      
      The table definition supports a `:collation` option for string and text columns, but this is not documented anywhere that I could find.
      
      I'm not sure if the "If not specified" part is accurate. From [this PR](https://github.com/rails/rails/commit/1515c4d98da3f730ef971fa5a13cad828bd9bef4), it looks like it passes `nil` and lets the database handle the collation, but I'm happy to change it if I misread the code.
      
      [ci skip]
      
      * FIX remove whitespace
      
      [Nate Pinsky + Rafael Mendonça França]
      626958ce
  3. 27 8月, 2018 1 次提交
  4. 25 8月, 2018 2 次提交
  5. 22 8月, 2018 2 次提交
  6. 20 8月, 2018 2 次提交
  7. 19 8月, 2018 1 次提交
  8. 15 8月, 2018 3 次提交
  9. 14 8月, 2018 2 次提交
  10. 13 8月, 2018 1 次提交
    • E
      Omit BEGIN/COMMIT statements for empty transactions · 0ac81ee6
      Eugene Kenny 提交于
      If a transaction is opened and closed without any queries being run, we
      can safely omit the `BEGIN` and `COMMIT` statements, as they only exist
      to modify the connection's behaviour inside the transaction. This
      removes the overhead of those statements when saving a record with no
      changes, which makes workarounds like `save if changed?` unnecessary.
      
      This implementation buffers transactions inside the transaction manager
      and materializes them the next time the connection is used. For this to
      work, the adapter needs to guard all connection use with a call to
      `materialize_transactions`. Because of this, adapters must opt in to get
      this new behaviour by implementing `supports_lazy_transactions?`.
      
      If `raw_connection` is used to get a reference to the underlying
      database connection, the behaviour is disabled and transactions are
      opened eagerly, as we can't know how the connection will be used.
      However when the connection is checked back into the pool, we can assume
      that the application won't use the reference again and reenable lazy
      transactions. This prevents a single `raw_connection` call from
      disabling lazy transactions for the lifetime of the connection.
      0ac81ee6
  11. 11 8月, 2018 2 次提交
  12. 03 8月, 2018 1 次提交
  13. 02 8月, 2018 3 次提交
  14. 01 8月, 2018 2 次提交
  15. 31 7月, 2018 1 次提交
    • R
      Avoid extra scoping when using `Relation#update` · c83e30da
      Ryuta Kamizono 提交于
      Since 9ac7dd47, class level `update`, `destroy`, and `delete` were placed
      in the `Persistence` module as class methods.
      
      But `Relation#update` without passing ids which was introduced at #11898
      is not a class method, and it was caused the extra scoping regression
      #33470.
      
      I moved the relation method back into the `Relation` to fix the
      regression.
      
      Fixes #33470.
      c83e30da
  16. 30 7月, 2018 1 次提交
  17. 29 7月, 2018 5 次提交
  18. 28 7月, 2018 2 次提交
  19. 27 7月, 2018 1 次提交
    • Y
      PostgreSQL 10 new relkind for partitioned tables (#31336) · 36f28fd8
      Yannick Schutz 提交于
      * PostgreSQL 10 new relkind for partitioned tables
      
      Starting with PostgreSQL 10, we can now have partitioned tables natively
      
      * Add comment
      
      * Remove extra space
      
      * Add test for partition table in postgreSQL10
      
      * Select 'p' for "BASE TABLE" and add a test case
      to support PostgreSQL 10 partition tables
      
      * Address RuboCop offense
      
      * Addressed incorrect `postgresql_version`
      
      Fixes #33008.
      
      [Yannick Schutz & Yasuo Honda & Ryuta Kamizono]
      36f28fd8
  20. 25 7月, 2018 1 次提交
  21. 24 7月, 2018 2 次提交
  22. 22 7月, 2018 2 次提交