The Wire · Showcase
ECTO FIXES SUBQUERY PLANNING IN JOINS, ELIXIR PATCHES IEX PARSING
By RepoJournal · Filed · About Elixir & Phoenix
Ecto's query planner now handles subqueries correctly in interpolated join filters, while Elixir fixes a syntax error that broke 'not in' as a continuation operator in IEx.
The Ecto team shipped a fix [1] that resolves subqueries in interpolated join where clauses by folding them into a BooleanExpr and properly planning, merging, and reindexing alongside the join expression. This closes a gap where complex join queries with nested subqueries would fail to plan correctly. On the Elixir side, a fix [2] restores 'not in' as a valid continuation operator in IEx, which was throwing a SyntaxError when split across lines. Two smaller Ecto fixes landed: one that propagates the caller's Logger level into preload tasks [3], so log filtering now works consistently across parallel preload queries, and another [4] that preserves prepare_changes callbacks when merging changesets. Finally, Elixir cleaned up doctest formatting [5] by removing trailing commas from generated examples.
One email a day. Unsubscribe in one click.
Keep up with Elixir & Phoenix in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review and merge Ecto #4765 if you rely on subqueries in join filters elixir-ecto/ecto [plan]
- → Update to latest Elixir if you use 'not in' across multiple lines in IEx elixir-lang/elixir [monitor]
- → Check Ecto preload log filtering behavior after Logger propagation fix elixir-ecto/ecto [monitor]
References
- [1] Fix subqueries in interpolated join wheres ↗ elixir-ecto/ecto
- [2] Fix 'not in' as continuation operator in IEx (#15678) elixir-lang/elixir
- [3] Propagate the caller's Logger level to preload tasks ↗ elixir-ecto/ecto
- [4] preserve `prepare_changes` in `Ecto.Changeset.merge/2` ↗ elixir-ecto/ecto
- [5] Remove trailing comma from doctest (#15679) elixir-lang/elixir