1. 15 12月, 2015 5 次提交
  2. 14 12月, 2015 2 次提交
    • S
      Use a bind param for `LIMIT` and `OFFSET` · 574f2556
      Sean Griffin 提交于
      We currently generate an unbounded number of prepared statements when
      `limit` or `offset` are called with a dynamic argument. This changes
      `LIMIT` and `OFFSET` to use bind params, eliminating the problem.
      
      `Type::Value#hash` needed to be implemented, as it turns out we busted
      the query cache if the type object used wasn't exactly the same object.
      
      This drops support for passing an `Arel::Nodes::SqlLiteral` to `limit`.
      Doing this relied on AR internals, and was never officially supported
      usage.
      
      Fixes #22250.
      574f2556
    • S
      Deprecate limit strings with commas · 4358b0d1
      Sean Griffin 提交于
      Some backends allow `LIMIT 1,2` as a shorthand for `LIMIT 1 OFFSET 2`.
      Supporting this in Active Record massively complicates using bind
      parameters for limit and offset, and it's trivially easy to build an
      invalid SQL query by also calling `offset` on the same `Relation`.
      
      This is a niche syntax that is only supported by a few adapters, and can
      be trivially worked around by calling offset explicitly.
      4358b0d1
  3. 13 12月, 2015 1 次提交
  4. 07 12月, 2015 2 次提交
    • A
      Make sure we touch all the parents when touch_later. · e7c48db5
      Arthur Neves 提交于
      The problem was that when saving an object, we would
      call touch_later on the parent which wont be saved immediteally, and
      it wont call any callbacks. That was working one level up because
      we were calling touch, during the touch_later commit phase. However that still
      didnt solve the problem when you have a 3+ levels of parents to be touched,
      as calling touch would affect the parent, but it would be too late to run callbacks
      on its grand-parent.
      
      The solution for this, is instead, call touch_later upwards when the first
      touch_later is called. So we make sure all the timestamps are updated without relying
      on callbacks.
      
      This also removed the hard dependency BelongsTo builder had with the TouchLater module.
      So we can still have the old behaviour if TouchLater module is not included.
      
      [fixes 5f5e6d92]
      [related #19324]
      e7c48db5
    • G
      Introduce after_{create,update,delete}_commit callbacks · 5a300b2e
      Genadi Samokovarov 提交于
      Those are actually shortcuts for `after_commit`.
      
      Before:
      
          after_commit :add_to_index_later, on: :create
          after_commit :update_in_index_later, on: :update
          after_commit :remove_from_index_later, on: :destroy
      
      After:
      
          after_create_commit  :add_to_index_later
          after_update_commit  :update_in_index_later
          after_destroy_commit :remove_from_index_later
      5a300b2e
  5. 05 12月, 2015 1 次提交
    • Y
      remove warning from postgresql geometric test · 4ab20ed5
      yuuji.yaginuma 提交于
      This removes the following warning which has been out in the case of a PostgreSQL 9.3 below.
      
      ```
      activerecord/test/cases/adapters/postgresql/geometric_test.rb:265: warning: instance variable @connection not initialized
      ```
      4ab20ed5
  6. 03 12月, 2015 1 次提交
  7. 02 12月, 2015 4 次提交
  8. 01 12月, 2015 2 次提交
  9. 24 11月, 2015 4 次提交
  10. 23 11月, 2015 1 次提交
  11. 21 11月, 2015 1 次提交
  12. 20 11月, 2015 4 次提交
    • R
      Fix test failure in `adapters/mysql/active_schema_test.rb` · 056d6c34
      Ryuta Kamizono 提交于
      Follow up to #21601.
      056d6c34
    • N
      Fix rake db:structure:dump on Postgres when multiple schemas are used. · d1dcdf21
      Nick Muerdter 提交于
      If postgresql is being used and there are multiple schemas listed on the
      `schema_search_path`, then `structure.sql` dumps (triggered by `rake
      db:structure:dump` or `config.active_record.schema_format = :sql`) began
      failing in Rails 4.2.5.
      
      This is due to the changes made in
      https://github.com/rails/rails/pull/17885 The problem is that multiple
      schemas were getting getting passed to `Kernel.system` as a single,
      space delimited string argument (for example, "--schema=foo
      --schema=bar"). However, with the updated array style of calling
      `Kernel.system`, these need to be passed as separate arguments (for
      example, "--schema=foo", "--schema=bar"). If they get passed as a single
      string, then the underlying pg_dump program isn't sure how to interpret
      that single argument and you'll get an error reporting: "pg_dump: No
      matching schemas were found"
      d1dcdf21
    • S
      Revert "Allow specifying the default table options for mysql adapters" · 6b7861e8
      Sean Griffin 提交于
      This reverts commit 8246b593.
      
      There was concern about this modifying the behavior of past migrations.
      We're going to add an way to modify the migration generator instead.
      6b7861e8
    • S
      Allow specifying the default table options for mysql adapters · 8246b593
      Sean Griffin 提交于
      It's often the case that you want to have an option that you cannot
      specify at the database level, but want applied to *all* tables that you
      create. For example, you might want to specify `ROW_FORMAT=DYNAMIC` to
      not have to limit text columns to length 171 for indexing when using
      utf8mb4. This allows an easy way to specify this in your database
      configuration.
      
      While this change affects both MySQL and MySQL2, the test only covers
      MySQL2, as the legacy mysql adapter appears to always return ASCII
      strings, and is tangential to what we're actually doing.
      8246b593
  13. 18 11月, 2015 1 次提交
    • S
      Rename 'key' to 'lock_id' or 'lock_name' for advisory locking · 5ce21d4f
      Sam Davies 提交于
      - key was a poor choice of name. A key implies something that will
        unlock a lock. The concept is actually more like a 'lock identifier'
      - mysql documentation calls this a 'lock name'
      - postgres documentation calls it a 'lock_id'
      - Updated variable names to reflect the preferred terminology for the database in
        question
      5ce21d4f
  14. 17 11月, 2015 1 次提交
  15. 16 11月, 2015 1 次提交
    • Y
      Except keys of `build_record`'s argument from `create_scope` in initialize_attributes · 817c1825
      yui-knk 提交于
      If argument of `build_record` has key and value which is same as
      default value of database, we should also except the key from
      `create_scope` in `initialize_attributes`.
      Because at first `build_record` initialize record object with argument
      of `build_record`, then assign attributes derived from Association's scope.
      In this case `record.changed` does not include the key, which value is
      same as default value of database, so we should add the key to except list.
      
      Fix #21893.
      817c1825
  16. 14 11月, 2015 1 次提交
  17. 12 11月, 2015 1 次提交
  18. 09 11月, 2015 2 次提交
  19. 08 11月, 2015 1 次提交
  20. 07 11月, 2015 4 次提交