Elixir Ecto 2.2.0-rc.0 released

New update of Elixir database tool is available now 
09 August 2017   2494

What is Ecto?

Ecto is a domain specific language for writing queries and interacting with databases in Elixir. Ecto provides a standardised API and a set of abstractions for talking to all the different kinds of databases, so that Elixir developers can query whatever database they’re using by employing similar contructs. 

Ecto is compatible with:

  • PostgreSQL
  • MySQL
  • c    

What's new in 2.2.0-rc.0?

This release adds many improvements to Ecto with a handful of bug fixes.


  • Ecto now supports specifying fields sources. 
  • [Ecto.Adapters] Accept IO data from adapters to reduce memory usage when performing large queries
  • [Ecto.Adapters.SQL] Also add Ecto.Repo.to_sql/2 to Ecto.Repo based on SQL adapters
  • [Ecto.Adapters.Postgres] Use the "postgres" database for create/drop database commands
  • [Ecto.Adapters.MySQL] Use TCP connections instead of MySQL command client to create & drop database
  • [Ecto.Changeset] Support action: :ignore in changeset which is useful when casting associations and embeds and one or more children need to be rejected/ignored under certain circumstances
  • [Ecto.Changeset] Add :repo_opts field to Ecto.Changeset which are given as options to to the repository whenever an operation is performed
  • [Ecto.Changeset] Add apply_action/2
  • [Ecto.Changeset] Add prefix constraint name checking to constraint validations
  • [Ecto.Changeset] Allow assocs and embeds in change/2 and put_change/3 - this gives a more generic API for developers to work that does not require explicit knowledge of the field type
  • [Ecto.Migration] Add reversible execute/2 to migrations
  • [Ecto.Migration] Add :migration_timestamps and :migration_primary_key to control the migration defaults from the repository
  • [Ecto.Migrator] Allow migration/rollback to log SQL commands via the --log-sql flag
  • [Ecto.LogEntry] Add :caller_pid to the Ecto.LogEntry struct
  • [Ecto.Query] Allow map updates in subqueries
  • [Ecto.Query] Support fragment and field access in type/2 in select
  • [Ecto.Query] Add select_merge/3 as a composable API for selects
  • [Ecto.Repo] Implement :returning option on insert
  • [Ecto.Repo] Add ON CONSTRAINT support to :conflict_target on insert and insert_all
  • [Ecto.Repo] Raise MultiplePrimaryKeyError when primary key is not unique on DB side
  • [Ecto.Schema] Validate schemas after compilation - this helps developers catch early mistakes such as foreign key mismatches early on
  • [Ecto.Type] Allow adapters to pass Date, Time, NaiveDateTime and DateTime on load if desired
  • [Ecto.UUID] Allow casting binary UUIDs
  • [mix ecto.drop] Add --force
  • [mix ecto.load] Add --force and prompt user to confirm before continuing in production

Bug fixes

  • [Ecto.Changeset] Remove the field from changes if it does not pass validate_required
  • [Ecto.Changeset] Raise if changeset struct does not match relation
  • [Ecto.Query] Consistently raise if nil is interpolated on the right side of in
  • [Ecto.Query] Properly expand macros in select
  • [Ecto.Query] Support or_having in keyword query
  • [Ecto.Query] Properly count the parameters when using interpolation inside a select inside a subquery
  • [Ecto.Repo] Set struct prefix on insertdelete, and update when the prefix is given as an option
  • [Ecto.UUID] Validate UUID version on casting
  • [mix ecto.*] Make sure Logger is rebootted when running ecto tasks
  • [mix ecto.*] No longer mark tasks as recursive and instead collect all repositories upfront. This fixes a bug where migration and rollback commands for a given repository could be executed multiple times from an umbrella project


  • [Ecto.DateTime] Ecto.DateTime as well as Ecto.Date and Ecto.Time are deprecated in favor of :naive_datetime:date and :time respectively
  • [Ecto.Repo] Using {:system, env} to configure the repository URL is deprecated in favor of a custom init/2 callback

You can learn more at GitHub

Elixir Club 11 in Ternopil

Elixir developers' event will take place on June 23, 2018, in Ternopil, Ukraine
28 May 2018   2081

Elixir community, let’s gather in Ternopil!

We are pleased to invite you on Elixir Club 11 in Ternopil, June 23!

If you are passionate about Elixir programming and interested in technology, then come on Elixir Club 11. You will meet the same people as you are, get live communication and some new knowledge, find answers on your questions.


Stefan Wintermeyer

Topic: "WebPerformance - Why and How?"

Stefan Wintermeyer,
Stefan Wintermeyer

A dive into the topic of fast webpages. Why does a specific webpage load fast or not? Why is it important? What's the difference between a mobile user on a 3G network and one on a fiber connection? What can be done on the server? Is JavaScript the solution or the reason for this problem?

Stefan Wintermeyer

Phoenix Framework developer

Eugene Pirogov

Topic: "ElixirConf Eu 2018, what was it like?"

Eugene Pirogov
Eugene Pirogov

Elixir programming language is raving around the world. Every year tens of community events are being organized to promote and share experience related to this beautiful programming language.

Eugene Pirogov
Senior Back-end developer

In April Eugene Pirogov visited one such event – "ElixirConf Eu 2018", a conference held in Warsaw, Poland. He is going to go through the presentations he attended, topics elixir community is exploring these days and finally talk about some exciting upcoming features in Elixir and Phoenix web framework.

Viktor Deryagin

Topic: "Implementing GraphQL API in Elixir"

Viktor Deryagin
Viktor Deryagin

GraphQL is an increasingly popular way of building web APIs, and Absinthe library makes Elixir a really convenient choice for doing it. This talk is about our team's experience of implementing GraphQL API powering popular marketplace for educators Teachers Pay Teachers. I'll tell about challenges we faced in evolving the API over time, monitoring, and leveraging features of OTP to address performance & scaling issues.

Viktor Deryagin

Yurii Bodarev

Topic: "GenServer in action"

Yurii Bodarev
Yurii Bodarev

Others will be added soon.

Buy a ticket.

Elixir is a young language, so every developer can come forward and share experience, get a powerful feedback and supporting from a friendly community. We invite you to suggest your speech by filling in the form. Come to us and try yourself as a Speaker.

Also, you can feel free to discuss your problems or solutions on lightning talk. You could suggest your speech via filling in the form or writing down on the board during the conference.

Thanks to our sponsors: Wise Engineering, Aejis.

We are welcome students for your willingness to learn and we give 50% discount via the promo code "student". Please send your student ID’s scan to make your registration on the event faster.

Also, we are welcome parents of a small baby (0-3 years) on maternity leave, who want to grow their skills with growing the kid. You can get a special discount for the ticket with promo code "GrowWithYourKid". Please take kid’s birth certificate with you to confirm the status.

We conduct all our events in a friendly atmosphere and we are always glad to get new people excited with Elixir on our events.

If you have any questions or suggestions, don't hesitate to contact us via cell phone: 099 202 6308 or by email: elixir.club.org@gmail.com

Buy a ticket.