- @parsonsmatt
- #422
- The instance of
HasField
forSqlExpr (Maybe (Entity a))
joinsMaybe
values together. This means that if youleftJoin
a table with aMaybe
column, the result will be aSqlExpr (Value (Maybe typ))
, instead ofSqlExpr (Value (Maybe (Maybe typ)))
. - To make this a less breaking change,
joinV
has been given a similar behavior. If the input type tojoinV
isMaybe (Maybe typ)
, then the result becomesMaybe typ
. If the input type isMaybe typ
, then the output is alsoMaybe typ
. ThejoinV'
function is given as an alternative with monomorphic behavior. - The
just
function is also modified to avoid nestingMaybe
. Likewise,just'
is provided to give monomorphic behavior. subSelect
,max_
,min_
, andcoalesce
were all givenNullable
output types as well. This should help to reduce the incidence of nestedMaybe
.- The operator
??.
was introduced which can do nestedMaybe
. You may want this if you have type inference issues with?.
combiningMaybe
.
- The instance of
- #420
- Add a fixity declaration to
?.
- Add a fixity declaration to
- #412
- The
random_
andrand
functions (deprecated in 2.6.0) have been removed. Please refer to the database specific ones (ieDatabase.Esqueleto.PostgreSQL
etc) - The
sub_select
function (deprecated in 3.2.0) has been removed. Please use the safer variants likesubSelect
,subSelectMaybe
, etc. - The
ToAliasT
andToAliasReferenceT
types has been removed after having been deprecated in 3.4.0.1. - The
Union
type (deprecated in 3.4) was removed. Please useunion_
instead. - The
UnionAll
type (deprecated in 3.4) was removed. Please useunionAll_
instead. - The
Except
type (deprecated in 3.4) was removed. Please useexcept_
instead. - The
Intersect
type (deprecated in 3.4) was removed. Please useintersect_
instead. - The
SubQuery
type (deprecated in 3.4) was removed. You do not need to tag subqueries to use them infrom
clauses. - The
SelectQuery
type (deprecated in 3.4) was removed. You do not need to tagSqlQuery
values withSelectQuery
.
- The
- #287
- Deprecate
distinctOn
anddistinctOnOrderBy
. Use the variants defined inPostgreSQL
module instead. The signature has changed, but the refactor is straightforward:-- old: p <- from $ table distinctOn [don x] $ do pure p -- new: p <- from $ table distinctOn [don x] pure p
- Deprecate
- #301
- Postgresql
upsert
andupsertBy
now require aNonEmpty
list of updates. If you want to provide an empty list of updates, you'll need to useupsertMaybe
andupsertMaybeBe
instead. Postgres does not return rows from the database if no updates are performed.
- Postgresql
- #413
- The ability to
coerce
SqlExpr
was removed. Instead, useveryUnsafeCoerceSqlExpr
. See the documentation onveryUnsafeCoerceSqlExpr
for safe use example. unsafeCeorceSqlExpr
is provided as an option when the underlying Haskell types are coercible. This is still unsafe, as differentPersistFieldSql
instances may be at play.
- The ability to
- #420
- The
LockingKind
constructors are deprecated, and will be removed from non-Internal modules in a future release. Smart constructors replace them, and you may need to import them from a different database-specific module.
- The
- #425
fromBaseId
is introduced as the inverse oftoBaseId
.toBaseIdMaybe
andfromBaseIdMaybe
are introduced.
- #422
- @parsonsmatt
- @matthewbauer
- #341
- Add functions for
NULLS FIRST
andNULLS LAST
in the Postgresql module
- Add functions for
- #341
- @JoelMcCracken
- @blujupiter32
- #379
- Fix a bug where
not_ (a &&. b)
would be interpeted as(not_ a) &&. b
- Fix a bug where
- #379
- @RikvanToor
- @TeofilC
- #394
- Use TH quotes to eliminate some CPP.
- #394
- @parsonsmatt, @jappeace
- #346, #411
- Add docs for more SQL operators
- #346, #411
- @csamak
- #405
- Fix a bug introduced in 3.5.12.0 where deriveEsqueletoRecord incorrectly errors
- #405
- @ac251
- #402
- Add
forNoKeyUpdate
andforKeyShare
locking kinds for postgres
- Add
- #402
- @csamak
- #405
ToMaybe
instances are now derived for Maybe records. See Issue #401.
- #405
- @arguri
- #387
- Fix build for ghc 9.8.1 / template-haskell 2.18
- #387
- @9999years, @halogenandtoast
- #378
ToMaybe
instances are now derived for records so you can now left join them in queries
- #378
- @ttuegel
- #377
- Fix Postgres syntax for
noWait
- Fix Postgres syntax for
- #377
- @parsonsmatt
- #376
-
When using Postgres 15,
LIMIT
, and thelocking
functions, you could accidentally construct SQL code like:... LIMIT 1FOR UPDATE ...
This parsed on Postgres <15, but the new Postgres parser is more strict, and fails to parse. This PR introduces newlines between each query chunk, which fixes the issue.
-
- #376
- @9999years
- #369
- Fix
myAge
type inderiveEsqueletoRecord
documentation
- Fix
- #369
- @ivanbakel
- #328
- Add
ToAlias
instances for 9- to 16-tuples - Add
ToAliasReference
instances for 9- to 16-tuples
- Add
- #328
- @parsonsmatt
- #365
- Add
isNothing_
andgroupBy_
to avoid name conflicts withData.List
andData.Maybe
.
- Add
- #365
- @duplode
- #363
- Add missing
just
to left join examples in the Haddocks
- Add missing
- #363
- @9999years
- #350
- Add
GetFirstTable
,getTable
,getTableMaybe
helpers for selecting tables from:&
chains
- Add
- #350
- @josephsumabat
- #339
- Add
forUpdateOf
,forShareOf
locking kinds for postgres
- Add
- #339
- @parsonsmatt
- #342
- Create a
TypeError
instance forFunctor SqlExpr
, adding documentation and work arounds for the need.
- Create a
- #342
- @9999years
- #327
- Fixed a Haddock typo causing documentation to render incorrectly
- #327
- @belevy
- #336
- Fix bug with multiple nested subqueries introduced in 3.5.7.1
- Set operations will now only reuse variable names within the context of the set operation. a subquery that references the set operation will correctly pick up where the subquery left off 3.5.8.0 =======
- #336
- @ivanbakel
- #331
- Add
deriveEsqueletoRecordWith
to derive Esqueleto instances for records using custom deriving settings. - Add
DeriveEsqueletoRecordSettings
to control how Esqueleto record instances are derived. - Add
sqlNameModifier
to control how Esqueleto record instance deriving generates the SQL record type name. - Add
sqlFieldModifier
to control how Esqueleto record instance deriving generates the SQL record fields.
- Add
- #331
- @belevy
- #334
- Fix alias name bug with union and subselect
- #334
-
@ivanbakel
- #329
- Add
ToAlias
andToAliasReference
instances to the type produced byderiveEsqueletoRecord
, allowing in-SQL records to be used in CTEs
- Add
- #329
-
@9999years
- #324
- Add ability to use nested records with
deriveEsqueletoRecord
- Add ability to use nested records with
- #324
- @9999years
- #323
- Add ability to derive esqueleto instances for records
- #323
- @parsonsmatt
- #317
- Add
Eq
andShow
instances to:&
- Add
- #317
- @parsonsmatt
- #318
- Remove use of
SqlReadT
andSqlWriteT
type alias so that Simplified Subsumption doesn't bite end users
- Remove use of
- #318
- @parsonsmatt
- #312
- Support
persistent-2.14.0.0
- Support
- #312
- @parsonsmatt
- #310
- Add instances of
HasField
forSqlExpr (Entity rec)
andSqlExpr (Maybe (Entity rec))
. These instances allow you to use theOverloadedRecordDot
language extension in GHC 9.2 with SQL representations of database entities.
- Add instances of
- #310
- @parsonsmatt
- #309
- Bump
time
version bound
- Bump
- #309
- @jappeace
- #303
- Added docs for delete function for new experimental API.
- #303
- @m4dc4p
- #291
- Added
ToAlias
andToAliasReference
instaces to the:&
type, mirroring the tuple instances for the same classes. See Issue #290 for discussion.
- #291
- Added
- @NikitaRazmakhnin
- #284 - Add PostgreSQL-specific support of VALUES(..) literals
- @NikitaRazmakhnin
- #278
- Fix generating of bad sql using nexted expressions with
distinctOnOrderBy
.
- #278
- Fix generating of bad sql using nexted expressions with
- @cdparks
- #273
- Avoid generating an empty list as the left operand to
NOT IN
.
- #273
- Avoid generating an empty list as the left operand to
- @ivanbakel
- #268
- Added
SqlSelect
instance for(:&)
, allowing it to be returned from queries just like(,)
tuples.
- #268
- Added
- @ibarrae
- #265
- Added
selectOne
- #265
- Added
- @belevy
- #228 - Destroy all GADTs; Removes the From GADT and SqlExpr GADT - From GADT is replaced with a From data type and FromRaw - SqlExpr is now all defined in terms of ERaw - Modified ERaw to contain a SqlExprMeta with any extra information that may be needed - Experimental top level is now strictly for documentation and all the implementation details are in Experimental.* modules
- @parsonsmatt
- #259
- Create the
Database.Esqueleto.Legacy
module. TheDatabase.Esqueleto
module now emits a warning, directing users to either importDatabase.Esqueleto.Legacy
to keep the old behavior or to importDatabase.Esqueleto.Experimental
to opt in to the new behavior. - Deleted the deprecated modules
Database.Esqueleto.Internal.{Language,Sql}
. Please useDatabase.Esqueleto.Internal.Internal
instead, or ideally post what you need from the library so we can support you safely. - Support GHC 9
- Create the
- #259
- @parsonsmatt
- #255
- Fix a bug where a composite primary key in a
groupBy
clause would break.
- Fix a bug where a composite primary key in a
- #255
- @parsonsmatt
- #245
- Support
persistent-2.13
- Support
- #245
- @parsonsmatt
- #243
- Support
persistent-2.12
- Support
- #243
- @MaxGabriel
- #240
- Improve recommend hlint to avoid doing
x = NULL
SQL queries
- Improve recommend hlint to avoid doing
- #240
- @arthurxavierx
- #238
- Fix non-exhaustive patterns in
unsafeSqlAggregateFunction
- Fix non-exhaustive patterns in
- #238
- @Vlix
- #232
- Export the
ValidOnClauseValue
type family
- Export the
- #232
- @arthurxavierx
- #221
- Deprecate
ToAliasT
andToAliasReferenceT
- Deprecate
- #221
- @parsonsmatt
- #226
- Support
persistent-2.11
- Support
- #226
- @belevy
- #225
- Simplify
ToFromT
extracting the overlapping and type error instances - Make
ToFromT
and associated type family ofToFrom
- Simplify
- #225
- @belevy, @charukiewicz
- #215
- Added support for common table expressions (
with
,withRecursive
) - Added support for lateral JOINs with updated example (Example #6)
- Deprecated
SelectQuery
, removing the neccessity to tagSqlQuery
values - Deprecated use of data constructors for SQL set operations (replaced with functions)
- Refactored module structure to fix haddock build (fixes build from
3.3.4.0
)
- Added support for common table expressions (
- #215
- @maxgabriel
- #214
- Add suggested hlint rules for proper
isNothing
usage
- Add suggested hlint rules for proper
- #214
- @parsonsmatt
- #205
-
More documentation on the
Experimental
module -
Database.Esqueleto.Experimental
now reexportsDatabase.Esqueleto
, so the new "approved" import syntax is less verbose. Before, you'd write:import Database.Esqueleto hiding (from, on) import Database.Esqueleto.Experimental
Now you can merely write:
import Database.Esqueleto.Experimental
Users will get 'redundant import' warnings if they followed the original syntax, the solution is evident from the error message provided.
-
- #205
- @belevy
- #191 - Bugfix rollup: Fix issue with extra characters in generated SQL; Fix ToAliasReference for already referenced values; Fix Alias/Reference for Maybe Entity
- @maxgabriel
- #203 Document
isNothing
- #203 Document
- @sestrella
- #198 - Allow PostgreSQL aggregate functions to take a filter clause
- @maxgabriel
- #190 Further document and test
ToBaseId
- #190 Further document and test
- @belevy
- #189 - Fix bug in function calls with aliased values introduced by SubQuery joins.
- @belevy
- #172 - Introduce new experimental module for joins, set operations (eg UNION), and safer queries from outer joins.
- @belevy
- #177 Fix natural key handling in (^.)
- @parsonsmatt
- #170 Add documentation to
groupBy
to explain tuple nesting.
- #170 Add documentation to
- @charukiewicz, @belevy, @joemalin95
- #167: Exposed functions that were added in
3.3.0
- #167: Exposed functions that were added in
- @charukiewicz, @belevy, @joemalin95
- #166: Add several common SQL string functions:
upper_
,trim_
,ltrim_
,rtrim_
,length_
,left_
,right_
- #166: Add several common SQL string functions:
- @hdgarrood
- #163: Allow
unsafeSqlFunction
to take up to 10 arguments without needing to nest tuples.
- #163: Allow
- @parsonsmatt
- #161: Fix an issue where nested joins didn't get the right on clause.
- @parsonsmatt
- #159: Add an instance of
UnsafeSqlFunction ()
for 0-argument SQL functions.
- #159: Add an instance of
- @parsonsmatt
- #153: Deprecate
sub_select
and introducesubSelect
,subSelectMaybe
, andsubSelectUnsafe
.
- #153: Deprecate
- @parsonsmatt
- #156: Remove the
restriction that
on
clauses must appear in reverse order to the joining tables.
- #156: Remove the
restriction that
- @JoseD92
- #155: Added
insertSelectWithConflict
postgres function.
- #155: Added
- @tippenein
- #149: Added
associateJoin
query helpers.
- #149: Added
-
@JoseD92
- #149: Added
upsert
support.
- #149: Added
-
@parsonsmatt
- #133: Added
renderQueryToText
and related functions.
- #133: Added
- @Vlix
- #128: Added
Database.Esqueleto.PostgreSQL.JSON
module with JSON operators andJSONB
data type.
- #128: Added
- @ibarrae
- #127: Added
between
and support for composite keys inunsafeSqlBinOp
.
- #127: Added
- @parsonsmatt
- #122: Support
persistent-2.10.0
. This is a breaking change due to the removal of deprecated exports from thepersistent
library. - #113: Remove the
esqueleto
type class. To migrate here, useSqlExpr
,SqlQuery
, andSqlBackend
instead of using the polymorphicEsqueleto sqlExpr sqlQuery sqlBackend => ...
types.
- #122: Support
- @parsonsmatt
- #117: Removed
sqlQQ
andexecuteQQ
functions from export, fixing doc build and building withpersistent
>= 2.9
- #117: Removed
- @ChrisCoffey
- #114: Fix Haddock by working around an upstream bug.
- @bitemyapp
- Reorganized dependencies, decided to break compatibility for Conduit 1.3, Persistent 2.8, and
unliftio
. - Moved tests for
random()
into database-specific test suites. - Deprecated Language
random_
, split it into database-specific modules.
- Reorganized dependencies, decided to break compatibility for Conduit 1.3, Persistent 2.8, and
- @parsonsmatt
- Added support for
PersistQueryRead
/PersistQueryWrite
, enabling type-safe differentation of read and write capabilities.
- Added support for
- @sestrella
- @mheinzel
- Fixed JOIN syntax in the documentation #60
- @illmade
- Added instructions for running database specific tests
- @FintanH
- @EdwardBetts
- Fixed a spelling error