Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

This file was deleted.

9 changes: 0 additions & 9 deletions changelog.d/20251030_125129_shane.obrien_OnConflict.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/20260322_223524_shane.obrien_range.md

This file was deleted.

3 changes: 0 additions & 3 deletions changelog.d/20260616_150020_cgeorgii_support_ghc_9_14.md

This file was deleted.

11 changes: 0 additions & 11 deletions changelog.d/20260820_000000_notelem.md

This file was deleted.

2 changes: 1 addition & 1 deletion rel8-internal/rel8-internal.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 3.0
name: rel8-internal
version: 1.7.0.0
version: 1.8.0.0
synopsis: Internals of rel8
license: BSD-3-Clause
license-file: LICENSE
Expand Down
41 changes: 41 additions & 0 deletions rel8/Changelog.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,45 @@

<a id='changelog-1.8.0.0'></a>
# 1.8.0.0 — 2026-09-16

## Added

- Added `Rel8.TH.deriveRel8able` and `Rel8.TH.deriveRel8ables` for deriving `Rel8able` instances using `TemplateHaskell`.
This can be significantly faster than using `Generics`. In testing, we have seen 80% reductions in build time!

- Expose all `rel8` internal modules from the `rel8-internal` package.

- Added new `Conflict` and `Index` types. `Conflict` represents a [`conflict_target`](https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT) in an `ON CONFLICT`. It can be either a named constraint (`ON CONSTRAINT`) or a an `Index`.

- Added `Index`. `Index` is a description of a unique index which PostgreSQL can use for *unique index inference*. This is an alternative to specifying an explicit named constraint in a `conflict_target`.

- Add `notElem` and `notElem1` to `Rel8.Array`

- Added preliminary support for PostgreSQL ranges.

- Support GHC-9.14 and `semialign >= 1.4`.

- Added `notElem` and `notElem1` to `Rel8.Array`.

- Added `DBType Aeson.Object` instance.

- Bumped a variety of bounds.

## Changed

- The `Upsert` type was changed. Previously it had the columns (`index`, `predicate`) of what is now the `Index` type baked into its record. It now instead has a single `conflict` column (of type `Conflict`, which can be either an `Index` or a named constraint).
- The `DoNothing` constructor of `OnConflict` was changed to also take an optional `Conflict` value. Even though `ON CONFLICT DO NOTHING` does not generally require a `conflict_target`, there are cases where it can be necessary, e.g., if you have table that has both deferrable and non-deferrable constraints.

- `rel8` now requires at least version `0.10.8.0` of `opaleye`

## Fixed

- `elem` and `elem1` now use `IS NOT DISTINCT FROM` semantics (matching `(==.)`) when the element type is nullable, so `null` is found in an array containing `null`. Previously they were implemented with the array containment operator `<@`, which never matches `null`.

- Fixed some issues around the truncation of long column names.

- Improved documentation.

<a id='changelog-1.7.0.0'></a>
# 1.7.0.0 — 2025-07-31

Expand Down
6 changes: 3 additions & 3 deletions rel8/rel8.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 3.0
name: rel8
version: 1.7.0.0
version: 1.8.0.0
synopsis: Hey! Hey! Can u rel8?
license: BSD-3-Clause
license-file: LICENSE
Expand All @@ -18,7 +18,7 @@ source-repository head

library
build-depends:
rel8-internal ==1.7.0.0
rel8-internal ==1.8.0.0
, base >= 4.16 && < 4.23
, bifunctors
, bytestring
Expand Down Expand Up @@ -71,7 +71,7 @@ test-suite tests
, containers
, hasql
, hasql-transaction
, hedgehog >= 1.0 && < 1.6
, hedgehog >= 1.0 && < 1.8
, mmorph
, iproute
, rel8
Expand Down