You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Changeset] changeset.model has been renamed to changeset.data
[Changeset] changeset.optional has been removed
[Changeset] changeset.errors now always returns tuple {String.t, Keyword.t} in its values
[DateTime] The "Z" (UTC) at the end of an ISO 8601 time has been removed as UTC should not be assumed
[LogEntry] Overhaul log entry and store times in :native units
[Repo] Ecto.StaleModelError has been renamed to Ecto.StaleEntryError
[Repo] Poolboy now expects :pool_overflow option instead of :max_overflow (keep in mind though using such option is discourage altogether as it establishes short-lived connections to the database, likely being worse to performance in both short- and long-term)
[Repo] Repo.insert/2 will now send only non-nil fields from the struct to the storage (in previous versions, all fields from the struct were sent to the database)
[Repo] Ecto.Pools.Poolboy and Ecto.Pools.SojournBroker have been removed in favor of DBConnection.Poolboy and DBConnection.Sojourn
[Repo] :timeout in Repo.transaction now affects the whole transaction block and not only the particular transaction queries
[Repo] Overriding Repo.log/1 is no longer supported. Instead provide custom loggers configuration via :loggers. The default is: [Ecto.LogEntry]
[Schema] Array fields no longer default to an empty list []. Previous behaviour can be achieved by passing default: [] to the field definition
[Schema] __schema__(:types) now returns map
[SQL] Ecto.Adapters.SQL.begin_test_transaction, Ecto.Adapters.SQL.restart_test_transaction and Ecto.Adapters.SQL.rollback_test_transaction have been removed in favor of the new ownership-based Ecto.Adapters.SQL.Sandbox
Soft deprecations (no warnings emitted)
[Changeset] Deprecate Ecto.Changeset.cast/4 in favor of Ecto.Changeset.cast/3 + Ecto.Changeset.validate_required/3
Deprecations
[Changeset] Deprecate :empty in Ecto.Changeset.cast
[Repo] Repo.after_connect/1 is deprecated, please pass the :after_connect repository option instead
Enhancements
[Adapter] Ensure adapters work on native types, guaranteeing adapters compose better with custom types
[Adapter] Support prepared queries in adapters
[Adapter] Add support for loading and dumping structures
[Changeset] Include the type that failed to cast in changeset errors. Example: [profile: {"is invalid", [type: :map]}]
[DateTime] Ensure the given date and datetimes are valid
[Migration] Add support for partial indexes by specifying the :where option when on Ecto.Migration.index/2
[Migration] Allow the migration table name to be configured in the repository via :migration_source
[Migration] Support :on_update for Ecto.Migrate.references
[Migration] Use pool of 1 connection for mix ecto.migrate/rollback
[Mix] Automatically reenable migration and repository management tasks after execution
[Preloader] Support mixing preloads and assocs
[Postgres] Add migration and changeset support for PostgreSQL exclusion constraints. Example: create constraint(:sizes, :cannot_overlap, exclude: ~s|gist (int4range("min", "max", '[]') WITH &&)|) and exclusion_constraint(changeset, :sizes, name: :cannot_overlap, message: "must not overlap")
[Postgres] Support lateral joins (via fragments)
[Postgres] Add migration and changeset support for PostgreSQL check constraints. Example: create constraint(:products, "positive_price", check: "price > 0") and check_constraint(changeset, :price, name: :positive_price, message: "must be greater than zero")
[Query] Allow the :on field to be specified with association joins
[Query] Support expressions in map keys in select in queries. Example: from p in Post, select: %{p.title => p.visitors}
[Query] Support map update syntax. Example: from p in Post, select: %{p | title: "fixed"}
[Query] Allow struct fields to be selected with struct/2 and map fields with map/2, including support for dynamic fields
[Query] Add first/2 and last/2
[Repo] Add Repo.aggregate/4 for easy aggregations
[Repo] Allow custom select field in preload queries
[Repo] Support the :force option in preloads
[Repo] Perform preloads in parallel by default
[Repo] Add Repo.in_transaction? to know if the current process is in a transaction
[Repo] Support :returning option in insert_all, update_all and delete_all
[Schema] Allow @schema_prefix to be configured per schema. It is used for new structs as well as queries where the given schema is used as from
[Schema] Support MFA on autogenerate
[Schema] Support composite primary keys
[Type] Add type {:map, inner_type}
Bug fixes
[Changeset] The :required option on cast_assoc and cast_embed will now tag has_many and embeds_many relationships as missing if they contain an empty list
[DateTime] Fix Date/DateTime serialization for years above 9999
[Postgres] Switch pg storage management away from psql and use direct database connections, solving many issues like locale and database connection
[Repo] Ensure nested preload works even if intermediate associations were already loaded
[Repo] Do not attempt to execute insert/update/delete statement for associations if a previous operation failed due to a constraint error
[Schema] Ensure inserted_at autogeneration runs before updated_at autogeneration