Changelog for persistent-2.11.0.0
Changelog for persistent
2.11.0.0
-
Foreign Key improvements [#1121] https://github.com/yesodweb/persistent/pull/1121
- It is now supported to refer to a table with an auto generated Primary Kay
- It is now supported to refer to non-primary fields, using the keyword
References - It is now supported to have cascade options for simple/single-field Foreign Keys
-
Introduces a breaking change to the internal function
mkColumns, which can now be passed a record of functions to override its default behavior. #996 -
Added explicit
forallnotation to make most API functions play nice when usingTypeApplications. (e.g. instead ofselectList @_ @_ @User [] [], you can now writeselectList @User [] []) #1006 -
- The QuasiQuoter now supports
OnDeleteandOnUpdatecascade options.
- The QuasiQuoter now supports
-
- Field and constraint labels generated by TH can now be customized.
- mpsPrefixFields is deprecated in favor of using these customisation functions.
-
- Instance for
Naturalis removed. SeeOverflowNaturalfor a replacement and rationale on why.
- Instance for
-
- A new class member
keyFromRecordMallows you to construct aKey recordfrom arecordif it was defined withPrimary.
- A new class member
-
- The method
entityIdFromJSONthat is used to parse entities now correctly works for entities that define a customPrimarykey.
- The method
-
- Modify
upsertByto use backend-specific implementation (if any).
- Modify
-
- You can set a column's
sql=idfor a nonIdcolumn.
- You can set a column's
-
Fix a bug where unsafe migration error messages were being shown using
Showprior to printing, resulting in less helpful output. #1080 -
RawSqlnow has tuple instances up to GHC's max tuple size (62)
-
Locis now imported frommonad-loggeras opposed totemplate-haskell. Removestemplate-haskellas an explicit dependency.
-
- Remove unnecessary deriving of
Typeable.
- Remove unnecessary deriving of
-
- Remove
Monadconstraint onentityDef
- Remove
-
-
Remove deriving of
Showfor uniques. Users that need aShowinstance can put a standalone deriving instance:deriving stock instance Show (Unique User)
-
-
- Add an
existsfunction to thePersistQueryReadtype class.
- Add an
-
- Allow parsing UTCTimes from sqlite with the format "%F %T%Q" as well, instead of only "%FT%T%Q".
-
- A new function
checkUniqueUpdateableallows you to check uniqueness constraints on an entity update without having to update it.
- A new function
-
- Deprecate
hasCompositeKeyin favor ofhasCustomPrimaryKeyandhasCompositePrimaryKeyfunctions.
- Deprecate
-
- Add support for configuring the number of stripes and idle timeout for connection pools
- For functions that do not specify an idle timeout, the default has been bumped to 600 seconds.
- This change is based off the experience of two production codebases. See #775
- Add a new type
ConnectionPoolConfigto configure the number of connections in a pool, their idle timeout, and stripe size. - Add
defaultConnectionPoolConfigto create aConnectionPoolConfig - Add
createSqlPoolWithConfigandwithSqlPoolWithConfig, which take this new data type
- For functions that do not specify an idle timeout, the default has been bumped to 600 seconds.
- Add support for configuring the number of stripes and idle timeout for connection pools
-
-
Adds a new constructor,
PersistLiteral ByteStringtoPersistValueto support unescaped SQL literals.- Obviously, this is highly unsafe, and you should never use it with user input.
-
Adds a new field,
cGenerated :: Maybe TexttoColumnfor backend-specific support of generated columns.- Express generated fields in the Persistent DSL
GeneratedColumnExample fieldOne Text Maybe fieldTwo Text Maybe fieldThree Text Maybe generated=COALESCE(field_one,field_two)- Support for MySQL >= 5.7. (No version checking is performed! Using this feature with older versions of MySQL will cause runtime SQL exceptions!)
- Support for Postgresql >= 12. (No version checking is performed! Using this feature with older versions of Postgresql will cause runtime SQL exceptions!)
- Support for SQLite >= 3.31 (same caveat applies; support added in #1152 )
-
-
- Allow
OverloadedLabelsto be used with theEntityFieldtype.
- Allow
2.10.5.2
- #1041
- Explicit foreign keys can now reference tables with custom sql name
- Add qualified names to the stock classes list.
2.10.5.1
- #1024
- Add the ability to do documentation comments in entity definition syntax. Unfortunately, TemplateHaskell cannot add documentation comments, so this can't be used to add Haddocks to entities.
- Add Haddock explainers for some of the supported entity syntax in
Database.Persist.Quasi
2.10.5
- Add the
EntityWithPrefixtype to allow users to specify a custom prefix for raw SQL queries. #1018 - Added Acquire based API to
Database.Persist.Sqlfor working with connections/pools in monads which aren't MonadUnliftIO. #984
2.10.4
- Log exceptions when closing a connection fails. See point 1 in yesod #1635. #978
2.10.3
- Added support for GHC 8.8 about MonadFail changes #976
2.10.2
- Added
runMigrationQuietandrunMigrationUnsafeQuiettoDatabase.Persist.Sql.Migrationas safer alternatives torunMigrationSilent. #971 This functions as workaround/fix for: #966, #948, #640, and #474 - Added RawSql instances for 9, 10, 11 and 12-column results. #961
2.10.1
- Added
constraint=attribute to allow users to specify foreign reference constraint names.
2.10.0
- Added two type classes
OnlyOneUniqueKeyandAtLeastOneUniqueKey. These classes are used as constraints on functions that expect a certain amount of unique keys. They are defined automatically as part of thepersistent-template's generation. #885 - Add the
entityCommentsfield to theEntityDefdatatype, andfieldCommentsfields to theFieldDefdatatype. The QuasiQuoter does not currently know how to add documentation comments to these types, but it can be expanded later. #865 - Expose the
SqlReadTandSqlWriteTconstructors. #887 - Remove deprecated
Connectiontype synonym. Please useSqlBackendinstead. #894 - Remove deprecated
SqlPersisttype synonym. Please useSqlPersistTinstead. #894 - Alter the type of
connUpsertSqlto take a list of unique definitions. This paves the way for more efficient upsert implementations. #895
2.9.2
- Add documentation for the
Migrationtype and some helpers. #860
2.9.1
- Fix #847: SQL error with
putManyon Sqlite when Entity has no unique index.
2.9.0
- Added support for SQL isolation levels to via SqlBackend. [#812]
- Move
Database.Persist.Sql.Raw.QQto a separatepersistent-qqpackage #827 - Fix 832:
repsertManynow matchesmapM_ (uncurry repsert)and is atomic for supported sql back-ends.
2.8.2
- Added support for
sql=to the unique constraints quasi-quoter so that users can specify the database names of the constraints.
2.8.1
- DRY-ed up and exposed several util functions in
Database.Persist.Sql.Util.- Upstream-ed
updatePersistValue,mkUpdateText, andcommaSeparatedfromDatabase.Persist.MySQL. - De-duplicated
updatePersistValuefrom variousDatabase.Persist.Sql.Orphan.*modules.
- Upstream-ed
- Batching enhancements to reduce db round-trips.
- Added
getManyandrepsertManyfor batchedgetandrepsert. - Added
putManywith a default/slow implementation. SqlBackend's that support native UPSERT should override this for batching enhancements. - Updated
insertEntityManyto replace slow looped usage with batched execution.
- Added
- See #770
2.8.0
- Switch from
MonadBaseControltoMonadUnliftIO - Reapplies #723, which was reverted in version 2.7.3.
2.7.3.1
- Improve error messages when failing to parse database results into Persistent records. #741
- A handful of
fromPersistFieldimplementations callederrorinstead of returning aLeft Text. All of the implementations were changed to returnLeft. #741 - Improve error message when a SQL insert fails with a custom primary key #757
2.7.3
- Reverts #723, which generalized functions using the
BackendCompatibleclass. These changes were an accidental breaking change. - Recommend the
PersistDbSpecificdocs if someone gets an error about converting fromPersistDbSpecific
2.7.2 [DEPRECATED ON HACKAGE]
- Many of the functions have been generalized using the
BackendCompatibleclass. #723- This change was an accidental breaking change and was reverted in 2.7.3.
- These change will be released in a future version of Persistent with a major version bump.
- Add raw sql quasi quoters #717
2.7.1
2.7.0
- Fix upsert behavior #613
- Atomic upsert query fixed for arithmatic operations #662
- Haddock and test coverage improved for upsert
2.6.1
- Fix edge case for
\<-. [Nothing] - Introduce
connMaxParams - Add 'getJustEntity' and 'insertRecord' convenience function
- Minor Haddock improvment
2.6
- Add
connUpsertSqltype for providing backend-specific upsert sql support.
2.5
- read/write typeclass split
- add insertOrGet convenience function to PersistUnique
2.2.4.1
- Documentation updates #515
2.2.4
- Workaround for side-exiting transformers in
runSqlConn#516
2.2.3
- PersistField instance for Natural
- better oracle support in odbc
2.2.2
- Add liftSqlPersistMPool function
- support http-api-data for url serialization
2.2.1
- Migration failure message with context
- Fix insertKey for composite keys
2.2
- Add a
RawSqlinstance forKey. This allows selecting primary keys using functions likerawSql. #407 - SqlBackend support for an optimized
insertMany
2.1.6
Important! If persistent-template is not upgraded to 2.1.3.3
you might need to make sure Int64 is in scope for your model declarations.
- add showMigration function
- explicitly use Int64 for foreign key references
2.1.5
Add dbIdColumnsEsc to Sql.Utils.
Used in persistent-postgresql 2.1.5.2
2.1.4
- Fix getBy with a primary key. #342
2.1.3
- Break self-referencing cycles in the entity declarations
2.1.2
- Error with
Doubles without a decimal part #378 runSqlPooldoes not perform timeout checks.
2.1.1.6
- One extra feature for #939: use
logDebugNinstead
2.1.1.5
- Better SQL logging Yesod issue #939
2.1.1.3
Parse UTCTime in 8601 format #339
2.1.1.1
Support for monad-control 1.0