Repository navigation
[v0.3.0] — 2026-10-28
Breaking changes
-
Requires
ex_tempo ~> 2.1. Every type takes and returns at:Tempo.t/0expression;%Tempo.Interval{}and%Tempo.IntervalSet{}are no more. -
An end written to a date is read through it, as Tempo 2 reads it:
~o"2026-06-15/2026-06-20"is stored as[2026-06-15, 2026-06-21). -
A loaded range written to a calendar unit by
:resolutionends through the last unit it holds: a range of 2026 at:yearis2026/2026.
Added
- Each member of a set stored in a
tempo_multirangecolumn keeps its own metadata.
Changed
-
Tempo.Ecto.Intervaltakes any expression of one span, andTempo.Ecto.IntervalSetany expression with a last span: a set, a bounded recurrence or a value that names several. -
Tempo.Ecto.TempoisTempo.Ecto.Intervalunder its old name. -
The composite types keep any expression with ISO 8601 text, stored with the range it covers from its first span to its last.
-
The composite
metaformat is version 3, holding the expression's ISO 8601 text. Version 1 and 2 rows are read as Tempo 1.x meant them; no migration is needed.
Fixed
-
Tempo.SQL.PostgresTypesis in the package, as the storage contract guide has said since 0.1.0; it was compiled only in development and test. -
The composite types'
loadreturns:errorfor metadata that does not decode, as Ecto expects, where it returned{:error, reason}.