packages feed

opaleye-0.9.3.2: CHANGELOG.md

## 0.9.3.2

* No externally visible changes

## 0.9.3.1

* No externally visible changes

## 0.9.3.0

* Add `with` and `withRecursive` (thanks to Erik Hesselink and Shane
  O'Brien).

* Add `Default ToFields` and `DefaultFromField` instances for
  postgresql-simple's `Aeson` (thanks to Bas Van Dijk).

## 0.9.2.0

* Added `nullableToMaybeFields` and `maybeFieldsToNullable`

## 0.9.1.0

* Added `distinctOnExplicit` and `distinctOnByExplicit`

* Added `label'` as a future replacement for `label`

* Exported `SqlFractional` from `Opaleye.SqlTypes`

* Fixed [a bug in
  `forUpdate`](https://github.com/tomjaguarpaw/haskell-opaleye/issues/540)

* The internal implementation of `QueryArr` has changed.

## 0.9.0.0

The switch from `Column` to `Field` is complete.  This is a small yet
pervasive change.  To update your code please change all usages of
`Column` as follows:

* `Column` of a non-nullable type: to `Field`
* `Column` of a nullable type: to `FieldNullable`
* `Column` of a nullability-polymorphic type: to `Field_ n`

For example

* `Column SqlText` -> `Field SqlText`
* `Column (Nullable SqlInt4)` -> `FieldNullable SqlInt4`
* `Column a` -> `Field_ n a`

This is the only change that has been made in this version, in order
to ease user transition.

* See also
  <https://github.com/tomjaguarpaw/haskell-opaleye/issues/326>

## 0.8.1.0

* Cosmetic and re-export changes only.

## 0.8.0.1

* Support GHC 9.2

## 0.8.0.0

* Removed the following deprecated functions, types and modules

  * `Opaleye.Query`, `Query`, `QueryArr`, `queryRunnerColumnDefault`
  * `Opaleye.RunQuery`, `runQuery`, `runQueryFold`,
    `queryRunnerColumn`
  * `Opaleye.Constant`, `constant`
  * The `Table` and `TableWithSchema` constructors
  * `View`, `Writer`, `required`, `optional`, `readOnly`,
    `tableColumn`, `queryTable`
  * `Nulled`, `leftJoinInferrable`, `rightJoinInferrable`, `fullJoinInferrable`
  * `unpackspecColumn`
  * `TableField`
  * `runInsertManyReturningOnConflictDoNothing`,
    `runInsertManyReturning`, `runUpdateEasy`, `runUpdateReturning`,
    `runDelete`
  * `charLength`, `exists`, `notExists`, `inQuery`
  * `PGIsJson`, `PGOrd`, `PG<typename>`
  * `showSqlForPostgres`, `showSqlForPostgresUnopt`

* Replaced the following old internal names

  * `QueryRunnerColumnDefault` -> `DefaultFromField`
  * `QueryRunnerColumn` -> `FromField` (type alias and constructor)
  * `QueryRunner` -> `FromFields` (type alias and constructor)

* `Opaleye.Join.optional` exported from top-level

* Bug fix: `distinctOn` and `distinctOnBy` now return a single row if
  zero columns are chosen to be distinct.

* Add `runInsert`/`Update`/`Delete` without underscore

## 0.7.6.2

Fix ISO 8601 date fomatting.  Thanks to Michal @kozak.

## 0.7.6.1

No user-visible changes

## 0.7.6.0

* Added `matchMaybe`

* Added `SqlVarcharN` and supporting functions

## 0.7.5.0

* Added `enumMapperWithSchema`.  Thanks to Steve Mao.

* Added `SqlInterval`.  Thanks to Bas van Dijk.

## 0.7.4.0

* Added `distinctOnCorrect` and `distinctOnByCorrect` which will
  replace `distinctOn` and `distinctOnBy` in a future version.

## 0.7.3.0

* Added DefaultFromField SqlJson(b) instances for Strict/Lazy
  Text/ByteString. Thanks to Nathan Jaremko.

## 0.7.2.0

* Added `jsonAgg`, `jsonBuildObject` and `jsonBuildObjectField`.  Thanks
  to Nathan Jaremko.

* Added `now` function. Thanks to Nathan Jaremko.

* Added `Opaleye.Exists.exists`. Thanks to @duairc.

* Added `Opaleye.Experimental.Enum`

* Added `Opaleye.Operators.array_position` and
  `Opaleye.Operators.sqlElem`.  Thanks to Ashesh Ambasta.

## 0.7.1.0

* Added `Opaleye.Experimental.Enum` for an easy way to deal with
  Postgres `ENUM` types.

* Added `Opaleye.Manipulation.rReturningI` which has better type
  inference.

* Added `Opaleye.Operators.where_` for easier restriction in monadic
  style.

* Added `Opaleye.Operators.sqlLength` and
  `Opaleye.Operators.dateOfTimestamp`.

## 0.7.0.0

* Many renamings have taken place to help make Opaleye easier to
  understand.  The old versions have been deprecated.

* All previously deprecated functions have been removed.

Old | New
-----|-------
Query | Select
QueryArr | SelectArr
PG*Type*  | Sql*Type*
PG*Class* | Sql*Class*
Constant | ToFields
QueryRunner | FromFields
QueryRunnerColumn | FromField
QueryRunnerColumnDefault | DefaultFromField
TableProperties | TableFields
optional | optionalTableField
required | requiredTableField
readOnly | readOnlyTableField

## 0.6.7006.0

* Added `Opaleye.RunSelect.runSelectI` and
  `Opaleye.ToFields.toFieldsI` which have better inferability.

* Preliminary `FOR UPDATE` support in `Opaleye.Internal.Locking`.

* Added `fromFieldArray` for making `FromField`s for arrays.

## 0.6.7005.0

* Thanks to Shane (@duairc) and Ollie Charles (@ocharles) for writing
  most of the `lateral`- and `MaybeFields`-related code in this
  release.

* Add a `Monad` instance for `Select` (and `SelectArr i`).

* Add `Opaleye.Lateral`, to support LATERAL subqueries.

* Add `Opaleye.Join.optionalRestrict` and `Opaleye.Join.optional`, as
  more convenient and composable ways of doing left/right joins.

* Add `Opaleye.MaybeFields`

* Add `optionalTableField`, `readOnlyTableField`,
  `requiredTableField`, to replace `optional`, `readOnly` and
  `required` in a later version.

* Add `valuesSafe`, a version of `values`. `values` of an empty list
  generates incorrect queries when mixed with @OUTER@/@LEFT@/@RIGHT
  JOIN@s.  `valuesSafe` will replace it in version 0.7

* Add `Opaleye.Adaptors` as the forward-compatible place to import
  `Unpackspec` and `unpackspecField` from, as well as other adaptors.

* Unicode characters are escaped properly in `sqlString`/`toFields`

* Add `inSelect`, to replace `inQuery` in a future version.

* Add `unsafeCoerceField`, to replace `unsafeCoerceColumn` in a future
  version.

* Generalise label to type `label :: String -> S.SelectArr a b ->
S.SelectArr a b`

* [Fix invalid queries
  bug](https://github.com/tomjaguarpaw/haskell-opaleye/pull/468) in
  `union`, `unionAll`, `except` and `exceptAll` where one side was
  empty.

## 0.6.7004.2

* No user-visible changes

## 0.6.7004.1

* Fixed exponential slowdown in `removeEmpty`.

* Fixed `read` compatibility with time-1.9 in test suite.

## 0.6.7004.0

* Many changes to the documentation that use the new names.  See entry
  for version 0.6.7000.0.

* Added `fromPGSFromField` to replace `fieldQueryRunnerColumn`.

* Added `fromPGSFieldParser` to replace `fieldParserQueryRunnerColumn`.

* Added `defaultFromField` to replace `queryRunnerColumnDefault`.

* Added `tableField` to replace `tableColumn`.

* Added `unsafeFromField` to replace `queryRunnerColumn`.

* Added `toFieldsExplicit` to replace `constantExplicit`.

* Added `TableRecordField` to replace `TableField` in
  `Opaleye.TypeFamilies`.  The latter may be used to replace
  `TableColumn` in the future.

* Added array functions `arrayAppend`, `arrayRemove`, `arrayRemoveNulls`.

## 0.6.7003.1

* Bumped some depedencies so there is an install plan on GHC 8.6

## 0.6.7003.0

* Add `tableField` as a future replacement for `tableColumn`

* Export `Opaleye.Field` and `Opaleye.RunSelect` from `Opaleye`

* Use new nomenclature in tutorials

## 0.6.7002.0

This is a breaking release that doesn't follow the PVP but because
it's essentially a pre-release for version 0.7 I'm just going to
blacklist the broken versions on Hackage and forget about it.

* Swapped `N` and `NN` because they were the wrong way round.

## 0.6.7001.0

* Fix bug with infinity in range bounds

* Fix incompatibility with GHC 8.4

* Add range accessors, `upperBound` and `lowerBound`

* Add `distinctOn` and `distinctOnBy`

## 0.6.7000.0

This is a pre-release of version 0.7.0.0.  GHC >= 8.0 is required.  It
contains the following new important features

* A new API for manipulation, including `ON CONFLICT DO NOTHING`
  support for `UPDATE`

* Initial support for product types written in "Higher kinded data"
  style (but deriving of related functionality using TH or Generics is
  not yet provided).

* Type inference for outer joins

* Many renamings.  In particular, `Column` will become `Field` in
  0.7.0.0.  You should be able to almost completely port your code to
  the 0.7.0.0 names whilst remaining compatible with 0.6.7000.0.

### Details

* Added `Opaleye.RunSelect`

* Added `Opaleye.Field`

* `queryTable` is renamed `selectTable`

* `Query`/`QueryArr` are renamed `Select`/`SelectArr`

* `QueryRunner` is renamed `FromFields`

* `QueryRunnerColumn` is renamed `FromField`

* `Constant` is renamed `ToFields`

* `constant` is renamed `toFields`

* Added `Opaleye.SqlTypes` and `sql`/`Sql...` names instead of
  `pg`/`PG...` names

* Added `runInsert_`, `runUpdate_`, `runDelete_` and supporting
  functionality

* Add `PGNumeric` type

* Added `leftJoinA`

* Added `liesWithin`

## 0.6.1.0

* Added `ZonedTime` to `PGTimestamptz` mappings

* `ArrowChoice` instance for `QueryArr`

## 0.6.0.0

* Added `runUpdateEasy`

* Deprecated

  * `Show` instance of `Column a`
  * `Manipulation.arrange...`
  * `showPGType`
  * `literalColumn`
  * `unsafePgFormatTime`
  * `prepareQuery`
  * `formatAndShowSQL`

* Removed

  * `unsafeCoerce`

* Added `TableColumn` and `tableColumn` which selects `optional` or
  `required` based on write type.

* Added `TableColumns` as synonym for `TableProperties`.
  `TableProperties` will be deprecated in version 0.7.

* Added `table` as synonym for `Table`.  `Table` will be deprecated in
  version 0.7.

* Added `tableWithSchema` as synonym for `TableWithSchema`.  `Table`
  will be deprecated in version 0.7.

* Replaced `ColumnMaker` with `Unpackspec`, which is identical to it.

* Added `Profunctor` instance for `Table`

* Added `restrictExists` and `restrictNotExists` as synonyms for
  `exists` and `notExists`.  The latter will be deprecated in version
  0.7.

## 0.5.4.0

* Added cursor interface (`Cursor` and friends)

## 0.5.3.1

* `distinctAggregator`, `joinNullable`, `exists`, `notExists`,
  `index`, `timestamptzAtTimeZone`

## 0.5.3.0

* Added support for range types

## 0.5.2.2

* Corrected fixity for .&&

## 0.5.2.1

* Improved documentation

## 0.5.2.0

* Added `Opaleye.FunctionalJoin`
* Fixed handling of `BinExpr OpIn _ (ListExpr _)` in `defaultSqlExpr`.
* `in_` now actually uses the SQL `IN` operator.
* Added support for `ILIKE`

## 0.5.1.0

* Added
    * support for JSON operators
    * Many improvements to the Haddocks
    * RIGHT and FULL OUTER joins

## 0.5.0.0

* Added
    * `(.===)`, `aggregateOrdered`, `countStar`, `countRows`,
      `quot_`, `rem_`, 'charLength`
    * intersection and except query binary operators
    * `Constant` instances for `Maybe` and lists
    * `runInsertManyReturning`
    * `runQueryFold`

## 0.4.2.0

* Added `.===` and `./==` for comparison of product types
* Added `keepWhen` as an alternative to `restrict`
* Added `constant` conversion to and from Aeson
* Added `pgValueJSON` and `pgValueJSONB`

## 0.4.1.0

* Added `Opaleye.Constant` for lifting constant values
* Support microseconds in `pgLocalTime`, `pgTimeOfDay` and `pgUTCTime`
* Added `unsafeCompositeField` to help with defining composite types
* `Order` is an instance of `Semigroup`

Thanks to Adam Bergmark and Matt Wraith for helping with these
changes.

## 0.4.0.0

* Added `runUpdateReturning`
* Ordering operators and `max` and `min` aggregators are now restricted to a typeclass
* Added `stringAgg` and `arrayAgg` aggregations.
* Added `PGOrd` typeclass for typesafe ordering operations.
* Support sorting NULLs first or last with `ascNullsFirst` and `descNullsFirst`
* Added JSON types
* Added `runInsertMany`

Thanks to Travis Staton, Jakub Ryška and Christopher Lewis for
helping with these changes.

## 0.3.1.2

* Use time >= 1.4 and time-locale-compat

## 0.3.1.1

* Bump time to >= 1.5

## 0.3.1

* SQL code generator escapes column names, so table column names can
  be the same as SQL keywords.
* Add `like` operator
* Add the types `PGCitext`, `PGArray`, `PGBytea`

## 0.3

* Replace `Default QueryRunner` with a new class
  `DefaultQueryRunnerColumn`, migrate with `s/Default
  QueryRunner/DefaultQueryRunnerColumn` and
  `s/def/queryRunnerColumnDefault/`
* Remove `ShowConstant`, use the monomorphic functions defined in the
  new module `Opaleye.PGTypes` instead. You will need to replace
  `Column Bool` with `Column PGBool` etc. in query signatures
* Re-export more modules from `Opaleye`
* Add `boolAnd`, `boolOr,` `max`, and `min` aggregators
* Add `lower` and `upper`
* Add operator fixities
* Add `maybeToNullable`
* Add column instances for `Bool`, `UUID`, `Text`, and `UTCTime`
* Expose fieldQueryRunnerColumn from Opaleye.RunQuery
* Add `unsafeCast`
* Re-export `Unpackspec` from `Opaleye.Manipulation`