aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-03-22 10:11:39 +1030
committerMatthew Draper <matthew@trebex.net>2017-03-22 10:11:39 +1030
commit6c08d480f13d3332c878ca8a120a03fcd78f7ba2 (patch)
treeade18a9203afbc55db46aee904a087e8d9cec3d0 /activerecord
parent88b16843f67bcd96395444ba8f139895351da0bc (diff)
downloadrails-6c08d480f13d3332c878ca8a120a03fcd78f7ba2.tar.gz
rails-6c08d480f13d3332c878ca8a120a03fcd78f7ba2.tar.bz2
rails-6c08d480f13d3332c878ca8a120a03fcd78f7ba2.zip
Start Rails 5.2 development
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/CHANGELOG.md772
-rw-r--r--activerecord/lib/active_record/gem_version.rb4
-rw-r--r--activerecord/lib/active_record/migration/compatibility.rb5
3 files changed, 7 insertions, 774 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 4488524c4e..30d580b9e3 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,771 +1 @@
-* Remove comments from structure.sql when using postgresql adapter to avoid
- version-specific parts of the file.
-
- Fixes #28153.
-
- *Ari Pollak*
-
-* Add `:default` option to `belongs_to`.
-
- Use it to specify that an association should be initialized with a particular
- record before validation. For example:
-
- # Before
- belongs_to :account
- before_validation -> { self.account ||= Current.account }
-
- # After
- belongs_to :account, default: -> { Current.account }
-
- *George Claghorn*
-
-* Deprecate `Migrator.schema_migrations_table_name`.
-
- *Ryuta Kamizono*
-
-* Fix select with block doesn't return newly built records in has_many association.
-
- Fixes #28348.
-
- *Ryuta Kamizono*
-
-* Check whether `Rails.application` defined before calling it
-
- In #27674 we changed the migration generator to generate migrations at the
- path defined in `Rails.application.config.paths` however the code checked
- for the presence of the `Rails` constant but not the `Rails.application`
- method which caused problems when using Active Record and generators outside
- of the context of a Rails application.
-
- Fixes #28325.
-
- *Andrew White*
-
-* Fix `deserialize` with JSON array.
-
- Fixes #28285.
-
- *Ryuta Kamizono*
-
-* Fix `rake db:schema:load` with subdirectories.
-
- *Ryuta Kamizono*
-
-* Fix `rake db:migrate:status` with subdirectories.
-
- *Ryuta Kamizono*
-
-* Don't share options between reference id and type columns
-
- When using a polymorphic reference column in a migration, sharing options
- between the two columns doesn't make sense since they are different types.
- The `reference_id` column is usually an integer and the `reference_type`
- column a string so options like `unsigned: true` will result in an invalid
- table definition.
-
- *Ryuta Kamizono*
-
-* Use `max_identifier_length` for `index_name_length` in PostgreSQL adapter.
-
- *Ryuta Kamizono*
-
-* Deprecate `supports_migrations?` on connection adapters.
-
- *Ryuta Kamizono*
-
-* Fix regression of #1969 with SELECT aliases in HAVING clause.
-
- *Eugene Kenny*
-
-* Deprecate using `#quoted_id` in quoting.
-
- *Ryuta Kamizono*
-
-* Fix `wait_timeout` to configurable for mysql2 adapter.
-
- Fixes #26556.
-
- *Ryuta Kamizono*
-
-
-## Rails 5.1.0.beta1 (February 23, 2017) ##
-
-* Correctly dump native timestamp types for MySQL.
-
- 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)
-
- *Ryuta Kamizono*
-
-* All integer-like PKs are autoincrement unless they have an explicit default.
-
- *Matthew Draper*
-
-* Omit redundant `using: :btree` for schema dumping.
-
- *Ryuta Kamizono*
-
-* Deprecate passing `default` to `index_name_exists?`.
-
- *Ryuta Kamizono*
-
-* PostgreSQL: schema dumping support for interval and OID columns.
-
- *Ryuta Kamizono*
-
-* Deprecate `supports_primary_key?` on connection adapters since it's
- been long unused and unsupported.
-
- *Ryuta Kamizono*
-
-* Make `table_name=` reset current statement cache,
- so queries are not run against the previous table name.
-
- *namusyaka*
-
-* Allow `ActiveRecord::Base#as_json` to be passed a frozen Hash.
-
- *Isaac Betesh*
-
-* Fix inspection behavior when the :id column is not primary key.
-
- *namusyaka*
-
-* Deprecate locking records with unpersisted changes.
-
- *Marc Schütz*
-
-* Remove deprecated behavior that halts callbacks when the return is false.
-
- *Rafael Mendonça França*
-
-* Deprecate `ColumnDumper#migration_keys`.
-
- *Ryuta Kamizono*
-
-* Fix `association_primary_key_type` for reflections with symbol primary key.
-
- Fixes #27864.
-
- *Daniel Colson*
-
-* Virtual/generated column support for MySQL 5.7.5+ and MariaDB 5.2.0+.
-
- MySQL generated columns: https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
- MariaDB virtual columns: https://mariadb.com/kb/en/mariadb/virtual-computed-columns/
-
- Declare virtual columns with `t.virtual name, type: …, as: "expression"`.
- Pass `stored: true` to persist the generated value (false by default).
-
- Example:
-
- create_table :generated_columns do |t|
- t.string :name
- t.virtual :upper_name, type: :string, as: "UPPER(name)"
- t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true
- t.index :name_length # May be indexed, too!
- end
-
- *Ryuta Kamizono*
-
-* Deprecate `initialize_schema_migrations_table` and `initialize_internal_metadata_table`.
-
- *Ryuta Kamizono*
-
-* Support foreign key creation for SQLite3.
-
- *Ryuta Kamizono*
-
-* Place generated migrations into the path set by `config.paths["db/migrate"]`.
-
- *Kevin Glowacz*
-
-* Raise `ActiveRecord::InvalidForeignKey` when a foreign key constraint fails on SQLite3.
-
- *Ryuta Kamizono*
-
-* Add the touch option to `#increment!` and `#decrement!`.
-
- *Hiroaki Izu*
-
-* Deprecate passing a class to the `class_name` because it eagerloads more classes than
- necessary and potentially creates circular dependencies.
-
- *Kir Shatrov*
-
-* Raise error when has_many through is defined before through association.
-
- Fixes #26834.
-
- *Chris Holmes*
-
-* Deprecate passing `name` to `indexes`.
-
- *Ryuta Kamizono*
-
-* Remove deprecated tasks: `db:test:clone`, `db:test:clone_schema`, `db:test:clone_structure`.
-
- *Rafel Mendonça França*
-
-* Compare deserialized values for `PostgreSQL::OID::Hstore` types when
- calling `ActiveRecord::Dirty#changed_in_place?`.
-
- Fixes #27502.
-
- *Jon Moss*
-
-* Raise `ArgumentError` when passing an `ActiveRecord::Base` instance to `.find`,
- `.exists?` and `.update`.
-
- *Rafael Mendonça França*
-
-* Respect precision option for arrays of timestamps.
-
- Fixes #27514.
-
- *Sean Griffin*
-
-* Optimize slow model instantiation when using STI and `store_full_sti_class = false` option.
-
- *Konstantin Lazarev*
-
-* Add `touch` option to counter cache modifying methods.
-
- Works when updating, resetting, incrementing and decrementing counters:
-
- # Touches `updated_at`/`updated_on`.
- Topic.increment_counter(:messages_count, 1, touch: true)
- Topic.decrement_counter(:messages_count, 1, touch: true)
-
- # Touches `last_discussed_at`.
- Topic.reset_counters(18, :messages, touch: :last_discussed_at)
-
- # Touches `updated_at` and `last_discussed_at`.
- Topic.update_counters(18, messages_count: 5, touch: %i( updated_at last_discussed_at ))
-
- Fixes #26724.
-
- *Jarred Trost*
-
-* Remove deprecated `#uniq`, `#uniq!`, and `#uniq_value`.
-
- *Ryuta Kamizono*
-
-* Remove deprecated `#insert_sql`, `#update_sql`, and `#delete_sql`.
-
- *Ryuta Kamizono*
-
-* Remove deprecated `#use_transactional_fixtures` configuration.
-
- *Rafael Mendonça França*
-
-* Remove deprecated `#raise_in_transactional_callbacks` configuration.
-
- *Rafael Mendonça França*
-
-* Remove deprecated `#load_schema_for`.
-
- *Rafael Mendonça França*
-
-* Remove deprecated conditions parameter from `#destroy_all` and `#delete_all`.
-
- *Rafael Mendonça França*
-
-* Remove deprecated support to passing arguments to `#select` when a block is provided.
-
- *Rafael Mendonça França*
-
-* Remove deprecated support to query using commas on LIMIT.
-
- *Rafael Mendonça França*
-
-* Remove deprecated support to passing a class as a value in a query.
-
- *Rafael Mendonça França*
-
-* Raise `ActiveRecord::IrreversibleOrderError` when using `last` with an irreversible
- order.
-
- *Rafael Mendonça França*
-
-* Raise when a `has_many :through` association has an ambiguous reflection name.
-
- *Rafael Mendonça França*
-
-* Raise when `ActiveRecord::Migration` is inherited from directly.
-
- *Rafael Mendonça França*
-
-* Remove deprecated `original_exception` argument in `ActiveRecord::StatementInvalid#initialize`
- and `ActiveRecord::StatementInvalid#original_exception`.
-
- *Rafael Mendonça França*
-
-* `#tables` and `#table_exists?` return only tables and not views.
-
- All the deprecations on those methods were removed.
-
- *Rafael Mendonça França*
-
-* Remove deprecated `name` argument from `#tables`.
-
- *Rafael Mendonça França*
-
-* Remove deprecated support to passing a column to `#quote`.
-
- *Rafael Mendonça França*
-
-* Set `:time` as a timezone aware type and remove deprecation when
- `config.active_record.time_zone_aware_types` is not explicitly set.
-
- *Rafael Mendonça França*
-
-* Remove deprecated force reload argument in singular and collection association readers.
-
- *Rafael Mendonça França*
-
-* Remove deprecated `activerecord.errors.messages.restrict_dependent_destroy.one` and
- `activerecord.errors.messages.restrict_dependent_destroy.many` i18n scopes.
-
- *Rafael Mendonça França*
-
-* Allow passing extra flags to `db:structure:load` and `db:structure:dump`
-
- Introduces `ActiveRecord::Tasks::DatabaseTasks.structure_(load|dump)_flags` to customize the
- eventual commands run against the database, e.g. mysqldump/pg_dump.
-
- *Kir Shatrov*
-
-* Notifications see frozen SQL string.
-
- Fixes #23774.
-
- *Richard Monette*
-
-* RuntimeErrors are no longer translated to `ActiveRecord::StatementInvalid`.
-
- *Richard Monette*
-
-* Change the schema cache format to use YAML instead of Marshal.
-
- *Kir Shatrov*
-
-* Support index length and order options using both string and symbol
- column names.
-
- Fixes #27243.
-
- *Ryuta Kamizono*
-
-* Raise `ActiveRecord::RangeError` when values that executed are out of range.
-
- *Ryuta Kamizono*
-
-* Raise `ActiveRecord::NotNullViolation` when a record cannot be inserted
- or updated because it would violate a not null constraint.
-
- *Ryuta Kamizono*
-
-* Emulate db trigger behaviour for after_commit :destroy, :update.
-
- Race conditions can occur when an ActiveRecord is destroyed
- twice or destroyed and updated. The callbacks should only be
- triggered once, similar to a SQL database trigger.
-
- *Stefan Budeanu*
-
-* Moved `DecimalWithoutScale`, `Text`, and `UnsignedInteger` from Active Model to Active Record.
-
- *Iain Beeston*
-
-* Fix `write_attribute` method to check whether an attribute is aliased or not, and
- use the aliased attribute name if needed.
-
- *Prathamesh Sonpatki*
-
-* Fix `read_attribute` method to check whether an attribute is aliased or not, and
- use the aliased attribute name if needed.
-
- Fixes #26417.
-
- *Prathamesh Sonpatki*
-
-* PostgreSQL & MySQL: Use big integer as primary key type for new tables.
-
- *Jon McCartie*, *Pavel Pravosud*
-
-* Change the type argument of `ActiveRecord::Base#attribute` to be optional.
- The default is now `ActiveRecord::Type::Value.new`, which provides no type
- casting behavior.
-
- *Sean Griffin*
-
-* Don't treat unsigned integers with zerofill as signed.
-
- Fixes #27125.
-
- *Ryuta Kamizono*
-
-* Fix the uniqueness validation scope with a polymorphic association.
-
- *Sergey Alekseev*
-
-* Raise `ActiveRecord::RecordNotFound` from collection `*_ids` setters
- for unknown IDs with a better error message.
-
- Changes the collection `*_ids` setters to cast provided IDs the data
- type of the primary key set in the association, not the model
- primary key.
-
- *Dominic Cleal*
-
-* For PostgreSQL >= 9.4 use `pgcrypto`'s `gen_random_uuid()` instead of
- `uuid-ossp`'s UUID generation function.
-
- *Yuji Yaginuma*, *Yaw Boakye*
-
-* Introduce `Model#reload_<association>` to bring back the behavior
- of `Article.category(true)` where `category` is a singular
- association.
-
- The force reloading of the association reader was deprecated
- in #20888. Unfortunately the suggested alternative of
- `article.reload.category` does not expose the same behavior.
-
- This patch adds a reader method with the prefix `reload_` for
- singular associations. This method has the same semantics as
- passing true to the association reader used to have.
-
- *Yves Senn*
-
-* Make sure eager loading `ActiveRecord::Associations` also loads
- constants defined in `ActiveRecord::Associations::Preloader`.
-
- *Yves Senn*
-
-* Allow `ActionController::Parameters`-like objects to be passed as
- values for Postgres HStore columns.
-
- Fixes #26904.
-
- *Jon Moss*
-
-* Added `stat` method to `ActiveRecord::ConnectionAdapters::ConnectionPool`.
-
- Example:
-
- ActiveRecord::Base.connection_pool.stat # =>
- { size: 15, connections: 1, busy: 1, dead: 0, idle: 0, waiting: 0, checkout_timeout: 5 }
-
- *Pavel Evstigneev*
-
-* Avoid `unscope(:order)` when `limit_value` is presented for `count`
- and `exists?`.
-
- If `limit_value` is presented, records fetching order is very important
- for performance. We should not unscope the order in the case.
-
- *Ryuta Kamizono*
-
-* Fix an Active Record `DateTime` field `NoMethodError` caused by incomplete
- datetime.
-
- Fixes #24195.
-
- *Sen Zhang*
-
-* Allow `slice` to take an array of methods(without the need for splatting).
-
- *Cohen Carlisle*
-
-* Improved partial writes with HABTM and has many through associations
- to fire database query only if relation has been changed.
-
- Fixes #19663.
-
- *Mehmet Emin İNAÇ*
-
-* Deprecate passing arguments and block at the same time to
- `ActiveRecord::QueryMethods#select`.
-
- *Prathamesh Sonpatki*
-
-* Fixed: Optimistic locking does not work well with `null` in the database.
-
- Fixes #26024.
-
- *bogdanvlviv*
-
-* Fixed support for case insensitive comparisons of `text` columns in
- PostgreSQL.
-
- *Edho Arief*
-
-* Serialize JSON attribute value `nil` as SQL `NULL`, not JSON `null`.
-
- *Trung Duc Tran*
-
-* Return `true` from `update_attribute` when the value of the attribute
- to be updated is unchanged.
-
- Fixes #26593.
-
- *Prathamesh Sonpatki*
-
-* Always store errors details information with symbols.
-
- When the association is autosaved we were storing the details with
- string keys. This was creating inconsistency with other details that are
- added using the `Errors#add` method. It was also inconsistent with the
- `Errors#messages` storage.
-
- To fix this inconsistency we are always storing with symbols. This will
- cause a small breaking change because in those cases the details could
- be accessed as strings keys but now it can not.
-
- Fix #26499.
-
- *Rafael Mendonça França*, *Marcus Vieira*
-
-* Calling `touch` on a model using optimistic locking will now leave the model
- in a non-dirty state with no attribute changes.
-
- Fixes #26496.
-
- *Jakob Skjerning*
-
-* Using a mysql2 connection after it fails to reconnect will now have an error message
- saying the connection is closed rather than an undefined method error message.
-
- *Dylan Thacker-Smith*
-
-* PostgreSQL array columns will now respect the encoding of strings contained
- in the array.
-
- Fixes #26326.
-
- *Sean Griffin*
-
-* Inverse association instances will now be set before `after_find` or
- `after_initialize` callbacks are run.
-
- Fixes #26320.
-
- *Sean Griffin*
-
-* Remove unnecessarily association load when a `belongs_to` association has already been
- loaded then the foreign key is changed directly and the record saved.
-
- *James Coleman*
-
-* Remove standardized column types/arguments spaces in schema dump.
-
- *Tim Petricola*
-
-* Avoid loading records from database when they are already loaded using
- the `pluck` method on a collection.
-
- Fixes #25921.
-
- *Ryuta Kamizono*
-
-* Remove text default treated as an empty string in non-strict mode for
- consistency with other types.
-
- Strict mode controls how MySQL handles invalid or missing values in
- data-change statements such as INSERT or UPDATE. If strict mode is not
- in effect, MySQL inserts adjusted values for invalid or missing values
- and produces warnings.
-
- def test_mysql_not_null_defaults_non_strict
- using_strict(false) do
- with_mysql_not_null_table do |klass|
- record = klass.new
- assert_nil record.non_null_integer
- assert_nil record.non_null_string
- assert_nil record.non_null_text
- assert_nil record.non_null_blob
-
- record.save!
- record.reload
-
- assert_equal 0, record.non_null_integer
- assert_equal "", record.non_null_string
- assert_equal "", record.non_null_text
- assert_equal "", record.non_null_blob
- end
- end
- end
-
- https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict
-
- *Ryuta Kamizono*
-
-* 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*
-
-* Deprecate `sanitize_conditions`. Use `sanitize_sql` instead.
-
- *Ryuta Kamizono*
-
-* 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 new Active Record transaction error classes 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](https://github.com/rails/rails/blob/5-0-stable/activerecord/CHANGELOG.md) for previous changes.
+Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activerecord/CHANGELOG.md) for previous changes.
diff --git a/activerecord/lib/active_record/gem_version.rb b/activerecord/lib/active_record/gem_version.rb
index 174f716152..1a937dbcf7 100644
--- a/activerecord/lib/active_record/gem_version.rb
+++ b/activerecord/lib/active_record/gem_version.rb
@@ -6,9 +6,9 @@ module ActiveRecord
module VERSION
MAJOR = 5
- MINOR = 1
+ MINOR = 2
TINY = 0
- PRE = "beta1"
+ PRE = "alpha"
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
end
diff --git a/activerecord/lib/active_record/migration/compatibility.rb b/activerecord/lib/active_record/migration/compatibility.rb
index 85032ce470..188dd0acef 100644
--- a/activerecord/lib/active_record/migration/compatibility.rb
+++ b/activerecord/lib/active_record/migration/compatibility.rb
@@ -11,7 +11,10 @@ module ActiveRecord
const_get(name)
end
- V5_1 = Current
+ V5_2 = Current
+
+ class V5_1 < V5_2
+ end
class V5_0 < V5_1
module TableDefinition