* Add missing credit * Add backticks * Fix indentation * Remove trailing spaces And some minor tweaks.
8.6 KiB
-
PostgreSQL
tsrange
now preserves subsecond precision.PostgreSQL 9.1+ introduced range types, and Rails added support for using this datatype in Active Record. However, the serialization of
PostgreSQL::OID::Range
was incomplete, because it did not properly cast the bounds that make up the range. This led to subseconds being dropped in SQL commands:Before:
connection.type_cast(tsrange.serialize(range_value)) # => "[2010-01-01 13:30:00 UTC,2011-02-02 19:30:00 UTC)"
Now:
connection.type_cast(tsrange.serialize(range_value)) # => "[2010-01-01 13:30:00.670277,2011-02-02 19:30:00.745125)"
Thomas Cannon
-
Passing a
Set
toRelation#where
now behaves the same as passing an array.Sean Griffin
-
Use given algorithm while removing index from database.
Fixes #24190.
Mehmet Emin İNAÇ
-
Update payload names for
sql.active_record
instrumentation to be more descriptive.Fixes #30586.
Jeremy Green
-
Add new error class
TransactionTimeout
for MySQL adapter which will be raised when lock wait time expires.Gabriel Courtemanche
-
Remove deprecated
#migration_keys
.Ryuta Kamizono
-
Automatically guess the inverse associations for STI.
Yuichiro Kaneko
-
Ensure
sum
honorsdistinct
onhas_many :through
associationsFixes #16791.
Aaron Wortham
-
Add
binary
fixture helper method.Atsushi Yoshida
-
When using
Relation#or
, extract the common conditions and put them before the OR condition.Maxime Handfield Lapointe
-
Relation#or
now accepts two relations who have different values forreferences
only, asreferences
can be implicitly called bywhere
.Fixes #29411.
Sean Griffin
-
ApplicationRecord
is no longer generated when generating models. If you need to generate it, it can be created withrails g application_record
.Lisa Ugray
-
Fix
COUNT(DISTINCT ...)
withORDER BY
andLIMIT
to keep the existing select list.Ryuta Kamizono
-
When a
has_one
association is destroyed bydependent: destroy
,destroyed_by_association
will now be set to the reflection, matching the behaviour ofhas_many
associations.Lisa Ugray
-
Fix
unscoped(where: [columns])
removing the wrong bind valuesWhen the
where
is called on a relation after aor
, unscoping the column of that laterwhere
removed bind values used by theor
instead. (possibly other cases too)Post.where(id: 1).or(Post.where(id: 2)).where(foo: 3).unscope(where: :foo).to_sql # Currently: # SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 2 OR "posts"."id" = 3) # With fix: # SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1 OR "posts"."id" = 2)
Maxime Handfield Lapointe
-
Values constructed using multi-parameter assignment will now use the post-type-cast value for rendering in single-field form inputs.
Sean Griffin
-
Relation#joins
is no longer affected by the target model'scurrent_scope
, with the exception ofunscoped
.Fixes #29338.
Sean Griffin
-
Change sqlite3 boolean serialization to use 1 and 0
SQLite natively recognizes 1 and 0 as true and false, but does not natively recognize 't' and 'f' as was previously serialized.
This change in serialization requires a migration of stored boolean data for SQLite databases, so it's implemented behind a configuration flag whose default false value is deprecated.
Lisa Ugray
-
Skip query caching when working with batches of records (
find_each
,find_in_batches
,in_batches
).Previously, records would be fetched in batches, but all records would be retained in memory until the end of the request or job.
Eugene Kenny
-
Prevent errors raised by
sql.active_record
notification subscribers from being converted intoActiveRecord::StatementInvalid
exceptions.Dennis Taylor
-
Fix eager loading/preloading association with scope including joins.
Fixes #28324.
Ryuta Kamizono
-
Fix transactions to apply state to child transactions
Previously, if you had a nested transaction and the outer transaction was rolledback, the record from the inner transaction would still be marked as persisted.
This change fixes that by applying the state of the parent transaction to the child transaction when the parent transaction is rolledback. This will correctly mark records from the inner transaction as not persisted.
Eileen M. Uchitelle, Aaron Patterson
-
Deprecate
set_state
method inTransactionState
Deprecated the
set_state
method in favor of setting the state via specific methods. If you need to mark the state of the transaction you can now userollback!
,commit!
ornullify!
instead ofset_state(:rolledback)
,set_state(:committed)
, orset_state(nil)
.Eileen M. Uchitelle, Aaron Patterson
-
Deprecate delegating to
arel
inRelation
.Ryuta Kamizono
-
Fix eager loading to respect
store_full_sti_class
setting.Ryuta Kamizono
-
Query cache was unavailable when entering the
ActiveRecord::Base.cache
block without being connected.Tsukasa Oishi
-
Previously, when building records using a
has_many :through
association, if the child records were deleted before the parent was saved, they would still be persisted. Now, if child records are deleted before the parent is saved on ahas_many :through
association, the child records will not be persisted.Tobias Kraze
-
Merging two relations representing nested joins no longer transforms the joins of the merged relation into LEFT OUTER JOIN. Example to clarify:
Author.joins(:posts).merge(Post.joins(:comments)) # Before the change: #=> SELECT ... FROM authors INNER JOIN posts ON ... LEFT OUTER JOIN comments ON... # After the change: #=> SELECT ... FROM authors INNER JOIN posts ON ... INNER JOIN comments ON...
TODO: Add to the Rails 5.2 upgrade guide
Maxime Handfield Lapointe
-
ActiveRecord::Persistence#touch
does not work well when optimistic locking enabled andlocking_column
, without default value, is null in the database.bogdanvlviv
-
Fix destroying existing object does not work well when optimistic locking enabled and
locking_column
is null in the database.bogdanvlviv
-
Use bulk INSERT to insert fixtures for better performance.
Kir Shatrov
-
Prevent creation of bind param if casted value is nil.
Ryuta Kamizono
-
Deprecate passing arguments and block at the same time to
count
andsum
inActiveRecord::Calculations
.Ryuta Kamizono
-
Loading model schema from database is now thread-safe.
Fixes #28589.
Vikrant Chaudhary, David Abdemoulaie
-
Add
ActiveRecord::Base#cache_version
to support recyclable cache keys via the new versioned entries inActiveSupport::Cache
. This also means thatActiveRecord::Base#cache_key
will now return a stable key that does not include a timestamp any more.NOTE: This feature is turned off by default, and
#cache_key
will still return cache keys with timestamps until you setActiveRecord::Base.cache_versioning = true
. That's the setting for all new apps on Rails 5.2+DHH
-
Respect
SchemaDumper.ignore_tables
in rake tasks for databases structure dumpRusty Geldmacher, Guillermo Iguaran
-
Add type caster to
RuntimeReflection#alias_name
Fixes #28959.
Jon Moss
-
Deprecate
supports_statement_cache?
.Ryuta Kamizono
-
Quote database name in
db:create
grant statement (when database user does not have access to create the database).Rune Philosof
-
Raise error
UnknownMigrationVersionError
on the movement of migrations when the current migration does not exist.bogdanvlviv
-
Fix
bin/rails db:forward
first migration.bogdanvlviv
-
Support Descending Indexes for MySQL.
MySQL 8.0.1 and higher supports descending indexes:
DESC
in an index definition is no longer ignored. See https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html.Ryuta Kamizono
-
Fix inconsistency with changed attributes when overriding AR attribute reader.
bogdanvlviv
-
When calling the dynamic fixture accessor method with no arguments, it now returns all fixtures of this type. Previously this method always returned an empty array.
Kevin McPhillips
Please check 5-1-stable for previous changes.