This file summarizes notable changes for each release, but does not describe internal changes unless they are particularly exciting. For complete details please see the corresponding milestones and their associated issues.
This release includes more performance work and some usability improvements, as well as documentation improvements here and there. This release should be source-compatible for most users, but is not binary compatible with any prior release. Let me know if you run into source compatibilty problems. Special thanks to @mdmoss for build improvements, @fommil and @d6 for help with Sonatype, and everyone else for your continued interest and contributions!
Improvements:
- doobie is now published on Sonatype and no longer requires a Bintray resolver.
- The
free
modules now provide natural transformations of the formFooIO ~> Kleisli[M, Foo, ?]
andFoo => FooIO ~> M
, which should make life easier when using doobie with existing JDBC resources (your ownConnection
for example). - New optimized column-vector reads and accumulators for
IList
and standard library collections viaCanBuildFrom
yield performance generally indistinguishable from raw JDBC. TheQuery/Query0
operationsto
,list
, andvector
are now very fast. Result handling viaProcess
benefits to a lesser extent.
image here
Composite
instances are now available for shapeless record types.DriverManagerTransactor
now includes constructors corresponding to allgetConnection
methods onDriverManager
.free
algebras and interpreters have been re-implemented to use method dispatch rather than largematch
expressions, resulting in minor performance improvements throughout. This completes the work started in 0.2.2.
Big Fixes:
- The PostGIS dependency was pulling in an old version of the PostgreSQL JDBC driver. This has been fixed.
Upgrades:
- Updated to Scala 2.10.7
- Updated to shapeless 2.2.2
- Updated to scalaz-stream 0.7.1a
- Updated to specs2-core 3.6
- Updated to tut 0.4.0 (build-time dependency only)
- Updated to sbt 0.13.8 (build-time dependency only)
This is another minor release that adds yet more support PostgreSQL-specific features, updates dependencies, and improves performance for resultset processing. Thanks everyone for your continued interest and contributions!
Additions:
- Added
HC.updateManyWithGeneratedKeys
and associated syntax onUpdate
to allow batch updates to return updated rows. See Chapter 7 for an example. - Added algebras and free monads thereof for PostgreSQL vendor-specific driver APIs, which allows doobie to directly support
LISTEN/NOTIFY
,COPY FROM STDIN
and a number of other interesting features. See Chapter 13 for details and examples.
Improvements:
- Huge improvements to the implementation of the
sql
interpolator, courtesy of @milessabin. This removes the last remaining arity limit. - Added examples for PostgreSQL-specific error handling combinators. See Chapter 13 for more information.
- Added
Unapply
instances to make theMonad
instance forFreeC
and associated syntax conversions inferrable. For now these are on thedoobie.imports
module. - Significant performance improvements for resultset processing, with
.list
and.vector
now ~4.5x faster and.process
~2.5x faster. This work is ongoing.
Upgrades:
- Updated to Scala 2.10.5
- Updated to shapeless 2.2.0 (thanks @milessabin)
- Updated to scalaz-stream 0.7a
- Updated to PostgreSQL JDBC driver 9.4-1201-jdbc41
- Updated to Specs2 3.6 (thanks @etorrebore)
This is a minor follow-up release, primarily to add support for some PostgreSQL features and other odds and ends reported by users. Thanks to users and contributors for their help!
Additions:
- Added
Transactor
to wrap an existingDataSource
. See Chapter 12 for more information. - Added support for PostGIS and PostgreSQL
enum
types. See Chapter 13 for more information. - Added combinators for batch updates. See Chapter 7 for more information.
- Added
Composite
support forHList
; anywhere you could map a product or tuple type in 0.2.0 you can now also use a shapelessHList
. - Added
Atom
support forscalaz.Maybe
; anywhere you could map anOption
type in 0.2.0 you can now also useMaybe
. - Added
.optionT
method onQuery
andQuery0
. - Added an example that exposes a PostgreSQL
NOTIFY
channel as an scalaz-streamProcess
.
Improvements:
- The 22-parameter limit on the
sql
interpolator has been increased to 50, and should go away entirely by 0.3.0 at the latest. There are no other arity limits in doobie. - All
Query
andUpdate
constructions are now supported for typechecking with Specs2 and YOLO mode. - Many improvements in book of doobie.
- Tidied up examples a bit.
Upgrades:
- Updated to Scala 2.11.6.
- Updated to scalaz 7.1.1 and scalaz-stream 0.6a
- Updated to tut 0.3.1 (build only; not user-facing).
Bug Fixes:
- Fixed problem with typechecking
BOOLEAN
column mappings. - Fixed driver classloading problem with
HikariTransactor
.