rails/activerecord/CHANGELOG.md
travis.h.oneill@gmail.com 906ff07e71 Added nil case handling to allow rollback migration in case of
invalid column type
    /activerecord/lib/active_record/connection_adapters
    /abstract/schema_definitions.rb:306
    type = type.to_sym

Changed to the following to handle nil case:
    type = type.to_sym if type

Added regression test for this case:
  /activerecord/test/cases/migration_test.rb:554
  if current_adapter?(:SQLite3Adapter)
    def test_allows_sqlite3_rollback_on_invalid_column_type
      Person.connection.create_table :something, force: true do |t|
        t.column :number, :integer
        t.column :name, :string
        t.column :foo, :bar
      end
      assert Person.connection.column_exists?(:something, :foo)
      assert_nothing_raised { Person.connection.remove_column :something, :foo, :bar }
      assert !Person.connection.column_exists?(:something, :foo)
      assert Person.connection.column_exists?(:something, :name)
      assert Person.connection.column_exists?(:something, :number)
    ensure
      Person.connection.drop_table :something, if_exists: true
    end
  end
2016-08-17 17:21:54 -07:00

3.6 KiB

  • Sqlite3 migrations to add a column to an existing table can now be successfully rolled back when the column was given and invalid column type.

    Fixes #26087

    Travis O'Neill

  • Doing count on relations that contain LEFT OUTER JOIN Arel node no longer force a DISTINCT. This solves issues when using count after a left_joins.

    Maxime Handfield Lapointe

  • RecordNotFound raised by association.find exposes id, primary_key and model methods to be consistent with RecordNotFound raised by Record.find.

    Michel Pigassou

  • Hashes can once again be passed to setters of composed_of, if all of the mapping methods are methods implemented on Hash.

    Fixes #25978.

    Sean Griffin

  • Fix the SELECT statement in #table_comment for MySQL.

    Takeshi Akima

  • Virtual attributes will no longer raise when read on models loaded from the database

    Sean Griffin

  • Support calling the method merge in scope's lambda.

    Yasuhiro Sugino

  • Fixes multi-parameter attributes conversion with invalid params.

    Hiroyuki Ishii

  • Add newline between each migration in structure.sql.

    Keeps schema migration inserts as a single commit, but allows for easier git diffing.

    Fixes #25504.

    Grey Baker, Norberto Lopes

  • The flag error_on_ignored_order_or_limit has been deprecated in favor of the current error_on_ignored_order.

    Xavier Noria

  • Batch processing methods support limit:

    Post.limit(10_000).find_each do |post|
      # ...
    end
    

    It also works in find_in_batches and in_batches.

    Xavier Noria

  • Using group with an attribute that has a custom type will properly cast the hash keys after calling a calculation method like count.

    Fixes #25595.

    Sean Griffin

  • Fix the generated #to_param method to use omission: '' so that the resulting output is actually up to 20 characters, not effectively 17 to leave room for the default "...". Also call #parameterize before #truncate and make the separator: /-/ to maximize the information included in the output.

    Fixes #23635.

    Rob Biedenharn

  • Ensure concurrent invocations of the connection reaper cannot allocate the same connection to two threads.

    Fixes #25585.

    Matthew Draper

  • Inspecting an object with an associated array of over 10 elements no longer truncates the array, preventing inspect from looping infinitely in some cases.

    Kevin McPhillips

  • Removed the unused methods ActiveRecord::Base.connection_id and ActiveRecord::Base.connection_id=.

    Sean Griffin

  • Ensure hashes can be assigned to attributes created using composed_of.

    Fixes #25210.

    Sean Griffin

  • Fix logging edge case where if an attribute was of the binary type and was provided as a Hash.

    Jon Moss

  • Handle JSON deserialization correctly if the column default from database adapter returns '' instead of nil.

    Johannes Opper

  • Introduce ActiveRecord::TransactionSerializationError for catching transaction serialization failures or deadlocks.

    Erol Fornoles

  • PostgreSQL: Fix db:structure:load silent failure on SQL error.

    The command line flag -v ON_ERROR_STOP=1 should be used when invoking psql to make sure errors are not suppressed.

    Example:

    psql -v ON_ERROR_STOP=1 -q -f awesome-file.sql my-app-db
    

    Fixes #23818.

    Ralin Chimev

Please check 5-0-stable for previous changes.