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
Postgres ranges have convenient operators for doing set math on ranges. We can extend the Ecto DSL to provide convenience macros for working with these operators
e.g.
CREATETABLEreservation (room int, during tsrange);
INSERT INTO reservation VALUES
(1108, '[2010-01-01 14:30, 2010-01-01 15:30)');
-- ContainmentSELECT int4range(10, 20) @>3;
-- OverlapsSELECT numrange(11.1, 22.2) && numrange(20.0, 30.0);
-- Extract the upper boundSELECTupper(int8range(15, 25));
-- Compute the intersectionSELECT int4range(10, 20) * int4range(15, 25);
-- Is the range empty?SELECT isempty(numrange(1, 5));
@davydog187 do you have an idea of how you'd like to handle operators which exist for ranges within postgres but are not valid operators in elixir or are otherwise in use (e.g. @>, &&, -|-)?
postgres operator
supported in elixir?
@>, <@
❌
>>, <<
❌
&<, >&
❌
-|-
❌
&&, +, *, -
✅ (i assume these are already translated by the Ecto query builder)
there are some unused operators which are maybe similar to the missing operators that could be used: |||, >>>, ~>, <->, etc.
@sloanelybutsurely I haven't given it much thought, but I don't find any of these operators particularly readable. My preference would be to use atoms with clearer names rather than try to mimic the SQL syntax 1-1
Postgres ranges have convenient operators for doing set math on ranges. We can extend the Ecto DSL to provide convenience macros for working with these operators
e.g.
For the complete list, see the Postgres docs.
The text was updated successfully, but these errors were encountered: